用c语言,输出给定范围内的水仙花数。输入两个整数m和n(m,n是三位整数,且m<n),输出m到n之间的水仙花数,每个数后面有一个空格。如果m到n之间没有水仙花数,则输出“no”。
时间: 2024-03-07 16:49:28 浏览: 145
好的,以下是C语言代码实现:
```c
#include <stdio.h>
#include <math.h>
int isNarcissistic(int num) {
int sum = 0, temp = num, digit;
int n = (int)log10(num) + 1;
while (temp > 0) {
digit = temp % 10;
sum += pow(digit, n);
temp /= 10;
}
return num == sum;
}
int main() {
int m, n;
scanf("%d %d", &m, &n);
int found = 0;
for (int i = m; i <= n; i++) {
if (isNarcissistic(i)) {
printf("%d ", i);
found = 1;
}
}
if (!found) {
printf("no");
}
return 0;
}
```
代码思路解释:
首先定义一个 `isNarcissistic` 函数,用于判断一个数是否是水仙花数。该函数接收一个整数参数 `num`,并返回一个 `int` 类型的值。
在 `isNarcissistic` 函数内部,我们使用 `log10` 函数获取 `num` 的位数,并使用循环获取每一位的数字,计算每个数字的 n 次方之和。最后与原数字比较,如果相等则说明是水仙花数。
在 `main` 函数中,我们首先读取输入的 `m` 和 `n`,然后使用 `for` 循环遍历 `m` 到 `n` 之间的所有整数,调用 `isNarcissistic` 函数判断是否是水仙花数,如果是则输出该数,并将 `found` 标记为 1,表示找到了水仙花数。如果 `found` 仍然为 0,则说明没有找到水仙花数,输出 "no"。
阅读全文