首页 新闻 会员 周边 捐助

c语言问题交流

0
[待解决问题]

项目作业:学生成绩管理系统
实验目的:熟悉一维数组作函数参数,排序、查找、统计分析等常用算法,模块化程序设计方法。
实验题目:某班有最多不超过30人(具体人数由键盘输入)参加某门课程的考试,用一维数组作函数参数编程实现如下学生成绩管理:
(1)录入每个学生的学号和考试成绩;
(2)计算课程的总分和平均分;
(3)按成绩由高到低排出名次表;
(4)按学号由小到大排出成绩表;
(5)按学号查询学生排名及其考试成绩;
(6)按优秀(90~ 100)、良好(8089)、中等(7079)、及格(60~69)、不及格5个类别,统计每个类别的人数以及所占的百分比;
(7)输出每个学生的学号、考试成绩,课程总分和平均分。
[思考题]如果要求程序运行后先显示如下菜单,并提示用户输入选项:

  1. Input record
  2. Caculate total and average score of course
  3. Sort in descending order by score
  4. Sort in ascending order by number
  5. Search by number
  6. Statistic analysis
  7. List record
  8. Exit
    Please enter your choice:
    然后根据用户输入的选项执行相应的操作,那么程序应该如何修改呢?#include <stdio.h>

include <conio.h>

include <stdlib.h>

define N 20

int main()
{
int choose=0;
int a[N+1];
do
{
printf(" \n");
printf("学生成绩管理程序");
printf(" \n");
printf("1.录入每个学生的学号和考试成绩:\n");
printf("2.计算课程的总分和平均分:\n");
printf("3.按成绩由高到底排出名次表:\n");
printf("4.按学号由小到大排出成绩表:\n");
printf("5.按学号查询查询学生排名及其考试成绩:\n");
printf("6.统计每个类别的人数以及所占比例:\n");
printf("7.输入每个学生的学号、考试成绩、课程总分和平均分:\n");
printf(" 0.退出程序
\n");
printf(" **\n");
printf(" 请输入选项编号:");
scanf("%d",&choose);
switch(choose)
{
case 1:
{
int i=0;
printf("\n 输入学生成绩:");
for(i=0;i<N;i++)
scanf("%d",&a[i]);
}
break;
case 2:
{
int i=0;
printf("学生成绩如下:\n");
printf(" ");
for(i=0;i<N;i++)
if(a[i]!=-1)
printf("%4d",a[i]);
printf("\n");
}
break;
case 3:
{
int i=0,x=0;
printf("输入要查找的成绩:\n");
scanf("%d",&x);
printf("\n 学生成绩如下:");
printf(" ");
for(i-0;i<N;i++)
if(xa[i]!=-1)
printf("%4d",a[i]);
printf(" ");
for(i=0;i<N;i++)
if(x
a[i])
break;
if(i<N)
printf("要查找的成绩在数组的下标:%d\n",i);
else
printf("查找的成绩:%d不存在!\n",x);
}
break;
case 4:
{
int max=a[0],i;
printf("学生成绩如下:\n");
printf(" ");
for(i=0;i<N;i++)
if(a[i]!=-1)
printf("\n");
for(i=1;i<N;i++)
{
if(max<a[i])
max=a[i];
}
printf("\n 最高分的成绩是:%d\n",max);
}
break;
case 5:
{
int i=0,k=0,s;
printf("\n 成绩的原始顺序:");
printf("\n 学生成绩如下:\n");
printf(" ");
for(i=0;i<N;i++)
if(a [i]!=-1) /
-1 表示成绩已删除,为删除成绩做准备/
printf("%4d",a[i]);
printf("\n");
printf("请输入要插入成绩位置序号与成绩:");
scanf("%d%d",&k,&s);
for(i=N;i>=k+1;i--)
a[i]=a[i-1];
a[k]=s;
printf(" 插入成绩后的顺序:\n");
printf(" ");
for(i=0;i<N+1;i++)
printf("%4d",a[i]);
printf("\n");
}
break;
case 6:
{
int i,s;
printf("\n 删除前的成绩:");
printf("\n 学生成绩如下:\n");
printf(" ");
for(i=0;i<N;i++)
if(a[i]!=-1) /
-1表示成绩已删除,为删除成绩做准备/
printf("%4d",a[i]);
printf("\n");
printf(" 请输入要删除的成绩:");
scanf("%d",&s);
for(i=0;i<N;i++)
{
if(s==a[i])
{
a[i]=-1;/
加删除标记*/
break;
}
}

   printf("\n 删除后的成绩:");
   printf("\n 学生成绩如下:\n");
   printf(" ");
		      for(i=0;i<N;i++)
			  if(a[i]!=-1)/*-1表示成绩已经删除,为删除成绩做准备*/
			      printf("%4d",a[i]);
				  printf("\n");
		 }
    case 7:
    {
      int i=0,j=0,k=0,t=0;
	  printf("\n 排序前的成绩:");
	  printf("\n 学生成绩如下:\n");
	  printf(" ");
	  for(i=0;1<N;i++)
	     if(a[i]!=-1)/*-1表示成绩已删除,为删除成绩做准备*/ 
	         printf("%4d",a[i]);
	  for(i=0;i<N-1;i++)
	  {
           k=i;
		   for(j=k+1;j<N;j++)
		     if(a[k]<a[j])    k=j;
			 if(k>i)
			 {
			      t=a[i];
		          a[i]=a[k];
				  a[k]=t;
			}
	}
	    printf("\n 排序后的成绩:");
		printf("\n 学生成绩如下:\n");
		printf(" ");
		for(i=0;i<N;i++)
	     	if(a[i]!=-1) /*-1表示成绩已删除,为删除成绩做准备*/
		    printf("%4d",a[i]);
		printf("\n");
	}
		break;
		
    case 0: exit(0);
    default : printf(" 为非法选项!\n");
  }
}
   while(1);
   return 0;

}

linxi##的主页 linxi## | 菜鸟二级 | 园豆:202
提问于:2022-01-05 17:00

代码太乱,建议格式化一下,本编辑器支持代码格式化

会长 2年前
< >
分享
所有回答(3)
0

Hi,要问程序如何修改,先把目前实现的程序发出来看看

wang_yb | 园豆:4893 (老鸟四级) | 2022-01-06 01:40

include <stdio.h>

include <conio.h>

include <stdlib.h>

define N 20

int main()
{
int choose=0;
int a[N+1];
do
{
printf(" \n");
printf("学生成绩管理程序");
printf(" \n");
printf("1.录入每个学生的学号和考试成绩:\n");
printf("2.计算课程的总分和平均分:\n");
printf("3.按成绩由高到底排出名次表:\n");
printf("4.按学号由小到大排出成绩表:\n");
printf("5.按学号查询查询学生排名及其考试成绩:\n");
printf("6.统计每个类别的人数以及所占比例:\n");
printf("7.输入每个学生的学号、考试成绩、课程总分和平均分:\n");
printf(" 0.退出程序
\n");
printf(" **\n");
printf(" 请输入选项编号:");
scanf("%d",&choose);
switch(choose)
{
case 1:
{
int i=0;
printf("\n 输入学生成绩:");
for(i=0;i<N;i++)
scanf("%d",&a[i]);
}
break;
case 2:
{
int i=0;
printf("学生成绩如下:\n");
printf(" ");
for(i=0;i<N;i++)
if(a[i]!=-1)
printf("%4d",a[i]);
printf("\n");
}
break;
case 3:
{
int i=0,x=0;
printf("输入要查找的成绩:\n");
scanf("%d",&x);
printf("\n 学生成绩如下:");
printf(" ");
for(i-0;i<N;i++)
if(xa[i]!=-1)
printf("%4d",a[i]);
printf(" ");
for(i=0;i<N;i++)
if(x
a[i])
break;
if(i<N)
printf("要查找的成绩在数组的下标:%d\n",i);
else
printf("查找的成绩:%d不存在!\n",x);
}
break;
case 4:
{
int max=a[0],i;
printf("学生成绩如下:\n");
printf(" ");
for(i=0;i<N;i++)
if(a[i]!=-1)
printf("\n");
for(i=1;i<N;i++)
{
if(max<a[i])
max=a[i];
}
printf("\n 最高分的成绩是:%d\n",max);
}
break;
case 5:
{
int i=0,k=0,s;
printf("\n 成绩的原始顺序:");
printf("\n 学生成绩如下:\n");
printf(" ");
for(i=0;i<N;i++)
if(a [i]!=-1) /
-1 表示成绩已删除,为删除成绩做准备/
printf("%4d",a[i]);
printf("\n");
printf("请输入要插入成绩位置序号与成绩:");
scanf("%d%d",&k,&s);
for(i=N;i>=k+1;i--)
a[i]=a[i-1];
a[k]=s;
printf(" 插入成绩后的顺序:\n");
printf(" ");
for(i=0;i<N+1;i++)
printf("%4d",a[i]);
printf("\n");
}
break;
case 6:
{
int i,s;
printf("\n 删除前的成绩:");
printf("\n 学生成绩如下:\n");
printf(" ");
for(i=0;i<N;i++)
if(a[i]!=-1) /
-1表示成绩已删除,为删除成绩做准备/
printf("%4d",a[i]);
printf("\n");
printf(" 请输入要删除的成绩:");
scanf("%d",&s);
for(i=0;i<N;i++)
{
if(s==a[i])
{
a[i]=-1;/
加删除标记*/
break;
}
}

   printf("\n 删除后的成绩:");
   printf("\n 学生成绩如下:\n");
   printf(" ");
		      for(i=0;i<N;i++)
			  if(a[i]!=-1)/*-1表示成绩已经删除,为删除成绩做准备*/
			      printf("%4d",a[i]);
				  printf("\n");
		 }
    case 7:
    {
      int i=0,j=0,k=0,t=0;
	  printf("\n 排序前的成绩:");
	  printf("\n 学生成绩如下:\n");
	  printf(" ");
	  for(i=0;1<N;i++)
	     if(a[i]!=-1)/*-1表示成绩已删除,为删除成绩做准备*/ 
	         printf("%4d",a[i]);
	  for(i=0;i<N-1;i++)
	  {
           k=i;
		   for(j=k+1;j<N;j++)
		     if(a[k]<a[j])    k=j;
			 if(k>i)
			 {
			      t=a[i];
		          a[i]=a[k];
				  a[k]=t;
			}
	}
	    printf("\n 排序后的成绩:");
		printf("\n 学生成绩如下:\n");
		printf(" ");
		for(i=0;i<N;i++)
	     	if(a[i]!=-1) /*-1表示成绩已删除,为删除成绩做准备*/
		    printf("%4d",a[i]);
		printf("\n");
	}
		break;
		
    case 0: exit(0);
    default : printf(" 为非法选项!\n");
  }
}
   while(1);
   return 0;

}

支持(0) 反对(0) linxi## | 园豆:202 (菜鸟二级) | 2022-01-06 10:39
0

你怕不是想要我们帮你写吧?

echo_lovely | 园豆:1584 (小虾三级) | 2022-01-06 10:23

已经写出来了哦

支持(0) 反对(0) linxi## | 园豆:202 (菜鸟二级) | 2022-01-06 10:29
0

我觉得可以,封装些方法吧,除菜单外,其他最好不要有打印语句,把要打印的内容作为方法的输出。

HelloLLLLL | 园豆:437 (菜鸟二级) | 2022-01-07 23:53
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册