1.有5个学生,每个学生的数据包括学号、姓名、3门课的成绩。从键盘输入5个学生的数据

1.有5个学生,每个学生的数据包括学号、姓名、3门课的成绩。从键盘输入5个学生的数据,要求输出3门课总平均成绩,以及平均分最高的学生的数据(包括学号、姓名、3门课成绩、平均分)。要求用input函数输入数据,用avg函数求总平均成绩,用max函数找出平均分最高的学生数据,数据输出由主函数实现。(下面是我写的程序,请各路大神帮我改正,改之后的程序要得到题目所要的结果,谢谢!)

第1个回答  2014-06-08
#include <stdio.h>struct Student { int num; char name[20]; float score[3]; float aver; };//这里要分号的 把这个结构体放到main函数之前int main(){ void input(Student stu[]);//这3行放到结构体Student后面 且可以不加关键词struct Student max(Student stu[]); void print(Student stu); Student stu[5],*p=stu;//这里可以不要strcut input(p); print(max(p)); return 0;}void input(Student stu[])//可以不加关键词struct{ int i,k; printf("请输入学生姓名和学号,三门课成绩\n"); for(i=0;i<5;i++) { scanf("%s",stu[i].name);//用scanf更好 不然每次输入完姓名后就要按回车键 scanf("%d",&stu[i].num); for(k=0;k<3;k++) { scanf("%f",&stu[i].score[k]);//要加取地址符号 } stu[i].aver=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3.0; }}Student max(Student stu[]){ int i,m; for(i=0;i<5;i++) { if(stu[i].aver>stu[m].aver) { m=i; } } printf("\n成绩最高的学生是:\n");printf("平均成绩:%6.2f\n",stu[m].aver);//平均成绩在输出函数中是输不出的因为输出函数中没有m的值 return stu[m];}void print( Student stu){ printf("学号:%d\n姓名:%s\n三门课成绩:%5.1f%5.1f%5.1f\n",stu.num,stu.name,stu.score[0],stu.score[1],stu.score[2]);}
你可以自己动手编出来那你一定也可以根据自己的要求再改,当然还有要求也可以追问

以上回答你满意么?
相似回答