P091 低于平均分的成绩保存到数组 ★

03-程序设计题 软件121, 唐鼎威 1151浏览

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

#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int fun(int score[],int m, int below[])
{
                                                         
}
void main()
{
  FILE *wf;
  int i, n, below[9];
  int score[9]={10,20,30,40,50,60,70,80,90};
  system("CLS");
  n=fun(score, 9, below);
  printf("\nBelow the average score are: ");
  for(i=0;i<n;i++)  
     printf("%d ",below[i]);
/******************************/
  wf=fopen("out.dat","w");
  for(i=0;i<n;i++)  
     fprintf(wf,"%d ",below[i]);
  fclose(wf);
/*****************************/
}

【解题思路】
要计算低于平均分的人数,首先应该求出平均分,然后通过for循环语句和if条件语句找出低于平均分的分数。该题第1个循环的作用是求出平均分av,第2个循环的作用是找出低于平均分的成绩记录并存入below数组中。
【参考答案】

int fun(int score[],int m, int below[])
{
  int i,j=0;
  float av=0.0;
  for(i=0;i<m;i++)
     av=av+score[i]/m;        /*求平均值*/
  for(i=0;i<m;i++)
     if(score[i]<av)          /*如果分数低于平均分,则将此分数放入below数组中*/
        below[j++]=score[i];
  return j;                   /*返回低于平均分的人数*/
}