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

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

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

C
K_JasmineTea 2018-04-19 03:20:58
#include <stdio.h>int main(){    int sum = 0;  //定义计算结果变量sum    int i = 1;    //定义循环数字变量i    int flag = 1; //定义符号状态变量flag    //使用for循环    for(i=1;i<=100;i++)    {       sum += i*flag;       flag *= -1;    }    printf("sum=%d\n",sum);    return 0;}/1.*flag *= -1; 第一次循环结果为什么不是-1 ??2. {    flag *= -1;    sum += i*flag; }  为什么调换顺序后才是第一次循环flag为-1?与调换顺序之前有啥区别?
查看完整描述

3 回答

?
明阳青昀

TA贡献7条经验 获得超3个赞

代码是按照你写的顺序从上往下执行的,sum += i*flag;    (sum+=1*1,sum=1), 肯定第一次打印出来的不是-1,调换后,flag变成了-1,sum+=1*(-1)

查看完整回答
反对 回复 2018-04-20
?
张小明丶

TA贡献6条经验 获得超0个赞

兄dei,你应该顺着你写的代码一行一行的往下走,你的初始化数据是这样的:

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

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

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

例如第一个问题,第一次循环结果为什么不是-1 ??

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

    {

       sum += i*flag;        //0+=1*1

       flag *= -1;              //1*=-1

    }

    printf("sum=%d\n",sum);        //输出的是sum的值为1


这样想,第二个问题是不是简单多了?

 {

    flag *= -1;                    //1*=-1

    sum += i*flag;             //0+=1*(-1)

 }  

  printf("sum=%d\n",sum);        //输出的是sum的值为-1

查看完整回答
反对 回复 2018-04-19
?
奔跑的虫子

TA贡献33条经验 获得超21个赞

定义sum为结果 初始化为0;
而表达式为sum=sum+num;
        < == > sum=1-2;    //则此时sum已经为1;
        所以第一步应该是 sum=0+1;    //此时符号变量flag应为正数[初始化为正]
        第二步 sum=1-2;              //此时flag为负 < == >sum=1+(-1*2)=1+(-2)
如果你想flag初始化为正,可以最开始赋值:sum=1;
嗯~~~大概是这么个意思


查看完整回答
反对 回复 2018-04-19
  • 3 回答
  • 0 关注
  • 2497 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信