答案没看懂,求大神解释。

来源:4-10 循环结构之三种循环比较

爱玩的瓦力

2015-02-12 18:45

这道题的第一个答案WHILE循环,那个i++在sum += i*flag的前面,那整个程序不就变成了2-3+4-5.....+100-101了吗?虽然答案是一样的。   想问一下我是不是有哪儿理解错了。

写回答 关注

2回答

  • 诗雨若枫
    2015-02-12 19:17:51

    你的理解没错,你可以改成这样

    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

    爱玩的瓦力

    看着好复杂。。。 系统要求的是1-2+3-4..........-100这个,但是它给的答案是求2-3+4-5......+100-101。是不是有问题?

    2015-02-14 17:18:40

    共 1 条回复 >

  • Rober_Lin
    2015-02-12 19:10:22
    楼主见过这样写的吗?,
    第一种
     while(i++<=100)
        {
            sum += i*flag;
            flag *= -1;
    		
        }
     第二种
     while(++i<=100)
        {
            sum += i*flag;
            flag *= -1;
    		
        }

    这样写的话就是看你是否能区分   i++和++i,但若单独一行写的话,两种形式都不影响结果的无论是写在累加语句的前面还是累加语句的后面都是一样的,至于具体的原因,应该是遵循

    判断条件    若为真    则主体语句,然后是修改循环条件    然后是继续判断

    爱玩的瓦力

    我勉强看懂了,就是对i++和++i的区分有点儿困难。还有对这道题的系统答案有些怀疑。你写的两个算式当int i=0时循环就是1-2+3-4..........-100;当int i=1时,就变成了计算2-3+4-5......+100-101了。系统的答案是不是就是算的2-3+4-5......+100-101?

    2015-02-14 17:16:32

    共 1 条回复 >

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926020 学习 · 20793 问题

查看课程

相似问题