题目:一个班的学生(不超过50人),每个人的数据包括学号,姓名,五门课(英语、高数、马哲、计算机、电子技术)的成绩,要求从键盘输入此项数据,按学号从小到大的顺序打印出每门课程的成绩表以及总分最高分的学生的数据(包括学号、姓名、各门课的成绩、平均分数)
分析:刚开始作者在想如何能够利用循环输出每个成绩的成绩表,但是比较困难,那我们不妨想得简单点,先输入储存学生的数据,然后再总体输出每一项课程的成绩表,这样虽然繁琐,但比较简单,这些都是基于一个控制台函数的控制下完成的,在我们写C语言时,有时候用总控函数会获得奇效。
注意:每次选择程序后都要重新选择执行的程序
废话不多说,直接贴代码
#include<stdio.h>
struct stu //结构体储存学生的信息
{
int xuehao; //学号
char name[50];//姓名
double en; //英语
double shuxue;//高数
double mazhe; //马哲
double jisuanji;//计算机
double dianzi;//电子技术
double sum;
}s[50];
int n = 0; //记学生的数字
void input(); //输入信息
void PrintScore(); //输出各科学科学生信息
void kongzhitai(); //控制台程序
int max(); //寻找最高分学生信息
int main()
{
int i;
kongzhitai();
i =max();
printf("最高分学生信息:\n");
printf("学号\t\t姓名\t\t英语\t\t高数\t\t马哲\t\t计算机\t\t电子技术\t总分\n");
printf("%d\t%s\t\t\t%0.1lf\t\t\t%0.1lf\t\t\t%0.1lf\t\t\t%0.1lf\t\t\t%0.1lf\t\t\t%0.1lf\n",s[i].xuehao,s[i].name,s[i].en,s[i].shuxue,s[i].mazhe,s[i].jisuanji,s[i].dianzi,s[i].sum);
return 0;
}
void kongzhitai()
{
printf("***************底层码农Gn***********\n");
printf("*****欢迎使用学生信息管理控制台系统*******\n");
printf("*输入1模式为输入数据模式******************\n");
printf("*输入2模式为打印学生成绩******************\n");
printf("输入3模式为退出程序***********************\n");
printf("请选择你要执行的模式:\n");
while(1)
{
int x;
scanf("%d",&x);
if(x==1)
{
input();
}
else if(x==2)
{
PrintScore();
}
else if(x==3)
{
return;
}
else
{
printf("输入错误,无法进行!\n");
}
printf("请选择你要执行的模式:");
}
}
void input()
{
printf("请输入学号:");//一个一个对应数据输入
scanf("%d",&s[n].xuehao);
printf("请输入姓名:");
n++;//对应相应的学生人数数
scanf("%s",s[n].name);
printf("请输入英语成绩:");
scanf("%lf",&s[n].en);
printf("请输入高数成绩:");
scanf("%lf&