就业数据资源平台
当前位置:首页 > C语言程序设计
2011年计算机二级C语言十套上机题11

2011年计算机二级C语言十套上机题11


2. 改错题


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

就业数据资源平台