水仙花數是指一個n位數,它的每個位上的數字的n次冪之和等于它本身。例如,153是一個水仙花數,因為1的3次方+5的3次方+3的3次方等于153。
要解決C語言的水仙花數問題,可以使用循環和條件判斷來判斷每個數是否是水仙花數。以下是一種解決方案:
#include <stdio.h>
#include <math.h>
int main() {
int num, originalNum, remainder, n = 0, result = 0;
printf("輸入一個正整數:");
scanf("%d", &num);
originalNum = num;
// 計算輸入數字的位數
while (originalNum != 0) {
originalNum /= 10;
++n;
}
originalNum = num;
// 檢查是否為水仙花數
while (originalNum != 0) {
remainder = originalNum % 10;
result += pow(remainder, n);
originalNum /= 10;
}
if (result == num)
printf("%d 是水仙花數。\n", num);
else
printf("%d 不是水仙花數。\n", num);
return 0;
}
這段代碼中,首先通過循環計算輸入數字的位數。然后使用循環和取余運算符來逐位計算數字的n次冪之和。最后,通過條件判斷來確定結果是否等于原始輸入數字,從而確定是否為水仙花數。