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

这个公式是怎么得出的

 sum=sum+i*flag;

        i++;

        flag=-flag;

       


提问者:luanhuansen 2016-02-27 21:08

个回答

  • 天地不仁_以_万物为刍狗
    2016-02-27 22:22:11
    已采纳

    sum=sum+i*flag; 

    //此句相当于sum += i*flag;相当于是用sum的当前值加上 i*flag 的值,然后覆盖掉当前值作为新值;还有 -=(减等) *=(乘等) /=(除等)

            i++;

            flag=-flag;

    //此句与上面相似,相当于flag *= -1 ,即flag *= -flag或者flag =(-1 * flag),用途是控制数值的正负,flag的初始化赋值是1,那么1*(-1)之后flag的值就是-1,第二次用-1 * flag(即-1 * -1)之后flag的值就是1,第三次是-1,第四次是1,以此类推,奇数次flag的值为1,偶数次flag的值为-1


  • 无情的233
    2016-02-27 21:52:27

    基本就是把sum+i*flag的值赋给sum,然后i加上1,再把flag乘上-1

  • 无情的233
    2016-02-27 21:43:36

    敲敲代码,vc6单步执行看看就明白了

    我是这么做的

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