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

这个为什么算不出来?编译器没报错,但是没有结果。1-2+3-4+5-……+99-100

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

    //使用while循环
    for (i=1;i<=100;i++)
    {
        flag*=-1;
        i=flag*i;
       sum=sum+i;
    }
    printf("sum=%d\n",sum);
    return 0;
}

正在回答

3 回答

你好,你的程序的逻辑结构有问题。

   flag*=-1;  //这里需要细致思考一下。
   i=flag*i; //这两句使得 i 的值一下正,一下负。而i在自加的时候,绝对值始终无法自增,造成死循环。

正确代码如下:

#include<stdio.h>

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

      

3 回复 有任何疑惑可以回复我~
  • for(i =1,i<=100; i++)

  • {

  • if(i%2=0)

  • {

  • flag=-1;

  • }

  • else

  • {

  • flag=1;

  • }

  • sum=sum+i*flag;

  • }

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

  • return 0;

  • }


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

微小的人

太麻烦了吧,把flag放赋值语句下面就行了
2017-10-04 回复 有任何疑惑可以回复我~

你的注释写的是使用WHILE循环,为什么却用的是FOR呢?     如果要用FOR,你漏掉了一个判断, 当i等于2的时侯,符号状态是不是应该变一下呢,不应该直接写flag*=-1,再想想之前学过什么语句

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

举报

0/150
提交
取消

这个为什么算不出来?编译器没报错,但是没有结果。1-2+3-4+5-……+99-100

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号