计算机等级考试二级上机改错题详细分析3

文章作者 100test 发表时间 2007:03:10 17:18:06
来源 100Test.Com百考试题网


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 ofxnbeforedefintion,提示xn有确定的值之前使用了它。此处,变量xn用于存放累加和,xn出现在赋值号的右边,在第一次累加时它应当有初值,向上寻找,没有发现给它赋过初值,因此应当在定义语句中给它赋初值0。float xn.改成float xn=0.0.
  (3)修改后再次进行编译,编译提示if语句中的关系表达式有语法错,出错信息是:Expressionsyntax;查看关系表达式,可发现关系运算符"=>"写错,应该是">=",应进行修正。
  (4)修改后再次进行编译,编译指出在c .处有错,出错信息是:Undefined symbolc,指出符号c没有经过定义;此处变量c用以统计数组中高于、等于平均值的实数的个数,查看函数开头处的定义语句,未曾对c进行过定义,因此应该在int语句中添加。
  (5)修改后再次进行编译,编译给出出错信息:Undefined symbolc,指出变量c没有定义。所以说明语句应写成int i,c=0.。因为函数用c进行累加,它应当先赋初值0,
  (6)进行了以上的修改后,编译已无错误,运行程序得到正确的结果。



相关文章


山东:职称计算机考试7月中旬开始8月中旬结束
1.1 TurboC语言概述
计算机等级考试二级上机改错题详细分析3
计算机等级考试二级上机改错题详细分析4
北京:计算机等级考试明起报名时间为6月28日到7月6日
C语言之C语言的底层操作
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛