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

这个哪里错了?真心求教

#include <stdio.h>
int main()
{
    /* 小伙伴们:
           选择你们认为最合理的循环结构完成功能吧 */
    int sum = 0;  //定义计算结果变量sum
    int i = 1;    //定义循环数字变量i
    int flag = 1; //定义符号状态变量flag
   
    //使用while循环
    while(i<=100)
    {
        i++;
        sum+=i*flag;
        flag*=-1;
    }
   
    i = 1;  //重新初始化变量i
   
    //do-while循环
    do{
        i++;
        sum+=i*flag;
        flag*=-1;
    }while(i<=100);
   
    i = 1;  //重新初始化变量i
   
    //使用for循环
    for(i=1;i<=100;i++)
    {
        sum+=i*flag;
        flag*=-1;  
    } 
    printf("sum=%d\n",sum);
   
    return 0;   
}

正在回答

2 回答

你的意思是说sum的值和答案给的不一样是吗?

这不是错误,while 、do while 、for三者都能实现循环功能

只是你将这三个循环都写在一起了

写在一起也就算了,你没有初始化sum的值

所以sum一直是累加的

因此你的答案不符

如果改的话

#include <stdio.h>
int main()
{
    /* 小伙伴们:
           选择你们认为最合理的循环结构完成功能吧 */
    int sum = 0;  //定义计算结果变量sum
    int i = 1;    //定义循环数字变量i
    int flag = 1; //定义符号状态变量flag
    
    //使用while循环
    while(i<=100)
    {
        i++;
        sum+=i*flag;
        flag*=-1;
    }
      printf("sum=%d\n",sum); 
    i = 1; sum = 0; //重新初始化变量i
    
    //do-while循环
    do{
        i++;
        sum+=i*flag;
        flag*=-1;
    }while(i<=100);
      printf("sum=%d\n",sum); 
    i = 1;sum = 0;  //重新初始化变量i
    
    //使用for循环
    for(i=1;i<=100;i++)
    {
        sum+=i*flag;
        flag*=-1;   
    }  
    printf("sum=%d\n",sum); 
    
    return 0;    
}


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

草帽的意志 提问者

非常感谢!
2016-09-25 回复 有任何疑惑可以回复我~

没错啊,用一种就行,不用三个都用。三个都用你没重置sum的值

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

举报

0/150
提交
取消

这个哪里错了?真心求教

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