while下数值更新问题 新人求助

LI-O 2013-08-29 10:05:04
#include<stdio.h>

int main(void)
{
int sum = 0,a = 1,b;

while(a<6)
{
b = a * 2;
sum = b + sum;
a++;
printf("%d is sum\n",sum);
}

return 0;
}


求解,怎么使每次循环过后 使 sum的值仍为 0?
我承认 我看书就犯困所以用这中方式来学习必要的语法知识,请见谅。。

...全文
120 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
LI-O 2013-08-30
  • 打赏
  • 举报
回复
引用 10 楼 max_min_ 的回复:
[quote=引用 9 楼 w15tp 的回复:] [quote=引用 8 楼 zhao4zhong1 的回复:]
不要使用
while (条件)
更不要使用
while (组合条件)
要使用
while (1) {
 if (条件1) break;
 //...
 if (条件2) continue;
 //...
 if (条件3) return;
 //...
}
因为前两种写法在语言表达意思的层面上有二义性,只有第三种才忠实反映了程序流的实际情况。
典型如:
下面两段的语义都是当文件未结束时读字符
whlie (!feof(f)) {
 a=fgetc(f);
 //...
 b=fgetc(f);//可能此时已经feof了!
 //...
}
而这样写就没有问题:
whlie (1) {
 a=fgetc(f);
 if (feof(f)) break;
 //...
 b=fgetc(f);
 if (feof(f)) break;
 //...
}
类似的例子还可以举很多。
while 的组合方法怎么这么多,? 我那为什么 我的结果和其他网友的不一样。? 别人的正常,而我的就...[/quote] 重新编译一次!单步调试! while (条件) do -- while(条件) 就这样而已!没有楼上说的那么乱,杂![/quote] 谢谢, 自己调试看看再说吧。 第一次用 调试。。。囧
max_min_ 2013-08-30
  • 打赏
  • 举报
回复
引用 9 楼 w15tp 的回复:
[quote=引用 8 楼 zhao4zhong1 的回复:]
不要使用
while (条件)
更不要使用
while (组合条件)
要使用
while (1) {
 if (条件1) break;
 //...
 if (条件2) continue;
 //...
 if (条件3) return;
 //...
}
因为前两种写法在语言表达意思的层面上有二义性,只有第三种才忠实反映了程序流的实际情况。
典型如:
下面两段的语义都是当文件未结束时读字符
whlie (!feof(f)) {
 a=fgetc(f);
 //...
 b=fgetc(f);//可能此时已经feof了!
 //...
}
而这样写就没有问题:
whlie (1) {
 a=fgetc(f);
 if (feof(f)) break;
 //...
 b=fgetc(f);
 if (feof(f)) break;
 //...
}
类似的例子还可以举很多。
while 的组合方法怎么这么多,? 我那为什么 我的结果和其他网友的不一样。? 别人的正常,而我的就...[/quote] 重新编译一次!单步调试! while (条件) do -- while(条件) 就这样而已!没有楼上说的那么乱,杂!
LI-O 2013-08-30
  • 打赏
  • 举报
回复
引用 8 楼 zhao4zhong1 的回复:
不要使用
while (条件)
更不要使用
while (组合条件)
要使用
while (1) {
 if (条件1) break;
 //...
 if (条件2) continue;
 //...
 if (条件3) return;
 //...
}
因为前两种写法在语言表达意思的层面上有二义性,只有第三种才忠实反映了程序流的实际情况。
典型如:
下面两段的语义都是当文件未结束时读字符
whlie (!feof(f)) {
 a=fgetc(f);
 //...
 b=fgetc(f);//可能此时已经feof了!
 //...
}
而这样写就没有问题:
whlie (1) {
 a=fgetc(f);
 if (feof(f)) break;
 //...
 b=fgetc(f);
 if (feof(f)) break;
 //...
}
类似的例子还可以举很多。
while 的组合方法怎么这么多,? 我那为什么 我的结果和其他网友的不一样。? 别人的正常,而我的就...
赵4老师 2013-08-30
  • 打赏
  • 举报
回复
不要使用
while (条件)
更不要使用
while (组合条件)
要使用
while (1) {
 if (条件1) break;
 //...
 if (条件2) continue;
 //...
 if (条件3) return;
 //...
}
因为前两种写法在语言表达意思的层面上有二义性,只有第三种才忠实反映了程序流的实际情况。
典型如:
下面两段的语义都是当文件未结束时读字符
whlie (!feof(f)) {
 a=fgetc(f);
 //...
 b=fgetc(f);//可能此时已经feof了!
 //...
}
而这样写就没有问题:
whlie (1) {
 a=fgetc(f);
 if (feof(f)) break;
 //...
 b=fgetc(f);
 if (feof(f)) break;
 //...
}
类似的例子还可以举很多。
zybjtu 2013-08-30
  • 打赏
  • 举报
回复
没有问题阿。楼主
lty369963 2013-08-30
  • 打赏
  • 举报
回复
引用 楼主 w15tp 的回复:
#include<stdio.h> int main(void) { int sum = 0,a = 1,b; while(a<6) { b = a * 2; sum = b + sum; a++; printf("%d is sum\n",sum); } return 0; } 求解,怎么使每次循环过后 使 sum的值仍为 0? 我承认 我看书就犯困所以用这中方式来学习必要的语法知识,请见谅。。
while(a<6) { int sum=0; b = a * 2; sum = b + sum; a++; printf("%d is sum\n",sum); } 是这个意思不
max_min_ 2013-08-30
  • 打赏
  • 举报
回复
引用 2 楼 w15tp 的回复:
结果? 我算得第一个还正常,但是第二个结果,就是 和第一个结果相计算的结果。 就是在循环中 su没有更新为0 是在ubuntu 下的 gcc
第一次循环,结果为b =2 ,sum =2; 第二次循环b= 4 ,sum = 2 +4 = 6; 以此循环阿?楼主有什么问题?
mujiok2003 2013-08-30
  • 打赏
  • 举报
回复
引用 2 楼 w15tp 的回复:
结果? 我算得第一个还正常,但是第二个结果,就是 和第一个结果相计算的结果。 就是在循环中 su没有更新为0 是在ubuntu 下的 gcc
其实你在算
sum = 1*2 + 2 * 2 + 3* 2 + 4* 2 + 5 * 2;
mujiok2003 2013-08-30
  • 打赏
  • 举报
回复
结果 什么第一个,第二个?
引用 2 楼 w15tp 的回复:
结果? 我算得第一个还正常,但是第二个结果,就是 和第一个结果相计算的结果。 就是在循环中 su没有更新为0 是在ubuntu 下的 gcc
LI-O 2013-08-30
  • 打赏
  • 举报
回复
结果? 我算得第一个还正常,但是第二个结果,就是 和第一个结果相计算的结果。 就是在循环中 su没有更新为0 是在ubuntu 下的 gcc
max_min_ 2013-08-29
  • 打赏
  • 举报
回复
什么环境?重新编译下,我运行正常啊! 输出结果了

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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