学生记录由学号和姓名组成。N名学生的数据由主函数放入结构体数组s中。函数fun的功能是:把高于平均分的学生数据放在b数组中,要求高于平均分的人数由形参传回,平均分由函数值返回。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得更改程序的结构!
#include"stdio.h"
#define N 5
Struct /此处有错误,修改①/
{char num[10];
float g;
}ST; /定义结构体类型/
float fun(ST a,ST b,int n) /此处有错误,修改②/
{int i;
float y=0;
for(i=0;i<N;i++)
y+=a[i].g; /*计算总分*/
y=y/N; /*计算平均分*/
n=0; /*此处有错误,修改③*/
for(i=0;i<N;i++)
if(a[i].g>y) /如果某学生成绩高于平均分,把数据送入b数组/
{b[n].num=a[i].num; /此处有错误,修改④/
b[n++].g=a[i].g; /此处有错误,修改⑤/
}
return y; /返回平均分/
}
main()
{struct ST h[N],s[N]
={"001",85,"002",76,"003",69,"004",89,"005",91};
int i,n;
float avg;
for(i=0;i<N;i++)
avg=fun(s,h,&n); /n为地址传送/
printf("The %d student data which is higher then %4.3f:\n",n,avg);
for(i=0;i<n;i++)
printf("%s%4.3f\n",b[i].num,b[i].g);
}