-
這個問題有兩個關鍵點:一是如何確定水仙花的數量。
第二個是如何設定n位數字的範圍。
1. 水仙花的數量是指 n 位正整數。
n>=3),如果數字的冪之和與數字每個位的 n 次冪之和等於自身(例如,1 3 + 5 3 + 3 3 = 153),則該數字稱為水仙。因此,要判斷乙個數字是否是水仙花數字,關鍵是要得到每個位元上的數字,然後累加它們的n次方和,然後做出判斷。
每個位上的數字可以由餘數運算子獲得。
和分裂。 “完成。 為了方便重複使用,水仙花數判斷可以寫成乙個單獨的功能(**附上)。
2.設定n位數字的範圍可以完成10到n次方,例如,要檢測所有4位數字,可以設定乙個迴圈,從10的3次方到小於10的4次方開始,要檢測所有n位數字,可以使用for(i=(int)pow(10,n-1);i<(int)pow(10,n);i++) 迴圈。基於以上思路,**如下:
過程**] 包括控制台操作標頭檔案。
包括數學函式。
標頭檔案。 bool sx(int a) 水仙花數判斷函式。
int t=a,s=0,中間變數。
n=1;a有幾個數字(最少 1 位數字)。
while(t=t/10) n++;在中間變數 t 的幫助下,確定 a 有多少位數字。
if(n<3) return false;如果小於 3 位,則返回 false。
for(t=a;t;t=t 10) 到迴圈累積的位數的 n 次方。
s+=(int)round(pow(t%10,n));
return (s==a);} 關閉函式並返回比較結果。
int main() main 函式。
int i,n,a,b;迴圈變數和 n 位數字。
do{printf("請輸入乙個介於 3 到 7 之間的正整數:");輸入提示。
scanf("%d",&n);從鍵盤輸入 n
while(n<3||n>7);如果 n 未在 3-7 之間重新輸入。
a=(int)pow(10,n-1);設定 n 位數字的起點。
b=(int)pow(10,n);設定 n 位數字的終點。
printf("所有 %d 位的水仙花數量均為:",n);輸出提示。
for(i=a;i
-
同學,你剛學過C語言,建議在做題之前先學一點基礎。
-
/*low = 1
high = 9999
1是水仙花的數量。
1 的數字之和等於自身。
2 的數字之和等於自身。
3 的數字之和等於自身。
4 的數字之和等於自身。
5 的數字之和等於自身。
6 的數字之和等於自身。
7 的數字之和等於自身。
8 的數字之和等於自身。
9 的數字之和等於自身。
153是水仙花的數量。
370是水仙花的數量。
371是水仙花的數量。
407是水仙花的數量。
請按任意鍵繼續。 .
#include
#define n 100
int sxhs(int number, int *is)*is = (sum == number);
return (cube == number);
int main()
return 0;}
思路:要求乙個正整數n的位數,可以先定義乙個變數num,並初始化為0,將整數n依次除以10,直到為0,每除以10,變數num的個數就會加1,最後乙個num的值就是整數n的位數。 >>>More
乙個簡單的方法是使用 while 迴圈,除以 2 並取餘數,將餘數儲存在陣列中,最後以相反的順序輸出。