水仙花数是一指一个 n 位的正整数(),其各位上的数字的 n 次幂之和等于它本身, 如。求出100~999所有的水仙花数并输出。
分析:
可以按照以下步骤进行:
-
首先,定义一个函数来判断一个数是否为水仙花数。函数的输入参数为一个整数,返回值为布尔类型(true或false)。
-
在该函数中,将输入的整数分解为个位、十位和百位上的数字,并计算各位数字的n次幂之和。
-
判断计算得到的和是否等于原始输入的数,如果相等则返回true,否则返回false。
-
在主函数中,使用循环遍历100~999之间的所有数。
-
对于每个数,调用判断函数进行判断,如果返回true,则输出该数。
代码如下:
#include <stdio.h>
#include <math.h>
bool isArmstrong(int num, int n) {
int sum = 0;
int temp = num;
while (temp > 0) {
int digit = temp % 10;
sum += pow(digit, n);
temp /= 10;
}
if (sum == num) {
return true;
} else {
return false;
}
}
int main() {
int n = 3; // 指定n的值为3
for (int i = 100; i <= 999; i++) {
if (isArmstrong(i, n)) {
printf("%d\n", i);
}
}
return 0;
}
结果如下: