求以下程序段的输出结果,麻烦详解。 int i=0,sum=1; do{sum+=i++;}while(i<5); printf("%d\n",sum);

来源:百度知道 编辑:UC知道 时间:2024/07/02 04:40:00

11

首先赋值,然后是一个条件循环。比较条件是i和5的大小。当i大于等于5的时候循环结束。执行语句是一个赋值语句。可以理解成sum=sum+(i++)。
i++的含义是下次调用加一。所以
第一次循环i=0,sum=1,然后比较,符合条件,执行,结果为sum=1,i=0(注意此时i仍为0,当下次调用的时候其值才变为1)
第二次循环i=1,sum=1,执行结果sum=2,i=1
第三次循环i=2,sum=2,执行结果sum=4,i=2
第四次循环i=3,sum=4,执行结果sum=7,i=3
第五次循环i=4,sum=7,执行结果sum=11,i=4
第六次循环的时候,i=5,条件语句不符合,跳出循环,执行下一句。
输出sum值。结果是11。
这道题关键是理解i++和++i的区别,前者是先用再加,后者是先加再用。

sum+=i++等价于sum=sum+i,i=i+1。
(i++和++i的区别就要注意一哈了,i++是先参加前面的求和运算及sum=sum+i,然后在自己+1;而++i,是先给自己+1后再参加运算)
这里有个do—while循环
这种循环是先执行在判断条件。那么
在i=0 ,sum=1后
do{sum+=i++;}while(i<5);的整个执行顺序就如下:
第一次循环:先执行sum=sum+i,再执行i++(即i=i+1),这时sum为1,i为1,然后执行条件判断while(i<5),为真;那么就接着循环
第二次循环:再先执行sum=sum+i,再执行i++(即i=i+1),这时sum为2,i为2,然后执行条件判断while(i<5),为真;那么就接着循环
第三次循环:再先执行sum=sum+i,再执行i++(即i=i+1),这时sum为4,i为3,然后执行条件判断while(i<5),为真;那么就接着循环
第四次循环:再先执行sum=sum+i,再执行i++(即i=i+1),这时sum为7,i为4,然后执行条件判断while(i<5),为真;那么就接着循环
第五次循环:再先执行sum=sum+i,再执