问答详情
源自:4-10 循环结构之三种循环比较

请问这段代码哪儿错了

计算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;    

}

提问者:tuzib263629491 2016-07-10 20:23

个回答

  • 玖墨悬
    2016-07-11 19:54:25
    已采纳

    #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;    

    }


  • 玖墨悬
    2016-07-11 19:55:09

    试试这个

  • 万劫不复
    2016-07-11 08:47:34

    i=flag*i; 这句去掉。

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

  • 365366
    2016-07-10 23:26:27

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

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


  • stalinwang
    2016-07-10 20:50:12

    flag=-flag;这里的问题吧

  • 依然范佩西425
    2016-07-10 20:47:34

    没看到错误啊