散分求助,关于函数调用
原题:有五个学生,每个学生的数据包括学号,姓名,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;
}










{
我再重新编过一次看看,稍微有点纠结了