问答题
下列给定程序中,函数fun的功能是:从n个学生的成绩中统计出低于平均分的学生人数,此人数作为函数值返回,平均分存放在形参aver所指的存储单元中。 例如,输入8名学生的成绩:80.5、60、72、90.5、98、51.5、88、64 则低于平均分的学生人数为4(平均分为75.5625)。 请改正程序中的错误,使它能得出正确的结果。 注意:部分源程序在文件MODI1.C中,不要改动main函数,不得增行或删行,也不得更改程序的结构! 试题程序:#include < stdlib.h >#include < stdio.h >#include < conio.h >#define N 2 0 int fun(float *s,int n,float *ave]7){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; } void main() {float:s[30],aver; int m,i; system("CLS"); print:f("/nPlease enter m:"); scanf("%d",&m); print;f("/nPlease enter%d mark:/n",m); for(i=0;i < m;i++) scanf("%f",s+i); print:f("/nThe number of students:%d/n",fun(s,m,&aver)); print:f("Ave=%f/n",aver); }
【正确答案】正确答案:(1)t+=s[k]; (2)*aver=ave;
【答案解析】解析:根据题目要求,可利用循环语句累计n个学生的总分,求得平均成绩后,再利用循环语句和条件选择语句进行后面的操作。若小于平均值,则将该值存放于aver存储单元中。t=s[k]是循环叠加错误,* aver=&ave为语法指向的错误。