C语言输入两个整数m和n,两数之间以空格分开,且满足100≤m<n≤999,求出输入的两个整数的水仙花数,并按从小到大的顺序输出水仙花数这么想
时间: 2024-12-21 13:31:30 浏览: 68
在C语言中,要实现这个功能,你需要编写一段程序来接收用户输入的两个整数`m`和`n`,然后检查它们之间的数字是否是水仙花数。水仙花数是指一个三位数,其各位数字立方之和等于该数本身。例如,153是个水仙花数,因为1^3 + 5^3 + 3^3 = 153。
以下是基本步骤:
1. 首先,创建一个函数来检查一个数是否是水仙花数。
2. 然后,在主程序中循环遍历从`m`到`n`的所有三位数,调用上述函数。
3. 如果找到水仙花数,将其添加到结果列表中。
4. 得到所有水仙花数后,将它们按照升序排序并输出。
下面是一个简单的示例代码片段:
```c
#include <stdio.h>
#include <stdbool.h>
bool is_armstrong(int num) {
int digits[3], sum = 0;
while (num > 0) {
digits[2] = num % 10;
sum += digits[2]*digits[2]*digits[2];
num /= 10;
}
return sum == num;
}
int main() {
int m, n;
scanf("%d %d", &m, &n);
if (m >= 100 && m <= 999 && n >= 100 && n <= 999) {
// 初始化一个数组存储水仙花数
int* flowers = malloc(sizeof(int)*(n - m + 1));
int count = 0;
for (int i = m; i <= n; ++i) {
if (is_armstrong(i)) {
flowers[count++] = i;
}
}
// 对水仙花数排序
qsort(flowers, count, sizeof(int), compare_ints);
// 输出水仙花数
printf("水仙花数(从小到大):\n");
for (int i = 0; i < count; ++i) {
printf("%d ", flowers[i]);
}
free(flowers);
} else {
printf("请输入100到999范围内的整数。\n");
}
return 0;
}
// 用于排序的辅助函数
int compare_ints(const void* a, const void* b) {
return *(int*)a - *(int*)b;
}
```
阅读全文
相关推荐


















