在主函数中定义一个一维数组,把若干个人(人数自己确定)的成绩存放在一维数组中,这些数值需要从键盘里任意输入。编写函数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;
}
#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");
}
本回答被网友采纳