这个为什么不是输出1到100的和?而是 101??
匿名课官 核心会员 2015-11-21 20:48:33
2961 5 0

#include<stdio.h>

main()

{

int i=1;

while(i<=100)

{

i=i+1;

i++;

}

printf("和为%d\n",i);

}

这个为什么不是输出1到100的和?而是 101??


问题来自: while循环和do循环

共 5 个回答

    嘿嘿大人 一代宗师 3087天前

    因为你始终是在对i进行操作,当i=101的时候跳出while循环,所以输出i肯定是101咯;修改如下:

    #include<stdio.h>


    main()


    {


    int i=1,s=0;


    while(i<=100)


    {


    s+=i;


    i++;



    }


    printf("和为%d\n",s);


    }


    匿名课官 核心会员 3087天前

    必须要再定义一个变量吗?

    i=i+1;

    i++;


    为啥不可以累加到100?

    匿名课官 核心会员 3087天前

    回复 嘿嘿大人

    必须要再定义一个变量吗?

    i=i+1;

    i++;


    为啥不可以累加到100?


    嘿嘿大人 一代宗师 3087天前

    回复 匿名课官:必须再定义一个,因为你while循环的条件是i<=100,你把所有的都叠加到了i上,当i加到了101的时候就会跳出循环根本就不会往下面执行了

    嘿嘿大人 一代宗师 3087天前

    回复 匿名课官

    给你举个例子;

    当i=99的时候,按照你的语句执行

    i=i+1也就是i=99+1=100

    然后i++,i=101;

    然后返回到while(i<=100),这是i=101,明显是不成立的,所以跳出循环执行printf("和为%d\n",i);输出了i的值也就是101

您还没有登录,所以不能回复该问题
我要回复

  • 0

    点赞

  • 扫一扫分享朋友圈

    二维码

  • 分享

相关问题