问答题 给定程序MODI1.C中函数fun的功能是:从n(形参)个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在形参aver所指的存储单元中。 例如,若输入8名学生的成绩:80.5 60 72 90.5 98 51.5 88 64 则低于平均分的学生人数为:4(平均分为:75.5625)。 请改正程序中的错误,使它能统计出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!1 #include<stdio.h>2 #define N 203 int fun(float *s,int n,float* aver)4 { float ave,t=0.0;5 int count=0,k,i;6 for(k=0;k<n ; k++)7 /**********found**********/8 t=s[k];9 ave= t/n;10 for(i=0;i<n;i++)11 if (s[i]<ave) count++ ;12 /**********found**********/13 *aver=Ave ;14 return count ;15 }16 main()17 { float s[30],aver;18 int m,i;19 printf (''\nPlease enter m:'');scanf(''%d'',&m);20 printf(''\nPlease enter %d mark:\n'', m);21 for(i=0;i<m;i++)scanf(''%f'',s+i);22 printf(''\nThe number of students:%d\n'',fun(s,m,&aver));23 printf(''Ave=%f\n'',aver);24 }
【正确答案】正确答案:(1)t+:s[k]; (2)*aver=ave;
【答案解析】解析:程序功能是统计出低于平均分的学生人数。 (1)根据题目要求求出平均分,首先要求总分,要把所有学生成绩相加再求平均分,因此第一个标识下面的“t=s[k];”应改为“t+=s[k];”。 (2)根据题目可知,比较的结果中低于平均分的分数ave放入指针aver所指的地址单元中,而变量Ave没有定义,因此第二标识下应将“*aver=Ave;”改为“*aver=ave;”。