演算法思路
1、當輸入 n 位數時對所求數值劃定範圍並從小到大判斷數值是否符合要求, 例如當 n = 3 時,範圍為 100 -999 之間;
2、分別取不同位的數值,進行 n 次冪運算;
3、比較運算結果是否合理,進行輸出。
錯誤**:
// 水仙花數
#include
intmain()
d=c;
while
(csum+
=f;if
(sum==c)
f=1;
} sum=0;
c++; d=c;
}return0;
} **輸出:
please input number(3
-8):
3 水仙花數為125
水仙花數為153
水仙花數為216
水仙花數為370
水仙花數為371
水仙花數為407
水仙花數為729
----
----
----
----
----
----
----
----
process exited after 22.57 seconds with return value 0
請按任意鍵繼續.
.
**分析:sum+=f; if(sum==c)
while
(csum+
=g;}
if(sum == c)
c++;}
} **輸出:
3153
370371
407--
----
----
----
----
----
----
----
-- process exited after 22.07 seconds with return value 0
請按任意鍵繼續.
..
**分析:
當輸入整數字數 n 時首先進行轉換成該整數字數下的最下值,然後對最小值進行取餘後運算得到每位的 n 次冪,然後累加結果並比較當前數值是否相同。
總結
錯誤程式的原因在於if(sum==c)
語句寫在了取餘運算迴圈的內部,這就導致了即使在取餘運算未結束時,當小於 n 位餘數滿足 n 次冪的結果相加和等於運算數值,即使不是滿足結果也會強行輸出運算數值。
當程式存在多重迴圈時,一定要理清楚迴圈單個迴圈實現的意義,還有就是迴圈類似於函式,在迴圈內部定義的變數,在迴圈外部便不會存在。
C語言 PTA練習 水仙花數
水仙花數是指乙個n位正整數 n 3 它的每個位上的數字的n次冪之和等於它本身。例如 153 13 53 33 本題要求編寫兩個函式,乙個判斷給定整數是否水仙花數,另乙個按從小到大的順序列印出給定區間 m,n 內所有的水仙花數。函式介面定義 int narcissistic int number vo...
c語言 水仙花數
1.在螢幕上輸出以下圖案 2.求出0 999之間的所有 水仙花數 並輸出。水仙花數 是指乙個三位數,其各位數字的立方和確好等於該數本身,如 153 1 5 3?則153是乙個 水仙花數 在數論中,水仙花數 narcissistic number 也稱為自戀數 自冪數 阿姆斯壯數或阿姆斯特朗數 arm...
C 水仙花數
include include using namespace std void divide int,int int int void main int hun 0,ten 0,one 0 for int i 100 i 999 i divide i,hun,ten,one if i pow hu...