程序1某班有最多不超过30人(具体人数由键盘输入)参加某门课程的考试,用一维数组和指针作函数参数,编程实现如下菜单驱动的学生成绩管理系统:
(1)录入每个学生的学号和考试成绩;
(2)按学号由小到大排出成绩表;
(3)计算并输出最高分及相应学生的学号。
要求程序运行后先显示如下菜单,并提示用户输入选项:
1.Append record
2.Sort in ascending order by number
3.Caculate Max. score of course and number
0.Exit
Please enter your choice:
然后,根据用户输入的选项执行相应的操作。
手打不容易,满意给个采纳吧
#include <stdio.h>
//typedef
struct student
{
int id;
int score;
} t[30];
int post=0,n,max;
void r()
{
int k;
printf("输入学生个数:");
scanf("%d",&n);
printf("输入学号和分数:\n");
for(k=0; k<n; k++)
{
scanf("%d%d",&t[k].id,&t[k].score);
}
z();
return;
}
void sort()
{
int j,k;
struct student tem;
for(k=0; k<n-1; k++)
{
for(j=0; j<n-k-1; j++)
{
if(t[j].id>t[j+1].id)
{
tem=t[j];
t[j]=t[j+1];
t[j+1]=tem;
}
}
}
for(k=0; k<n; k++)
{
printf("学号:%d 成绩:%d\n",t[k].id,t[k].score);
}
z();
return;
}
void m()
{
int j,k;
max=t[0].score;
for(k=1; k<n; k++)
{
if(t[k].score>max)
{
max=t[k].score;
post=k;
}
}
printf("最高分数:%d 学号为:%d",max,t[k].id);
z();
return;
}
int z()
{
printf("1.Append record\n");
printf("2.Sort in ascending order by number\n");
printf("3.Caculate Max. score of course and number\n");
printf("0.Exit\n");
printf("Please enter your choice:\n");
int c=0;
scanf("%d",&c);
switch (c)
{
case 1:
r();
break;
case 2:
sort();
break;
case 3:
m();
break;
case 0:
break;
default:
printf("error!");
break;
}
return 0;
}
int main()
{
z();
return 0;
}
定义学生结构,然后定义学生数组。循环输入学生成绩