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

输出结果为啥是50?

#include <stdio.h>

int main()

{

//初始化 

int i=1;

int flag=1;

int sum=0;

//判断符号 

while(i<=100)

    {

        ++i;

        if(i%2==1)

        {

        flag=1;

        }

        else

        {

        flag=-1;

        }

    sum+=flag*i;

    }

//输出 

printf("sum=%d\n",sum);

    return 0;

}



正在回答

2 回答

把++i;移到下面去,你做的相当于是2到101了

#include <stdio.h>

int main()

{

//初始化 

int i=1;

int flag=1;

int sum=0;

//判断符号 

while(i<=100)

    {

        if(i%2==1)

        {flag=1;}

        else

        {flag=-1;}

        sum+=flag*i;

        ++i;

    }

//输出 

printf("sum=%d\n",sum);

    return 0;

}


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

慕课小布丁

‘++i’到后面第一个‘;’的时候就已经是‘+1’的值了
2019-10-22 回复 有任何疑惑可以回复我~
#2

qq_慕工程4271860 提问者

那么这个放在后面去了,从思维逻辑上怎么理解,先判断再自增吗? 自增不是对判断有影响吗? 谢谢
2019-10-22 回复 有任何疑惑可以回复我~
#3

qq_慕工程4271860 提问者 回复 慕课小布丁

想通了,i++为独立表达式时是一个动作,会产生取值变化。如果取值a=i++;则a取i自增前的值。
2019-10-22 回复 有任何疑惑可以回复我~
#4

pghao

flag 可以用取反直接解决吗,我用取反证明不了
2020-02-15 回复 有任何疑惑可以回复我~
查看1条回复

要么改为i++,要么把++i,放到后面,

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

qq_慕工程4271860 提问者

这个没有影响
2019-10-22 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

输出结果为啥是50?

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