c语言春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的: “水仙花数”是指一个三位数,它的各位数字的立方和等于其本身。现在要求输出所有在m和n范围内的水仙花数。 要求定义一个narcissus()函数判断一个整数n是否为水仙花数,其余功能在main()函数中实现,narcissus()函数的结构如下: int narcissus(int n) { //判断n是否为水仙花数, 若是函数返回1,否则返回0。 } 输入输出说明: 输入两个整数m和n(100<=m<=n<=999)。 输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等于m, 并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开; 如果给定的范围内不存在水仙花数,则输出no。 运行示例:(要求输入输出按运行示例格式实现) 输入: 100 120 输出: no 输入: 300 380 输出: 370 371
时间: 2023-12-14 07:38:25 浏览: 62
以下是实现该功能的代码:
```c
#include <stdio.h>
int narcissus(int n) {
int sum = 0, temp = n;
while (temp > 0) {
int digit = temp % 10;
sum += digit * digit * digit;
temp /= 10;
}
return sum == n;
}
int main() {
int m, n;
scanf("%d%d", &m, &n);
int flag = 0;
for (int i = m; i <= n; i++) {
if (narcissus(i)) {
flag = 1;
printf("%d ", i);
}
}
if (!flag) printf("no");
return 0;
}
```
首先,在函数`narcissus()`中,我们通过对给定整数进行逐位取余来计算它的各位数字的立方和。如果最终结果与原整数相等,则说明这是一个水仙花数,函数返回1,否则返回0。
在`main()`函数中,我们读入给定范围的左右边界m和n,并通过循环枚举范围内的所有整数,判断它们是否为水仙花数。如果是,我们打印出来,并将标志位flag设为1。最后,如果范围内没有水仙花数,则我们输出"no"。
阅读全文