3 、给定程序MODI1.C中,函数fun的功能是:给定n个实数,输出平均值,并统计在平均值以上(含平均值)的实数的个数。 例如,n的值为8时,输入28.3、41.5、19.0、89.5、55.8、74.2、22.4、68.9,所得平均值为49.949997;在平均值以上(含平均值)的实数的个数为4。 请改正函数fun中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! 试题源程序如下: #include "stdio.h" int fun(float x[],int n) /**********found**********/ int i. /**********found**********/ float xn=0.0. for(i=0.i<n.i ) /**********found**********/ xn=xn x[j]/n. printf("ave=%f\n",xn). for(i=0.i<n.i ) /**********found**********/ if(x[i]=>xn)c . return c. } main() { float x[20]={28.3,41.5,19.0,89.5,55.8,74.2,22.4,68.9}. printf("The number over average value:%d\n",fun(x,8)). }分析:(1)当对以上程序进行编译时,给出的第一个出错信息是:Declaration syntax error,指出在说明语句int i.中有语法错,仔细观察,可以发现在说明语句前却少了函数体开始的左花括号,应当添加左花括号。 (2)修改后进行编译,在第一个for循环体处给出一个警告出错信息:Possible use of xn beforedefintion,提示xn有确定的值之前使用了它。此处,变量xn用于存放累加和,xn出现在赋值号的右边,在第一次累加时它应当有初值,向上寻找,没有发现给它赋过初值,因此应当在定义语句中给它赋初值0。float xn.改成float xn=0.0. (3)修改后再次进行编译,编译提示if语句中的关系表达式有语法错,出错信息是:Expressionsyntax;查看关系表达式,可发现关系运算符"=>"写错,应该是">=",应进行修正。 (4)修改后再次进行编译,编译指出在c .处有错,出错信息是:Undefined symbol c ,指出符号 c 没有经过定义;此处变量c用以统计数组中高于、等于平均值的实数的个数,查看函数开头处的定义语句,未曾对c进行过定义,因此应该在int语句中添加。 (5)修改后再次进行编译,编译给出出错信息:Undefined symbol c ,指出变量c没有定义。所以说明语句应写成int i,c=0.。因为函数用c进行累加,它应当先赋初值0, (6)进行了以上的修改后,编译已无错误,运行程序得到正确的结果。