问题 填空题

下列给定程序中,函数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)错误: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是—个数,不能将—个数赋值给一个指针,而要用符号‘*’。

填空题
单项选择题