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

admin2013-03-29  33

问题 m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人数作为函数值返回,将低于平均分的分数放在below所指的数组中。
    例如,当score数组中的数据为:10、20、30、40、50、60、70、80、90时,函数返回的人数应该是4,below中的数据应为:10、20、30、40。
    注意:部分源程序在文件PROGl.C文件中。
    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
#include
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",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(wf,"%d",below[j]);
    fprintf(wf,"\n");
  }
  fclose(rf);
  fclose(wf);
}

选项

答案{loat av=0.0; int i, j=0; for(i=0; iscore[i])below[j++]=score[i]; return j ;

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

最新回复(0)