C語言 PAT練習 水仙花數( T F

2021-10-03 09:46:54 字數 1353 閱讀 4291

演算法思路

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...