m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人数作为函数值返回,将低于平均分的分数放在below所指的数组中。 例如,当score数组中的数据为:10、20、30、40、50、60、70、80、90时,函数返回的

admin2013-09-15  22

问题 m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人数作为函数值返回,将低于平均分的分数放在below所指的数组中。
    例如,当score数组中的数据为:10、20、30、40、50、60、70、80、90时,函数返回的人数应该是4,below中的数据应为:10、20、30、40。
    注意:部分源程序在文件PROG1.C文件中。
    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#inclUde <stdio.h>
#include <string.h>
int fun(int score[],int m,int below[])
{

}
main()
{  int i,n,below[9];void NONO();
  int score[9]={10,20,30,40,50,60,70,80,90);
  n=fun(score,9,below);
  printf("\nBelow the average score are:");
  for  (i  =0  ;  i  <  n  ;  i++)printf("%d",  below);
  NONO();
}
void NONO()
{/* 本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/
    int  i,  j,  n,  below[10],  score[10]  ;
    FILE  *rf,  *wf  ;
    rf=fopen("in.dat","r");
    wf=fopen("out.dat","w");
    for(i=0  ;  i  < 10  ;  i++)  {
    for(j  =0  ;  j  <  10  ;  j++)  fscanf  (rf,  "%d",  &score[j]);
    n=fun(score,10,below);
    for(j  =0  ;  j  < n  ;  j++)  fprintf  (wf,  "%d",  below[j]);
    fprintf(wf,"\n");
  }
  fclose(rf);
  fclose(wf);
}

选项

答案float av=0.0; int i, j=0; for(i=0; i<m; i++) av+=score[i]; av/=m; for(i=0; i<m; i++) if(av>score[i])below[j++]=score[i]; return j;

解析 进入fun函数,根据前面的分析:
    首先,定义变量av,通过循环,用av+=score计算总分数,然后通过av/=m语句来计算平均分。
    其次,通过循环,让每个分数和平均分比较,低于平均分数的分数给below[](below[j++]=score)。在进行以上循环的同时,定义了一个变量j,每当发现一个小于平均分的分数,j自动加1 (j++;)。
    最后,返回j值,即是数组score[]中低于平均分的元素个数。
转载请注明原文地址:https://kaotiyun.com/show/DMJp777K
0

最新回复(0)