问答题
1. 数组point中存放着m个人的成绩,请编写函数fun(),它的功能是:返回高于平均分的人数,并将高于平均分的分数放在high所指的数组中。
例如,当point数组中的数据为50,60,65,70,75,80,88,90,95时,函数返回的人数应该是5,high中的数据应为75,80,88,90,95。
请勿改动main()函数与其他函数中的任何内容,仅在函数fun()的花括号中填入所编写的若干语句。
注意:部分源程序如下。
试题程序:
#include<conio.h>
#include<stdio.h>
#include<string.h>
int fun(int point[],int n,int high[])
{
}
main()
{
int j,m,high[9];
int point[9]={50,60,65,70,75,80,88,90,95};
m=fun(point,9,high);
printf("\npersonNum:%d",m);
printf("\nHigh the average point are:");
for(j=0;j<m;j++)
{
printf("%d",high[j]);
}
printf("\n");
}
【正确答案】int fun(int point[],int n,int high[])
{
int j,k=0,average=0;
for(j=0;j<n;j++)
average+=point[j];//统计总分数
average/=n;//求平均分
for(j=0;j<n;j++)
if(point[j]>average)//逐个判断每个分数是否大于平均分
{ high[k]=point[j]; //将高于平均分的人放入数组high
k++; //统计大于平均分的人数
}
return k;
}
【答案解析】 (1)该程序功能是返回高于平均分的人数。它的解题思路可以分解为以下几步:求总分→求平均分→元素逐个与平均分比较→统计高于平均分的人数。
(2)从已给部分源程序的main()函数入手,核心函数fun(point,9,high)中的参数由题目可知,point存放着m个人的成绩,high存放着高于平均分的分数。另外,根据point的定义,可知9为point数组中元素的个数,它被传给函数fun()中的参数n。