填空题 下列给定程序中,函数fun()的功能是:从n个学生的成绩中统计出高于平均分的学生人数,人数由函数值返回,平均分存放在形参aver所指的存储单元中。例如输入8名学生的成绩: 85 65.5 69 95.5 87 55 62.5 75 则高于平均分的学生人数为4(平均分为74.312500)。 请改正程序中的错误,使它能得到正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include <stdio.h> #include <conio.h> #define N 20 int fun(float *s,int n,float *aver) { /*************found*************/ int ave,t=0; int count=0,k,i; for(k=0;k<n;k++) t+=s[k]; ave=t/n; for(i=0;i<n;i++) /*************found***************/ if(s[i]<ave) count++; /*************found*************/ aver=ave; return count; } main() { float s[30],aver; int m,i; clrscr(); 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、
【正确答案】 1、(1)错误:int ave,t=0; 正确:float ave,t=0.0;    
【答案解析】(2) 错误:if(s[i]<ave) 正确:if(s[i]>ave) (3) 错误:aver=ave; 正确: *aver=ave; [解析] 错误1:ave和t分别用来存放成绩的平均值和总分,应为实型数。错误2:根据题意,找出高于平均分的数,所以此处的关系运算符应为“>”错误3:aver是指针,而ave是—个数,不能将—个数赋值给一个指针,而要用符号‘*’。