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

i++在上面对我明白,在下面也对是怎么回事?是我对i++执行顺序错了?如果上面代码对,下面代码也应该对,是慕课网的问题吗?

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


正在回答

5 回答

运行错误

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

慕瓜3777088 提问者

非常感谢!
2018-01-23 回复 有任何疑惑可以回复我~
#2

qq_屠诽_04053364 回复 慕瓜3777088 提问者

https://www.imooc.com/qadetail/262996 运行没错,只是功能不一样,一个算的是1-2+3-4...-100一个算的是2-3+4-5+6...-101,结果一样,以后遇到不懂的代码分步执行一下,追踪各个变量的变化情况,看看它到底在算什么。。然而我不知道这种违背开发者意愿但能跑出结果的代码算不算错。。
2018-06-13 回复 有任何疑惑可以回复我~

感觉应该是在下面对

0 回复 有任何疑惑可以回复我~
 while(i<=100)
    {
        //i++;放在这里明白
        sum=sum+flag*i;
        flag=-flag;
        i++;//这里不明白
    

第一次循环的时候i取1,第二次是2,一直取到i=100,放前面和后面一样,因为i++,放前面,第一次也是i取1,下一次循环使用的时候就是2了,i++放循环体的任何位置都可以了,如果你是++i放前面了,那第一次就是取2了,把++i放后面前面的i第一次也是取1.

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

慕瓜3777088 提问者

我意思是说,在慕课网i++无论在前还是在后答案都一样,所以我怀疑了
2018-01-23 回复 有任何疑惑可以回复我~
#2

慕瓜3777088 提问者

i++和++i都一样取1,建议你回去复习一下
2018-01-23 回复 有任何疑惑可以回复我~
#3

慕用5086216 回复 慕瓜3777088 提问者

建议 你 回去复习一下,++i的确是取2,虽然在本题是不影响答案的 因为1-2+3-4.....-100和2-3+4-5.....-101是一样的(注意你都执行了100次循环) 你那个“100以内整数之和”算出来就是5150,因为是2加到101,多加了100 兄dei你这样很容易搅浑别人思路的好么.....
2018-02-13 回复 有任何疑惑可以回复我~

不一样的,c语言在编译运行的时候是按顺序执行的,所以你把i++放在前面和后面时,i对应的初始值和末数值是不一样的,你可以自己拿一张草稿纸按照程序的顺序执行,你会明白的

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

Eric毛桃

如果有帮助麻烦给个最佳,谢谢,
2018-01-21 回复 有任何疑惑可以回复我~
#2

慕瓜3777088 提问者

就是说第一个代码是错误的?
2018-01-21 回复 有任何疑惑可以回复我~
#3

Eric毛桃 回复 慕瓜3777088 提问者

能给我看下你的题目吗?我不知道题目无法判断对错,只能说i++放前面和放后面的结果完全不同
2018-01-21 回复 有任何疑惑可以回复我~
#4

慕瓜3777088 提问者

使用循环计算1-2+3-4+5-6+…-100的值? 答案为sum=-50
2018-01-22 回复 有任何疑惑可以回复我~
#5

慕瓜3777088 提问者

不好意思,怪不得你没回复我,原来我回复错了 用while循环实现100以内所有整数之和
2018-01-22 回复 有任何疑惑可以回复我~
#6

慕瓜3777088 提问者 回复 慕瓜3777088 提问者

我搞错了
2018-01-22 回复 有任何疑惑可以回复我~
查看3条回复


#include <stdio.h>
int main()
{
    int i=1,sum=0;
    while(  i<=100   )  //循环条件应该是什么呢?
    {
        ++i;
        sum=sum+i;
                 //这里是不是应该改变循环变量的值
    }
    printf("100以内所有整数之和为:%d\n", sum);
    return 0;
}


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

慕瓜3777088 提问者

用while循环实现100以内所有整数之和
2018-01-21 回复 有任何疑惑可以回复我~

你们有没有编译器?试下运行是不是错的.

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

举报

0/150
提交
取消

i++在上面对我明白,在下面也对是怎么回事?是我对i++执行顺序错了?如果上面代码对,下面代码也应该对,是慕课网的问题吗?

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