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

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

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

正在回答

2 回答

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

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

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

爱玩的瓦力 提问者

看着好复杂。。。 系统要求的是1-2+3-4..........-100这个,但是它给的答案是求2-3+4-5......+100-101。是不是有问题?
2015-02-14 回复 有任何疑惑可以回复我~
楼主见过这样写的吗?,
第一种
 while(i++<=100)
    {
        sum += i*flag;
        flag *= -1;
		
    }
 第二种
 while(++i<=100)
    {
        sum += i*flag;
        flag *= -1;
		
    }

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

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

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

爱玩的瓦力 提问者

我勉强看懂了,就是对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 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       926206    人
  • 解答问题       20797    个

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

进入课程

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

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