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

各位编程高手能否帮我看一下哪里错了?使用循环计算1-2+3-4+5-6+…-100的值

各位编程高手能否帮我看一下哪里错了?使用循环计算1-2+3-4+5-6+…-100的值

C
慕粉3719624 2016-07-27 22:16:52
查看完整描述

7 回答

?
皓韵儿

TA贡献86条经验 获得超114个赞

为什么这么麻烦呢?

int main(){

int sum = 0;

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

if(i % 2 == 0){//是2 的倍数

sum -= i;

}

else{

sum += i;

}

}

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

return 0;


查看完整回答
反对 回复 2016-07-31
?
源小猿

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

sorry阿,没注意还有减号

查看完整回答
反对 回复 2016-07-31
?
源小猿

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

递加干嘛用循环?用递归阿

查看完整回答
反对 回复 2016-07-31
?
叮咚细语

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

你第一次i就等于1,进入循环第一次sum的值就是2-4,因为i++是改变值为2了,你应该把i++放到sum语句后,另外flag++其实没什么用,可以去掉。

查看完整回答
反对 回复 2016-07-28
?
望远

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

如楼主注释的这里的flag是控制符号的,而问题就在变量flag的使用上

代码如下:


#include <stdio.h>

 

int main(void) { 

    int sum = 0;

    int i = 1;

    int flag = 1;

    while(i<=100){

        i=i*flag;

        sum=sum+i;

        flag = -flag;//每结束一次循环就改变flag的符号

         i++;

    }

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

    return 0;

}


   



查看完整回答
反对 回复 2016-07-28
?
_潇潇暮雨

TA贡献646条经验 获得超225个赞

你那个flag变量的用法搞错了。代码如下:

#include <stdio.h>

int main(void) { 
	int sum = 0;
	int i = 1;
	int flag = 1;
	while(i<=100){
	    sum += i++ * flag;
	    flag = -flag;
	}
	printf("sum=%d\n",sum);
	return 0;
}


查看完整回答
反对 回复 2016-07-27
  • 7 回答
  • 0 关注
  • 1857 浏览

添加回答

举报

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