给定程序MODI1.C中函数fun的功能足:从n(形参)个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在形参aver所指的存储单元中。 例如,若输入8名学生的成绩:80.5 60 7290.5 98 5 1.5 88

admin2021-02-25  36

问题 给定程序MODI1.C中函数fun的功能足:从n(形参)个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在形参aver所指的存储单元中。
    例如,若输入8名学生的成绩:80.5 60 7290.5  98  5 1.5  88  64
    则低于平均分的学生人数为:4(平均分为:75.5625)。
    请改正程序中的错误,使它能统计出正确的结果。
    注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
#defiFie N 20
int fun  (float*s,  int n,  float
*aver)
{  float ave,t=0.0 ;
  int count=0,k,i ;
  for  (k=0;  k/**********found**********/
    t=s[k];
    ave=t/n ;
    for  (i=0  ;  i    if(s/*************found*************/
    *aver=Ave;
    return count  ;
}
msin()
{  float s[30],aver;
  int m,i ;
  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)t+=s[k]; (2)*aver=ave ;

解析 (1)根据题目要求求出平均分,首先要求总分,要把所有学生成绩相加再求平均分,因此第一个标识下面的“t=s[k];”应改为“t+=s[k];”。
    (2)根据题目可知,比较的结果中高于平均分的分数ave放入指针aver所指的地址单元中,而变量Ave没有定义,因此第二标识下应将“*aver=Ave;”改为“*aver=ave;”。
转载请注明原文地址:https://kaotiyun.com/show/jItp777K
0

最新回复(0)