c语言输出所有的水仙花数。所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如,153是水仙花数,因为153=13+53+33
时间: 2024-11-13 16:18:20 浏览: 26
在C语言中,可以编写一个循环来找出所有3位数范围内的水仙花数。这里有一个简单的函数可以完成这个任务:
```c
#include <stdio.h>
#include <stdbool.h>
bool is narcissistic(int num) {
int digits[3]; // 用于存储每一位数字
int sum = 0;
// 将数字分解成各个位数
while (num > 0) {
digits[2] = num % 10; // 最低位
num /= 10;
// 计算各位数的立方并累加
for (int i = 0; i <= 2; i++) {
sum += pow(digits[i], 3);
}
}
// 如果所有位数的立方和等于原数,返回true
return sum == num;
}
// 输出水仙花数
void print_narcissistic_numbers() {
for (int i = 100; i < 1000; i++) { // 只考虑三位数
if (is_narcissistic(i)) {
printf("%d ", i);
}
}
}
int main() {
print_narcissistic_numbers();
return 0;
}
```
在这个程序中,我们定义了一个名为`is_narcissistic`的函数,它接受一个整数作为输入,检查其是否满足水仙花数的条件。`print_narcissistic_numbers`函数则遍历3位数范围内的所有数,并调用`is_narcissistic`函数来找到水仙花数。
注意:由于水仙花数只存在于3位数内,所以这里的循环范围是100到999。
阅读全文