用c语言解决小于n的所有水仙花数,每个水仙花数之间以英文逗号隔开
时间: 2024-11-05 12:35:02 浏览: 15
在 C 语言中,水仙花数是指一个三位数,其各位数字立方之和等于该数本身。例如,153 是水仙花数,因为 1^3 + 5^3 + 3^3 = 153。下面是一个简单的程序,用于找出小于给定整数 n 的所有水仙花数,并将它们以逗号分隔的形式输出:
```c
#include <stdio.h>
#include <stdbool.h>
bool is_armstrong(int num) {
int digits[4] = {0};
int sum = 0;
// 分离每位数字并计算立方和
for (int i = 0; num != 0; ++i, num /= 10) {
digits[i] = num % 10;
sum += digits[i] * digits[i] * digits[i];
}
return sum == num;
}
void find_water_lilies(int n) {
for (int i = 100; i < n && i <= 999; ++i) {
if (is_armstrong(i)) {
printf("%d, ", i);
}
}
}
int main() {
int n;
printf("Enter a number (less than or equal to 999): ");
scanf("%d", &n);
if (n > 999) {
printf("Invalid input! Please enter a number less than or equal to 999.\n");
return 0;
}
find_water_lilies(n);
printf("\n"); // 结束打印时删除最后一个逗号
return 0;
}
```
在这个程序中,`is_armstrong` 函数检查一个数是否是水仙花数,`find_water_lilies` 函数负责查找并打印符合条件的数。用户需要输入一个不大于 999 的整数 `n`。
阅读全文