填空题 给定程序中函数fun的功能是:从n(形参)个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在形参aver所指的存储单元中。
例如,若输入8名学生的成绩:80.5 60 7290.5 98 51.5 88 64,则低于平均分的学生人数为:4(平均分为:75.5625)。
请改正程序中的错误,使它能统计出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
给定源程序:
#include <stdio.h>
#define N 20
int fun(float *s,int n,float*aver)
{float ave,t=0.0;
int count=0,k,i;
for(k=0; k<n; k++)
/**************found**************/
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];
(2)*aver=ave; [解析] 根据题目要求,可利用循环语句累计n个学生的总分,求得平均成绩后,再利用循环语句和条件选择语句进行后面的操作。若小于平均值,则将该值存放于aver存储单元中。t=s[k]是循环叠加错误,*aver=&ave为语法指向的错误。