问答题

下列给定程序中,函数proc()的功能是:从m个学生的成绩中统计出低于平均分的学生人数,人数由函数值返回,平均分存放在形参aver所指的存储单元中。例如,输入8名学生的成绩:
60 70 80 90 65 75 85 95
则低于平均分的学生人数为4(平均分为77.5)。实际输入时学生数以“Enter”键作为结束,成绩与成绩之间也与Enter键作为分隔。
请修改程序中的错误,使它能得到正确结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
#define M 20
int proc(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;
}
void main()
{
float stu[30], aver;
int m, i;
system("CLS");
printf("\nPlease enter m:");
scanf("%d", &m);
printf("\nPlease enter %d mark: \n", m);
for(i=0; i<m; i++)
scanf("%f", stu+i);
printf("\nThe number of students: %d\n",
proc(stu, m, &aver));
printf("Ave=%f\n", aver);
}

【参考答案】

(1)错误:int ave, t=0;
正确:float ave, t=0.0;
(2)错误:if(......

(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)