春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的: “水仙花数”是指一个三位数,它的各位数字的立方和等于其本身。现在要求输出所有在m和n范围内的水仙花数。 要求定义一个narcissus()函数判断一个整数n是否为水仙花数,其余功能在main()函数中实现,narcissus()函数的结构如下: int narcissus(int n) { //判断n是否为水仙花数, 若是函数返回1,否则返回0。 } 输入输出说明: 输入两个整数m和n(100<=m<=n<=999)。 输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等于m, 并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开; 如果给定的范围内不存在水仙花数,则输出no。
时间: 2023-12-14 20:35:49 浏览: 39
以下是实现题目要求的完整代码:
```python
#include <stdio.h>
#include <math.h>
int narcissus(int n) {
int sum = 0;
int temp = n;
while (temp > 0) {
int digit = temp % 10;
sum += pow(digit, 3);
temp /= 10;
}
if (sum == n) {
return 1;
} else {
return 0;
}
}
int main() {
int m, n;
scanf("%d %d", &m, &n);
int flag = 0;
for (int i = m; i <= n; i++) {
if (narcissus(i)) {
printf("%d ", i);
flag = 1;
}
}
if (!flag) {
printf("no");
}
return 0;
}
```
程序中定义了一个narcissus()函数,用于判断一个整数是否为水仙花数。该函数的实现过程是:先通过while循环将n的每一位数字的立方和累加起来,再判断是否等于n,若相等则返回1,否则返回0。
在主函数main()中,首先输入两个整数m和n,然后从m到n遍历每个整数,如果该整数是水仙花数,则输出它,并将flag标志置为1。最后,如果flag仍然为0,则表示在给定范围内不存在水仙花数,输出"no"即可。
需要注意的是,求一个数的每一位数字可以使用while循环和取模运算实现,例如:
```python
int temp = n;
while (temp > 0) {
int digit = temp % 10;
// 处理该位数字
temp /= 10;
}
```
另外,求一个数的立方可以使用pow()函数实现,例如:
```python
int digit = temp % 10;
sum += pow(digit, 3);
```
需要在程序开头添加math.h头文件才能使用pow()函数。