求平均值出错,小菜问问.

sweird 2007-07-20 02:14:17
#include <stdio.h>
#include <math.h>
int num[1000];
int n,i;
int sum=0;


void input()
{
printf("please input n:");
scanf("%d",&n);
printf("please input %d number:",n);
for (i=0;i<n;i++)
scanf("%d",&num[i]);
}

int qiuhe()
{

for (i=0;i<n;i++)
sum+=num[i];
return (sum);
}
float pjz()
{
float pingjun;
float m;
m=qiuhe();
pingjun=(float)m/n;
return(pingjun);/*这部分哪里出了问题?为什么平均值输出的结果不对?谢谢*/
}


void main()
{

input() ;
printf("输入的个数:%d\n",n);
printf("和为: %d\n",qiuhe());
printf("平均值为:%f\n", pjz());

getch();
}
...全文
217 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
bachelorkang 2007-07-23
  • 打赏
  • 举报
回复
你所定义的sum是全局变量,在整个程序的生命周期内都存在,也就是说你第一次求和的时候就已经对其进行了赋值,之后在你的程序周期内这个值一直保存在内存当中。当你第二此调用的时候是在sum的基础上继续求和的。
gclu212 2007-07-23
  • 打赏
  • 举报
回复
pjz()这个函数里面又求了一次和!
lockhall 2007-07-23
  • 打赏
  • 举报
回复
前面赋值了sum = 0;保证了第一次求和是对的

但求平均数就错了。
sweird 2007-07-23
  • 打赏
  • 举报
回复
可是我在最前面不是已经赋值sum=0了呀?
唐巧 2007-07-21
  • 打赏
  • 举报
回复
上面写错了,sorry
改一个地方就OK了;
int qiuhe()
{
sum=0; //加上这句就可以了.
for (i=0;i<n;i++)
sum+=num[i];
return (sum);
}
唐巧 2007-07-21
  • 打赏
  • 举报
回复
改一个地方就OK了;
int qiuhe()
{
m=0; //加上这句就可以了.
for (i=0;i<n;i++)
sum+=num[i];
return (sum);
}
lockhall 2007-07-20
  • 打赏
  • 举报
回复
float pjz()
{
float pingjun;
float m;
m=qiuhe(); //2次求和,之前可以对sum清零 sum = 0;
pingjun=(float)m/n;
return(pingjun);/*这部分哪里出了问题?为什么平均值输出的结果不对?谢谢*/
}
ilovehbfy 2007-07-20
  • 打赏
  • 举报
回复
printf("和为: %d\n",qiuhe());
这里只是打印也重新求了一次和?
Inhibitory 2007-07-20
  • 打赏
  • 举报
回复
void main()
{

input() ; // 这里进行了一次求和
printf("输入的个数:%d\n",n);
printf("和为: %d\n",qiuhe()); // 这里又进行了一次求和,去掉这一行就好了
printf("平均值为:%f\n", pjz()); // 结果是两次求和的平均值

getch();
}

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧