给的前两个参考代码是不是有问题

来源:4-10 循环结构之三种循环比较

qq_悲伤可以自行处理_03427709

2016-08-08 15:07

虽然输出的结果都是-50  但是前两个代码表示的是不是2-3+4-5+……-101


写回答 关注

11回答

  • 我改名字了
    2016-08-10 10:46:07
    已采纳

    #include<stdio.h>

    int main()

    {

        int sum=0;

        int i=1;

        int flag=1;

        while(i<=100)

        {

            i++;

            sum+=i*flag;

            flag*=-1;

        }

        printf("%d",sum);

        return 0;

    }

    /*如果i++ 在 sum+=i*flag; 中i 的值是2,那么循环过程是,2-3+4-5+6-7+8.。。。。。。

    问题来了,当 i=100时,while(i<=100)判断成立,那么 sum+=i*flag;中 i 的值就是101,再

    乘以flag.这时slag为负1.因为每逢 i 的值为奇数时flag中都为负1.那么101为负值。-101.

    你写一个程序。计算2-3+4-5+6-7+8-9。。。。。直到100。计算结果。再减去101.

    我可以告诉你结果。也是-50.

    我改名字了

    注意!!!!!! 采纳答案为错误示范。正确的在下面呢。 注意!!!!!! 关于采纳答案的解释,在最最最最最下方点击第二页中。 希望别再误导同学了!

    2016-08-26 13:17:14

    共 6 条回复 >

  • 我改名字了
    2016-08-10 11:08:27

    从最后两个程序中 i++位置变化 结果也不同。

    得出结论。虽然本题中两种算法得出结果都是-50

    但是 结果是偶然的。

    老师之所以这么做 ,我想他是故意的,没有问题就不会有答案 。

    谢谢提问者,找出了问题  !!!!

  • 我改名字了
    2016-08-10 11:03:40

    #include<stdio.h>

    int main()

    {

        int sum=0;

        int i=1;

        int flag=1;

        while(i<=10)

        {

            i++;

            sum+=i*flag;

            flag*=-2;

        printf("i=%d\t",i);

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

        }

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

        return 0;

    }


  • 我改名字了
    2016-08-10 11:02:45

    #include<stdio.h>

    int main()

    {

        int sum=0;

        int i=1;

        int flag=1;

        while(i<=10)

        {

            sum+=i*flag;

            flag*=-2;

            i++;

        printf("i=%d\t",i);

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

        }

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

        return 0;

    }


    qq_悲伤可...

    学霸!

    2016-08-10 11:19:59

    共 1 条回复 >

  • 我改名字了
    2016-08-10 10:55:42

    #include<stdio.h>

    int main()

    {

        int sum=0;

        int i=1;

        int flag=1;

        while(i<=100)

        {

            i++;

            sum+=i*flag;

            flag*=-1;

        printf("i=%d\t",i);

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

        }

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

        return 0;

    }


  • 我改名字了
    2016-08-10 10:53:03

    #include<stdio.h>

    int main()

    {

        int sum=0;

        int i=1;

        int flag=1;

        while(i<=100)

        {

            sum+=i*flag;

            flag*=-1;

            i++;

        printf("i=%d\t",i);

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

        }

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

        return 0;

    }


  • 我改名字了
    2016-08-10 10:23:01

    我想明白了你们看看对不对。


  • 大学狗
    2016-08-09 17:05:15

    我在vs2013调试了下,结果都是-50,我和你考虑的一样,我觉得代码i++;应该放在flag*=-1;后。

    qq_悲伤可...

    多谢(^_^)∠※

    2016-08-10 11:17:53

    共 1 条回复 >

  • qq_悲伤可以自行处理_03427709
    2016-08-09 12:03:06

    57a9558e000143c505000203.jpg

    57a9558f000192d203700424.jpg

    凑三个字

  • 大学狗
    2016-08-08 22:06:30

    这是哪期的?额。。

    qq_悲伤可...

    发截图了​(*^__^*)

    2016-08-09 12:03:52

    共 1 条回复 >

  • 基尔
    2016-08-08 19:59:06

    ?不是这期问题啊

    我改名字了

    注意!!!!!! 采纳答案为错误示范。正确的在下面呢。 注意!!!!!! 关于采纳答案的解释,在最最最最最下方点击第二页中。 希望别再误导同学了!

    2016-08-26 13:18:06

    共 2 条回复 >

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926021 学习 · 20793 问题

查看课程

相似问题