亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

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下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號