在迴圈內部還是外部定義變數,差別是真的大啊!
阿新 • • 發佈:2018-12-12
“水仙花數”:是指一個 n 位數 ( n≥3 ),它的每個位上的數字的 n 次冪之和等於它本身。(例如:1^ 3 + 5^ 3 + 3^ 3 = 153)
來看一段求 “水仙花數” 的程式:
**在迴圈外部定義變數**
int main() { int i = 0; int count = 1; int sum = 0; int tmp = i; for(i=0; i<=999999; i++) { //判斷i是否為水仙花數 //1、判斷位數 while (tmp/10) { count++; tmp /= 10; } //2、計算每一位的次方和 tmp = i; while(tmp) { sum += pow(tmp%10, count); tmp /= 10; } //3、判斷 if (sum == i) printf("%d ", i); } system("pause"); return 0; }
輸出結果錯誤。 在迴圈外部定義變數:
int main() { int i = 0; for(i=0; i<=999999; i++) { //判斷i是否為水仙花數 //1、判斷位數 int count = 1; int sum = 0; int tmp = i; while (tmp/10) { count++; tmp /= 10; } //2、計算每一位的次方和 tmp = i; while(tmp) { sum += pow(tmp%10, count); tmp /= 10; } //3、判斷 if (sum == i) printf("%d ", i); } system("pause"); return 0; }
輸出結果正確。 放在迴圈外部就是初值,這個變數只會被賦值一次,而如果放在內部的話,每迴圈一次,就重新初始化一次,也就是說每次迴圈都對這個變數重新賦值了 。