请教个C函数问题

来源:百度知道 编辑:UC知道 时间:2024/06/01 09:50:06
m个人的成绩存放在score数组中,请编写函数fun(),它的功能是:将低
于平均分的人数作为函数值返回,将低于平均分的分数放在below所指的
数组中。

#include "stdio.h"
#define N 10

main()
{int fun(int s[],int b[]);
int i,num,score[N],below[N];
printf("请输入%d个人的成绩:\n",N);
for (i=0; i<N; i++)
{printf("score[%d]=",i);
scanf("%d",&score[i]);
}

num=fun(score,below);
printf("低于平均分的人数有%d人,分数分别是:\n",num);
for (i=0; i<num; i++)
printf("%d ",below[i]);
}

int fun(int s[],int b[])
{int i;
float aver,c,sum=s[0];
for(i=1;i<N;i++)
sum=sum+s[i];
for(i=1;i<N;i++)
if(b[i]<sum)
c=b[i];
return(c)
}
这样写对吗?不对请指教谢谢!

问题主要在fun 函数中,你的aver没有用,于是也就没有平均值,b[]没有赋值,而且你的存放也不对 .代码如下:
int fun(int s[],int b[])
{int i;
float aver,sum=s[0];
int c=0;
int t[N]={0};
for(i=1;i<N;i++)
sum=sum+s[i];
aver=sum/N;
for(i=0;i<N;i++)
{
if(s[i]<aver)
{ c++;
t[i]=s[i];}
else i++;
}
return(c) ;
}

说几个明显的问题吧
一、b[i]完全没有赋值,你就开始比较,比的结果天知道
二、sum是你所求的数的和,而不是平均分
三、fun()是整型变量,c是浮点型变量,返回值会出错的
四、c原意应该是不及格的人数,但你用c=b[i]则c的值是最后一个不及格的人数。