下列给定程序中,函数fun()的功能是:从n个学生的成绩中统计出高于平均分的学生人数,人数由函数值返回,平均分存放在形参aver所指的存储单元中。例如输入8名学生的成绩: 85 65.5 69 95.5 87 55 62.5 75

admin2009-02-15  50

问题 下列给定程序中,函数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<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=O.O; (2) 错误:if(s[i]<ave) 正确:if(s[i]>ave) (3) 错误:aver=ave; 正确: *aver=ave;

解析 错误1:ave和t分别用来存放成绩的平均值和总分,应为实型数。错误2:根据题意,找出高于平均分的数,所以此处的关系运算符应为“>”错误3:aver是指针,而ave是—个数,不能将—个数赋值给一个指针,而要用符号‘*’。
转载请注明原文地址:https://kaotiyun.com/show/tTID777K
0

最新回复(0)