为了账号安全,请及时绑定邮箱和手机立即绑定

while 和do while循环中i++在前不就从2开始了吗?

while(i <= 100)

{

    i++;

    sum += i*flag;

    flag *= -1;

}


正在回答

3 回答

嗯,我想你想的是对的。的确答案里sum=的那个式子是从2开始计算的。

按照答案的逻辑来计算的话:sum=2-3+4-5...+100-101=-50 (最后项会变成101而不是100)

而按照本题的原意,即要把i++放在后面写。结果计算会变成:sum=1-2+3-4...+99-100=-50 

两者结果是一样的。好巧...

0 回复 有任何疑惑可以回复我~

我也觉得i++放前面,sum=的那个式子直接从2开始算的,可是代码按它提示打进去,答案是对的,想不通。可我觉得我i++和++i的区别搞懂了。

0 回复 有任何疑惑可以回复我~
#1

慕粉3558023

i++是先运算再自加,++i先自加再运算;
2016-07-21 回复 有任何疑惑可以回复我~
#2

weibo_30度角_仰望湛藍天_0 回复 慕粉3558023

如果在i++后面再加一条语句,printf输出i的值也是2,不是1
2016-07-21 回复 有任何疑惑可以回复我~
#3

慕盖茨2788539

嗯,我想你想的是对的。的确答案里sum=的那个式子是从2开始计算的。 按照答案的逻辑来计算的话:sum=2-3+4-5...+100-101=-50 (最后项会变成101而不是100) 而按照本题的原意,即要把i++放在后面写。结果计算会变成:sum=1-2+3-4...+99-100=-50 两者结果是一样的。好巧...
2016-07-23 回复 有任何疑惑可以回复我~
#4

weibo_30度角_仰望湛藍天_0 回复 慕盖茨2788539

恩,我懂了。所以恰好两者答案是一样的,但是其实运行的过程是有问题的,谢啦~
2016-07-23 回复 有任何疑惑可以回复我~
查看1条回复

虽然i++的位置不影响最后的结果,但处理过程与题目的式子要一致的话,i++就必须放在后面

while(i <= 100)

{

    sum += i*flag;

    flag *= -1;

    i++;

}


1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

while 和do while循环中i++在前不就从2开始了吗?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信