新手 求指教!! 这个计算平均数的程序为什么输出结果不对

明朝一典史 2014-08-11 05:03:41
#include<stdio.h>
int main()
{
char answer=0;
int i=0;
double sum=0,
average=0,
value=0;
printf("this program caculates the value any number of value.\n");
for (i=0;;++i)
{
printf("\nEnter a number: ");
scanf("%lf",&value);
printf("Do you want to enter another number(Y or N): ");
getchar();
scanf("%c",&answer);
sum=sum+value;
++i;
if(answer=='n'||answer=='N')
break;
}
average=sum/i;
printf("\n\nthe average is:%.2f",average);
return 0;
}
...全文
105 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
明朝一典史 2014-08-11
  • 打赏
  • 举报
回复

非常感谢!
现在正在尝试用debug
赵4老师 2014-08-11
  • 打赏
  • 举报
回复
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒:再牛×的老师也无法代替学生自己领悟和上厕所! 单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。
for (A;B;C) D;
//等价于
{
 A;
 while (1) {
  if (!(B)) break;
  D;
  C;
 }
}
明朝一典史 2014-08-11
  • 打赏
  • 举报
回复
引用 1 楼 robertbo 的回复:
for (i=0;;++i)中已经++i了,程序里就不要再++i; 单步debug模式调试一下,跟踪一下相关的值,比如sum和i,很容易就能发现问题所在。
我发现去掉第二个++i之后结果还是不正常 但是去掉第一个++i就没问题了 这是怎么回事 难到这两种方法不一样吗?
明朝一典史 2014-08-11
  • 打赏
  • 举报
回复
哦 非常感谢! 正在尝试debug
勤奋的小游侠 2014-08-11
  • 打赏
  • 举报
回复
引用 1 楼 robertbo 的回复:
for (i=0;;++i)中已经++i了,程序里就不要再++i; 单步debug模式调试一下,跟踪一下相关的值,比如sum和i,很容易就能发现问题所在。
确实是i++太多了。
robertbo 2014-08-11
  • 打赏
  • 举报
回复
for (i=0;;++i)中已经++i了,程序里就不要再++i; 单步debug模式调试一下,跟踪一下相关的值,比如sum和i,很容易就能发现问题所在。

69,371

社区成员

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

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