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

使用循环计算1-2+3-4+5-6+....-100的值

代码为啥不可以这样:

#include <stdio.h>

int main()

{

   

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

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

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

    

    //使用while循环

    while(i<=100)

    {

        i++;

        sum=sum+(flag-i);

        flag++;

    }

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

    

    return 0;    

}

    


提问者:慕粉4001126 2016-10-16 12:40

个回答

  • 逝爱情殇
    2016-10-17 18:53:34

    include <stdio.h>
    int main()
    {
        /* 小伙伴们:
               选择你们认为最合理的循环结构完成功能吧 */
        int sum=0;  //定义计算结果变量sum
        int i=1;    //定义循环数字变量i
        int flag=1; //定义符号状态变量flag
       
        //使用while循环
        while(i<=100)
        {
            i++;
            sum+=i*flag;
            flag=flag*(-1);
        }
        printf("sum=%d\n",sum);
        i=1,sum=0,flag=1;  //重新初始化变量i
        
        //do-while循环
        do{
            sum+=i*flag;
    i++;
            flag=flag*(-1);
           
        }while(i<=100);
       printf("sum=%d\n",sum);
        i=1,sum=0,flag=1;  //重新初始化变量i
        
        //使用for循环
        for(i=1;i<=100;i++)
        {
            sum+=i*flag;
            flag=flag*(-1); 
        } 
        printf("sum=%d\n",sum);
       
        return 0;
    }

  • 慕姐9182683
    2016-10-16 14:31:30

     while(i<=100)

        {

            i++;

            sum=sum+(flag-i);

            flag++;

        }

    你这里每次循环sum的增量是-1,要改成flag*i;flag=-flag;运行才是题目要求的结果。

  • huangsai
    2016-10-16 14:28:16

    while(i<=100)

        {

            i++;

            sum=sum+(flag-i);//第一遍循环时,此时sum=0,flag=1,i=2,sum结果为-1

                                            //第二遍循环时,此时sum=-1,flag=2,i=3,sum结果为-2.

                                            //i先自增,flag-i为负数,flag再自增,之后i又自增,flag-i永远为负数,sum也为负数。

            flag++;

        }


  • 慕工程7797473
    2016-10-16 14:05:23

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

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

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

        

        //使用while循环

        while(i<=100)

        {

    sum=sum+i;

            i++;

           

        }

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

        

        return 0;    

    }