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

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

int sum = 0;  //定义计算结果变量sum
    int i = 1;    //定义循环数字变量i
    int flag = 1; //定义符号状态变量flag
  
    for(i=1,flag=2;i<100,flag<=100;i+=2,flag+=2)
    {
        sum=sum+(i-flag);
     
    } 
    printf("sum=%d\n",sum);

这里面为何是for(i=1,flag=2;i<100,flag<=100;i+=2,flag+=2)

正在回答

2 回答

你可以看一下这个,两个一个道理

#include <stdio.h>
int main()
{
    int sum = 0; 
    int i = 1;   
    int flag = 1;
    for(i=1;i<=100;i++)
    {
        int a = flag % 2;
        if(a!=0)
            sum += i;
            else
            sum -= i;
            flag++;
    } 
    printf("sum=%d\n",sum);
    return 0;   
}


1 回复 有任何疑惑可以回复我~
#1

luckyfootball 提问者

感谢,你这是另一种解法,目前我也学会了好几种解法,但唯独我上面写的那种看不懂,能帮我解读一下吗? 特别是for(i=1,flag=2;i<100,flag<=100;i+=2,flag+=2),这里面为何flag=2,还有后面要i+=2,flag+=2 如能解答,特别感谢!
2019-05-26 回复 有任何疑惑可以回复我~
#2

书桌上的青春 回复 luckyfootball 提问者

题目要算 1-2+3-4...+99-100=... 对吧 所以你那种代码是这样的形式 (1-2)+(3-4)+...+(97-98)+(99-100)=... 开始的flag=2 是为了保证开始的 sum=sum+(i-flag) 为sum=1-2 ; 那么后来的 i += 2 和 flag += 2 是为了保证以后的 3-4 5-6 .... 大概就是这样啦,
2019-05-26 回复 有任何疑惑可以回复我~
#3

慕的地5096752 回复 书桌上的青春

sum=sum+flag*i; flag=-flag;这个是什么意思呢 搞不懂 能解释一下吗
2019-10-12 回复 有任何疑惑可以回复我~

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

    {

         if(flag==1){

            sum=sum+i;

            flag=0;

        }else{

            sum=sum-i;

            flag=1;

        }

       }


0 回复 有任何疑惑可以回复我~
#1

luckyfootball 提问者

你的解法,我输入后,好像有误
2019-05-26 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信