这道题的第一个答案WHILE循环,那个i++在sum += i*flag的前面,那整个程序不就变成了2-3+4-5.....+100-101了吗?虽然答案是一样的。 想问一下我是不是有哪儿理解错了。
你的理解没错,你可以改成这样
int sum = 0;
int i =1;
int flag = 1;
while(i <= 100)
{
i++;
sum += i * flag;
printf("%d ",i * flag);
flag *= -1;
}
printf("\nsum=%d\n",sum);
会有这样的输出: 2 -3 4 -5 6 -7 8 -9 10 -11 12 -13 14 -15 16 -17 18 -19 20 -21 22 -23 24 -25 26 -27 28 -29 30 -31 32 -33 34 -35 36 -37 38 -39 40 -41 42 -43 44 -45 46 -47 48 -49 50 -51 52 -53 54 -55 56 -57 58 -59 60 -61 62 -63 64 -65 66 -67 68 -69 70 -71 72 -73 74 -75 76 -77 78 -79 80 -81 82 -83 84 -85 86 -87 88 -89 90 -91 92 -93 94 -95 96 -97 98 -99 100 -101
楼主见过这样写的吗?, 第一种 while(i++<=100) { sum += i*flag; flag *= -1; }
第二种 while(++i<=100) { sum += i*flag; flag *= -1; }
这样写的话就是看你是否能区分 i++和++i,但若单独一行写的话,两种形式都不影响结果的无论是写在累加语句的前面还是累加语句的后面都是一样的,至于具体的原因,应该是遵循
判断条件 若为真 则主体语句,然后是修改循环条件 然后是继续判断