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

请问这段代码哪儿错了

计算1-2+3-4+……-100的值


#include <stdio.h>

int main()

{

    /* 小伙伴们:

           选择你们认为最合理的循环结构完成功能吧 */

    int sum = 0;  //定义计算结果变量sum

    int i = 1;    //定义循环数字变量i

    int flag = 1; //定义符号状态变量flag

    

    

    //使用for循环

    for(i=1;i<=100;i++)

    {

        i=flag*i;

        sum=sum+i;

        flag=-flag;

    }  

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

    

    return 0;    

}

正在回答

6 回答

#include <stdio.h>

int main()

{

    /* 小伙伴们:

           选择你们认为最合理的循环结构完成功能吧 */

    int sum = 0;  //定义计算结果变量sum

    int i = 1,m=1;    //定义循环数字变量i

    int flag = 1; //定义符号状态变量flag

    

    

    //使用for循环

    for(i=1;i<=100;i++)

    {

        m=flag*i;

        sum=sum+m;

        flag=-flag;

    }  

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

    

    return 0;    

}


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

tuzib263629491 提问者

非常感谢!但是为什么一定要设置成m=flag*i
2016-07-13 回复 有任何疑惑可以回复我~
#2

玖墨悬 回复 tuzib263629491 提问者

你现在设置的i是循环控制变量,当i=flag*i;时,就会影响i的值,从而影响循环次数和sum的值。
2016-07-13 回复 有任何疑惑可以回复我~
#3

tuzib263629491 提问者 回复 玖墨悬

thx
2016-07-14 回复 有任何疑惑可以回复我~

试试这个

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

i=flag*i; 这句去掉。

在循环条件中已经有i++这个语句改变 i 值,这一句再改变 i 值的话,循环不可控了,最后 i 会变成负数,陷入死循环了。

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

万劫不复

还有sum的计算,你并没有用到符号标志flag,所以一直加的都是正数。 这样 sum=sum+i*flag
2016-07-11 回复 有任何疑惑可以回复我~

i=flag*i;   sum=sum+i;

把这两行改成sum=sum+i*flag


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

flag=-flag;这里的问题吧

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

没看到错误啊

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

慕粉3558023

他把i的值改变了,判断会出现问题
2016-07-21 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

请问这段代码哪儿错了

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