改错题 下列给定程序中,函数fun的功能是:从n个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在行参aver所指的存储单元中。例如,若输入8名学生的成绩:
80.5 60 72 90.5 98 51.5 88 64
则低于平均分的学生人数为4(平均分为:75.5625).
请改正程序中的错误,使程序能统计出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:#include <conio.h>
#include <stdio.h>
#define N 20
int fun(float *s, int n, float *aver)
{
float ave, t = 0.0;
int count = 0, k, i;
/********found********/
for (k=0; k<n; k++)
t = s[k];
ave = t/n;
for (i=0; i<n; i++)
if (s[i] < ave)
count++;
/********found********/
*aver = &ave;
return count;
}
main()
{
float s[30], aver;
int m, i;
printf("\nPlease enter m: ");
scanf("%d", &m);
printf("\nPlease enter %d mark :\n ", m);
for (i=0; i<m; i++)
scanf("%f", s+i);
printf("\nThe number of students : %d\n", fun(s, m, &aver));
printf("Ave=%f\n", aver);
}
第1处:t=s[k];应改为t+=s[k];
第2处:*aver=&ave;应改为*aver=ave;