while循環(huán)體內(nèi)語句執(zhí)行的順序
#include <stdio.h>
int main()
{
??? int i,sum=0;
??? i=1;
??? while( i<=100 ) //循環(huán)條件應(yīng)該是什么呢?
??? {
??????? sum=sum+i;? //這里是不是應(yīng)該改變循環(huán)變量的值
??i++;
??? }
??? printf("100以內(nèi)所有整數(shù)之和為:%d\n", sum);
??? return 0;
}
#include <stdio.h>
int main()
{
??? int i,sum=0;
??? i=1;
??? while( i<=100 ) //循環(huán)條件應(yīng)該是什么呢?
??? {
??i++;
??????? sum=sum+i;? //這里是不是應(yīng)該改變循環(huán)變量的值
??? }
??? printf("100以內(nèi)所有整數(shù)之和為:%d\n", sum);
??? return 0;
}
以上兩段代碼有什么區(qū)別嗎
2017-02-03
樓主可以把100改成3以內(nèi)整數(shù)求和,然后單步把i和sum的答案寫到紙上就明白了。
例如:
??? int sum=0;
?? ?int i=1;
?? ?while(i<=3)
?? ?{
?? ??? ?i++;
?? ??? ?sum=sum+i;
?? ??? ?//i++;
?? ?}
?? ?printf("3以內(nèi)所有整數(shù)和為:%d\n",sum);
正確輸入答案應(yīng)該是:6
此時,用i++在前,會得到錯誤的值,因為:
第一次循環(huán)(此時i=1,可以進(jìn)入循環(huán)):
i=2 (i=i+1?? i=2)
0+2=2 (sum = sum +i)
第二次循環(huán)(此時i=2,可以進(jìn)入循環(huán)):
i=3(i=i+1?? i=3)
2+3=5
第三次循環(huán)(此時i=3,可以進(jìn)入循環(huán)):
i=4
5+4=9
明顯比正確答案大,而且如樓上所述,還少算了i=1的情況。
正確寫法是i++在sum=sum+i后邊。從編程順序也可以理解,先求和,在遞增,再求和。
2016-11-06
2016-11-06