编写程序,输入两个正整数m和n(100≤m,n<1000),统计并输出m和n之间的水仙花数。要求,自定义并调用函数int flower(int num)判断其是否为水仙花数。输出格式要求:当m和n之间无水仙花数,则输出为“No”;否则依次输出各水仙花数。
时间: 2025-01-26 18:06:35 浏览: 37
水仙花数是指一个三位数,其各位数字立方之和等于该数本身。例如,153就是水仙花数,因为1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153。
首先,我们需要定义一个名为`flower`的函数,用于检查一个给定的整数是否是水仙花数:
```c
// 定义函数flower(),接收一个整数num,返回值为0(不是水仙花数)或1(是水仙花数)
int flower(int num) {
int digits[3], sum = 0;
// 将num分解成三个数字
while (num != 0) {
digits[2] = num % 10; // 最右边的数字
num /= 10;
if (digits[2] < 0 || digits[2] > 9) { // 数字不在0到9范围内,直接返回0
return 0;
}
sum += digits[2] * digits[2] * digits[2]; // 计算立方和
}
// 检查sum是否等于原数
return sum == num ? 1 : 0;
}
```
接下来,我们可以编写主程序来统计并输出m和n范围内的水仙花数:
```c
#include <stdio.h>
int main() {
int m, n, i;
printf("请输入两个正整数m和n(100 <= m, n < 1000): ");
scanf("%d %d", &m, &n);
if (m < 100 || n >= 1000) {
printf("输入范围错误,请重新输入。\n");
return 1;
}
for (i = m; i <= n; ++i) {
if (flower(i)) {
printf("%d ", i); // 输出水仙花数
}
}
// 如果没有找到水仙花数,输出"No"
if (i == m && !flower(m)) {
printf("No\n");
} else {
printf("\n");
}
return 0;
}
```
现在你可以运行这个程序,输入m和n的值,它会输出它们之间的所有水仙花数,如果没有则显示"No"。如果遇到任何疑问,可以问我相关的编程概念或代码细节。
阅读全文
相关推荐


















