c语言编程题在主函数中定义一个一维数组,把若干个人(人数自?

在主函数中定义一个一维数组,把若干个人(人数自己确定)的成绩存放在一维数组中,这些数值需要从键盘里任意输入。编写函数fun,它的功能是:将高于平均分的分数放在一个数组中,将低于平均分的分数放在另一个数组中,要求在主函数中输出两个数组。

本例建立一个函数fun,有三个数组参数,其中h[],low[]两个数组用来分别存储高于均值的成绩和低于均值的成绩,并返回高于平均成绩的分数的个数。

代码如下

#include <stdio.h>

int n;

float sum=0,average;

float fun(float num[],float h[],float low[]);

int main()

{int i;

do 

{printf("请输入人数:");scanf("%d",&n);}

while(n<=0);

float num[n],h[n],low[n];

for (i=0;i<n;i++)

{scanf("%f",&num[i]);

sum+=num[i];

}

for(i=0;i<n;i++) printf("%.1f\t",num[i]);

printf("\n总分:%.1f\n",sum);

average=sum/n;

printf("高于平均成绩%.1f的分数\n",average);

for (i=0;i<fun(num,h,low);i++)

printf("%.1f\t",h[i]);

printf("\n低于平均成绩%.1f的分数\n",average);

for (i=0;i<(n-fun(num,h,low));i++)

printf("%.1f\t",low[i]);

return 0;

}

float fun(float num[],float h[],float low[])

{int i,c=0,d=0;               //c,d为计数器

for (i=0;i<n;i++)

if (num[i]>average)       {h[c]=num[i];c++;}   //大于均值的成绩送入数组h[]

else {low[d]=num[i];d++;}         //低于均值的成绩送入数组low[]

}

return c;

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-11-29

#include<stdio.h>

#define N 100

int fun(float *a,float *b,float *c,int n) { int i,n1,n2; float av;

  av=0; for ( i=0;i<n;i++ ) av+=a[i];

  av/=n; n1=n2=0;

  for ( i=0;i<n;i++ ) if ( a[i]>av ) { b[n1]=a[i]; n1++; } else { c[n2]=a[i]; n2++; }

  return n1;

}

void main() { float a[N],b[N],c[N]; int i,na,nb,nc;

  scanf("%d",&na); for ( i=0;i<na;i++ ) scanf("%f",&a[i]); if ( n<=0 ) exit(0);

  nb=fun(a,b,c,na); nc=na-nb;

  for ( i=0;i<nb;i++ ) printf("%.1f ",b[i]); printf("\n");

  for ( i=0;i<nc;i++ ) printf("%.1f ",c[i]); printf("\n");

}

本回答被网友采纳