C语言求平均数
输入5人分数,求出低于平均分的人数。我这种算法错在哪儿?#include<stdio.h>intfun(inta[5],intb){intavg,t,num=0;avg=...
输入5人分数,求出低于平均分的人数。我这种算法错在哪儿?
#include<stdio.h>
int fun(int a[5], int b)
{
int avg,t,num=0;
avg=b/5;
for(t=0;t<5;t++)
{
if(a[t]<avg)
num++;
}
return num;
}
main()
{
int m[5],i,sum=0;
for(i=0;i<5;i++)
{
scanf("%d",&m[i]);
sum+=m[i];
}
fun(m[5],sum);
printf("%d\n",fun(m[5],sum));
} 展开
#include<stdio.h>
int fun(int a[5], int b)
{
int avg,t,num=0;
avg=b/5;
for(t=0;t<5;t++)
{
if(a[t]<avg)
num++;
}
return num;
}
main()
{
int m[5],i,sum=0;
for(i=0;i<5;i++)
{
scanf("%d",&m[i]);
sum+=m[i];
}
fun(m[5],sum);
printf("%d\n",fun(m[5],sum));
} 展开
6个回答
2012-12-25
展开全部
fun()函数不需要执行两次
fun()函数的第一个参数是数组,也就是指针,因此调用时应该这样:
fun(m, sum)
另外,你统计平均时没有考虑小数情况,这样可能结果会有错误,比如平均分75.2,
但是你的平均分是75,这样就会导致原来75的没有被统计到
还有一个建议,fun()函数的两个参数最好分别是数组指针和数组长度,sum可以在fun()内部统计,这样函数的应用范围就更广了
fun()函数的第一个参数是数组,也就是指针,因此调用时应该这样:
fun(m, sum)
另外,你统计平均时没有考虑小数情况,这样可能结果会有错误,比如平均分75.2,
但是你的平均分是75,这样就会导致原来75的没有被统计到
还有一个建议,fun()函数的两个参数最好分别是数组指针和数组长度,sum可以在fun()内部统计,这样函数的应用范围就更广了
追问
这里fun的第一个参数我老是把握不好是不是直接写数组名还是什么。。可能概念没搞清,请问怎么理解?应用范围更广怎么理解?
追答
这就看你的形参是怎么写的,你这里形参是int a[],是一个数组形式,相当于一个指针,
因此你直接给实参数组m[5]的名字m就好,m也相当于一个指针
话说回来,对于你的fun(int a[5], int b)而言,这里的5对于fun()函数无意义,因为函数并不知道你是几维数组,函数只认这个指针
展开全部
fun(m[5],sum);
这调用有问题
m[5]就是这个, 传个数组名就可以了
还有
int fun(int a[5], int b)
这个也有问题, 用数组做参数, 不用写大小
这调用有问题
m[5]就是这个, 传个数组名就可以了
还有
int fun(int a[5], int b)
这个也有问题, 用数组做参数, 不用写大小
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
int fun(int a[], int b) //定义不应该是定义int a[5],定义成int a[]就行
{
int avg,t,num=0;
avg=b/5;
for(t=0;t<5;t++)
{
if(a[t]<avg)
num++;
}
return num;
}
main()
{
int m[5],i,sum=0;
for(i=0;i<5;i++)
{
scanf("%d",&m[i]);
sum+=m[i];
}
fun(m,sum); //调用函数时接收函数的地址就行,也就是传入数组的名字
printf("%d\n",fun(m,sum));
}
int fun(int a[], int b) //定义不应该是定义int a[5],定义成int a[]就行
{
int avg,t,num=0;
avg=b/5;
for(t=0;t<5;t++)
{
if(a[t]<avg)
num++;
}
return num;
}
main()
{
int m[5],i,sum=0;
for(i=0;i<5;i++)
{
scanf("%d",&m[i]);
sum+=m[i];
}
fun(m,sum); //调用函数时接收函数的地址就行,也就是传入数组的名字
printf("%d\n",fun(m,sum));
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
算法思想正确,但是可能会有一些问题。求平局数时最好还是double类型。int类可能不准确。
另外最后的fun函数其实只需要运行一次的。
fun(m[5],sum);
printf("%d\n",fun(m[5],sum));
改为:sum=fun(m,sum);
printf("%d\n",sum);
可以减小运行时间
另外最后的fun函数其实只需要运行一次的。
fun(m[5],sum);
printf("%d\n",fun(m[5],sum));
改为:sum=fun(m,sum);
printf("%d\n",sum);
可以减小运行时间
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
printf("%d\n",fun(m,sum));
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询