以下是用 C 语言实现计算 n 位水仙花数的代码: ```c #include <stdio.h> #include <math.h> // 判断一个数是否为 n 位水仙花数 int isNarcissisticNumber(int num, int n) { int originalNum = num; int digitSum = 0; int digit; while (num > 0) { digit = num % 10; digitSum += pow(digit, n); num /= 10; } if (digitSum == originalNum) { return 1; } else { return 0; } } // 计算所有 n 位水仙花数 void findNarcissisticNumbers(int n) { int start = pow(10, n - 1); int end = pow(10, n) - 1; for (int i = start; i <= end; i++) { if (isNarcissisticNumber(i, n)) { printf("%d ", i); } } } int main() { int n; printf("请输入位数 n(n>=3): "); scanf("%d", &n); if (n >= 3) { findNarcissisticNumbers(n); } else { printf("输入的位数不符合要求,请重新输入。\n"); } return 0; } ``` 额外需要注意的逻辑点: 1. 输入的位数 n 要确保大于等于 3 ,否则程序结果无意义。 2. 在计算每位数字的 n 次幂之和时,要注意数值可能会超出整数范围。 3. 注意循环的边界条件,确保能正确遍历所有可能的 n 位数。 [2024-12-07 23:42:48 | AI写代码神器 | 420点数解答]