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

while循环体内语句执行的顺序

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


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

以上两段代码有什么区别吗

正在回答

3 回答

楼主可以把100改成3以内整数求和,然后单步把i和sum的答案写到纸上就明白了。

例如:

    int sum=0;
    int i=1;
    while(i<=3)
    {
        i++;
        sum=sum+i;
        //i++;
    }
    printf("3以内所有整数和为:%d\n",sum);

正确输入答案应该是:6

此时,用i++在前,会得到错误的值,因为:

第一次循环(此时i=1,可以进入循环):

i=2 (i=i+1   i=2)
0+2=2 (sum = sum +i)
第二次循环(此时i=2,可以进入循环):
i=3(i=i+1   i=3)

2+3=5
第三次循环(此时i=3,可以进入循环):
i=4
5+4=9

明显比正确答案大,而且如楼上所述,还少算了i=1的情况。

正确写法是i++在sum=sum+i后边。从编程顺序也可以理解,先求和,在递增,再求和。


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

#include <stdio.h> 
int main() 
{ 
    int i,sum=0; 
    i=1; 
    while( i<100 ) //循环条件应该是什么呢?(100以内的数是从1~99,不包含100. ) 
    { 
        i++;//从这里已经改变i的值了,下面已经开始从2开始计算了,这样就少算了1的值了
        sum=sum+i;  //这里是不是应该改变循环变量的值
    } 
    printf("100以内所有整数之和为:%d\n", sum); 
    return 0; 
}


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


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

举报

0/150
提交
取消

while循环体内语句执行的顺序

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