散分求助,关于函数调用
原题:有五个学生,每个学生的数据包括学号,姓名,3门课程的成绩,从键盘输入5个学生数据,要求打印出3门课的总平均分,已经最高分的学生的数据,要求用input函数输入,用average函数求平均分,用max函数找出最高分的学生的数据;总平均分和最高分学生数据都在主函数中输出。
下面是我编的代码,无错误,可以求出总平均分,但是求最高分学生的数据有误
程序代码:
#include<stdio.h> void input(int*a); void average(int*a); void max(int*a); typedef struct data { long unsigned id; char name[20]; double gre1; double gre2; double gre3; double sum; }dt; void input(dt *a) { int i; for(i=0;i<5;i++) { scanf("%lu%s%lf%lf%lf",&a[i].id,&a[i].name,&a[i].gre1,&a[i].gre2,&a[i].gre3); } } void average(dt *a) { int i; double sum=0,average=0; for(i=0;i<5;i++) { sum=a[i].gre1+a[i].gre2+a[i].gre3; } average=sum/5; printf("%.2lf\n",average); } void max(dt *a) { int k; double max; max=a[0].sum; for(k=0;k<5;k++) { if(max<a[k].sum) max=k; } printf("%lu%s%.2lf%.2lf%.2lf\n",a[k].id,a[k].name,a[k].gre1,a[k].gre2,a[k].gre3); } int main() { dt a[5]; input(a); average(a); max(a); return 0; }