hello_瓜牛
2016-11-06 11:57
这里有个疑问,i++放在前面,在进行计算sum,因为前面不是已经定义过i=1,那么第一步计算不就成了sum=sum-2了?而且无论i++放在首位还是末位都是一样的-50,我的理解是i++放在首位不是应该少+一个1了吗,求解,困惑中
题目是计算1-2+3-4+...-100的值,
对比三个答案,while和do-while是先自加,再求和;而 for循环是先求和,再自加,明显计算是有区别的。
while和do-while循环把i++放在前面,实际运算的是2-3+4-5+...-101,值虽然也为-50,却不对。
for循环运算的是1-2+3-4+...-100,值为-50,正确。
以while循环为例,查看每次i自加及sum求和的值。
#include <stdio.h>
int main()
{
int sum = 0;
int i = 1;
int flag = 1;
while(i<=100)
{
i++;
sum+=i*flag;
printf("%d* %d= %d\n",i,flag,sum); //查看每次i自加及sum求和的值
flag*=-1;
}
printf("%d\n",sum);
return 0;
}
确实是少加一个 1 ,用for的话参考代码是正确的 ,个人认为 前面用do和do...while是有误的
i++是先输出再加1,所以应该是先输出1,但是此时电脑里面记下来的应该是2;所以第一次是1,没有错的。第二次电脑输出2,但是记录下来的是3。。。
我觉得题目有问题,首先i++放在第一位,此时i值不是应该是2,第一次运算就直接成了sum=2,而不是1了,如果i++放在末位,应该就对了吧,而且放在首位是从2计算到101啊,直接编一个全+到5的,按照i++放在首位得到20,放在末位就得到15,所以我觉得网友那些给的i++放在首位的答案是错的,有点偷换概念的感觉,虽然答案都是-50.
C语言入门
926210 学习 · 20797 问题
相似问题