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

想问一下这里的i++放前面, 和放后面有什么区别

第一种:    //do-while循环
    do{
        if(flag>0)
        {
            sum=sum+i;
        }
        else
        {
            sum=sum-i;
        }
         i++;
        flag=-flag;
    }while(i<=100);
第二种:    do{
        i++;
        if(flag>0)
        {
            sum=sum+i;
        }
        else
        {
            sum=sum-i;
        }
        
        flag=-flag;
    }while(i<=100);


正在回答

3 回答

假设i的初值为0,第一种从0循环到100,第二种则从1循环到101,循环次数没变,但对于sum来说有变化。

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

唯有进步才能优秀 提问者

那要是根据题目要求1-2+3.....-100是不是只能先i++再进行if语句呢?
2018-01-05 回复 有任何疑惑可以回复我~
#2

琼华紫英 回复 唯有进步才能优秀 提问者

不是。i初值为0只能用第一种,且flag初值小于0,这样是0+1-2+3.....-100.第二种是从1加减到101,如果想用第二种必须改循环条件为i《=99。
2018-01-05 回复 有任何疑惑可以回复我~
#3

唯有进步才能优秀 提问者 回复 琼华紫英

我应该把前面也打上来的 int sum = 0; int i = 1; int flag = 1;这样的话应该就是按第一种吧,但是我运行的时候两种方法是一样的,所以不太想的通
2018-01-05 回复 有任何疑惑可以回复我~
#4

琼华紫英 回复 唯有进步才能优秀 提问者

对的是第一种。运行结果一样很明显是因为数学结果1-2+3.....-100的结果是-50,而第二种2-3+4.....-101的结果也是-50. 你可以在flag=-flag;后加上printf("%d,%d\n",sum,i);会发现第一种sum从1开始,而第二种sum从2开始。
2018-01-05 回复 有任何疑惑可以回复我~
#5

唯有进步才能优秀 提问者 回复 琼华紫英

想了一下是的 虽然第二种答案一样,但是不是题目要求了
2018-01-05 回复 有任何疑惑可以回复我~
查看2条回复

i++和++i如果是单独一行的话,作用是一样的。

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

我认为  如果i=1的话, 第一种的情况应该是sum=sum+1;sum=sum-1

                                     第二种那  我觉得是sum=sum+2;sum-2  

不知道对不-。-

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

举报

0/150
提交
取消

想问一下这里的i++放前面, 和放后面有什么区别

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