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

在对循环计算1-2+3-4+5-6+…-100的值时,我使用如下代码,错在哪里了?谢谢啦。

在对循环计算1-2+3-4+5-6+…-100的值时,我使用如下代码,错在哪里了?谢谢啦。

C
岳明 2017-05-15 16:54:11
#include <stdio.h>int main(){    int sum = 0;  //定义计算结果变量sum    int i = 1;    //定义循环数字变量i    int flag = 1; //定义符号状态变量flag    for(i=1; i<=100; i++)   {       if(i%2 == 0){        flag*= -1;            }        else{            flag*= 1;        }        sum+=i*flag;    }      printf("sum=%d\n",sum);         return 0;    }
查看完整描述

5 回答

?
做一个好码农

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

#include <stdio.h>
int main()
{
    int sum = 0;  //定义计算结果变量sum
    int i = 1;    //定义循环数字变量i
    int flag = 1; //定义符号状态变量flag

    for(i=1; i<=100; i++)
   {
   	   if(i%2 == 0){
        flag= -1;    
        }
        else{
            flag= 1;
        }
        sum+=i*flag;
    }  
    printf("sum=%d\n",sum); 
    
    return 0;    
}


查看完整回答
5 反对 回复 2017-05-15
已采纳
?
爪哇猿

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

 if(i%2 == 0){

        flag*= -1;    

        }

        else{

            flag*= 1;

        }


这段 使用 直接赋值的方式!flag =-1 和flag=1 

我来说说为什么你会错误。。

首先flag=1;

当i=1 的时候 flag 是flag =flag*1=1

当i=2 的时候 flag已经改变为1 

flag=flag*-1=-1

当i=3的时候 flag 的值此时是 -1 

flag=flag*1=-1*1=-1.。。(这里就是错误的开始)


查看完整回答
1 反对 回复 2017-05-16
?
qq_add_4

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

再循环里面打印下$i就知道你的循环有没有问题了,数值不是【正负正负..】而是【正负负正正负负】。

if($i%2 == 0){
   $flag= -1;
}
else{
   $flag= 1;
}

这段改下就可以了

查看完整回答
反对 回复 2017-05-15
?
望远

TA贡献1017条经验 获得超1032个赞

for(i=1; i<=100; i++){
  sum+=i*flag;
  flag=-flag;
}

   

查看完整回答
反对 回复 2017-05-15
?
我是新手_请多指教

TA贡献140条经验 获得超79个赞

 你如果非要这么写就把int flag = 1; 把这句代码放在for循环与if语句之间,也就是第一句~具体逻辑自己思考下

查看完整回答
反对 回复 2017-05-15
?
做一个好码农

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

                               运行结果不对吗?觉得是正确的啊! 你把if语句中的两个*删去,运行结果就对了  

              

查看完整回答
反对 回复 2017-05-15
  • 5 回答
  • 0 关注
  • 2161 浏览

添加回答

举报

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