NO.38 while求和为什么出错
本帖最后由 我爱橙 于 2022-2-25 10:25 编辑#include <stdio.h>
int main()
{
int i=1,sum=0;
while(i<10)
sum=sum+1;i++;
printf("i=%d,sum=%d",i,sum);
return 0;
} 本帖最后由 isdkz 于 2022-2-24 15:29 编辑
多条语句要放到语句块{}里
#include <stdio.h>
int main()
{
int i=1,sum=0;
while(i<10)
{
sum=sum+i;i++; // 放到 {} 里,还有sum=sum+i,这里应该是加 i ,不是加 1
}
printf("i=%d,sum=%d",i,sum);
return 0;
} isdkz 发表于 2022-2-24 15:28
多条语句要放到语句块{}里
sum+1是不能运行计算吗? 本帖最后由 isdkz 于 2022-2-24 16:18 编辑
我爱橙 发表于 2022-2-24 16:12
sum+1是不能运行计算吗?
sum + 1,那你只是累加 1 而已,最终会是 9 个 1 相加,sum 的值就是 9,
但是我想你想实现的是 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9,
所以应该是加 i 的值,因为 i 的值一直在自增,
还有 i 的自增应该在 while 循环的语句块里面,多条语句想要在循环里,就得用语句块,
如果 i 的自增不在循环里,且 i 用于作循环条件,那 while 就会陷入死循环 循环进行需要有五个要素:1.循环变量的初值;2.循环变量的终值;3.循环增量;4.循环条件;5.循环体;
这里就拿你的程序来说,循环变量是i
要素1(初值是1),就是你 的初始化 i=1;
要素2(终值是10),就是你 while判断 出循环的i的值(i=10的时候,while循环结束)
要素3(这个自己定,一般都是循环变量的自加或自减),你写的 i++。但是注意,你这里写的不对,要素5的时候一起看。
要素4 (就是你进行循环的条件), 这个是需要你自行构造的,有些循环我们就是需要永远进行的那叫
死循环(一般用while(1),这里“1”的意思就是非零的句子,表达式都可以。即判断为真)
你这里的是i<10为循环条件,换句话说就是当 i>=10的时候循环结束
要素5 (即如何循环,循环里面我们要进行什么程序),养成良好的习惯就是用{}括起来,然后循环体就是{}括起的全部内容
如果没有{},那么就只有while()这个语句的下一句为循环体,也就是你这个情况,循环体是sum=sum+1,循环里面只做这个。
结合上面的分析,可以看出你的循环体里面这个循环变量 i 没有变化,也就是一直是1。你写的i++是需要循环结束了才能进行,
但是你结束循环的条件是i>=10,所以这就是死循环了。主要问题就是你的循环体。循环体:
{
sum=sum+1;//每次加1
i++;//循环变量的自增,给循环结束提供可能
printf("i=%d,sum=%d",i,sum);//查看每一次循环的i和sum的值
} 我爱橙 发表于 2022-2-24 16:12
sum+1是不能运行计算吗?
你这个是一直在进行sum+1的计算,其他下面的那写程序都没有执行到。
具体可以看看我写的五要素当中的循环体的理解。
页:
[1]