c语言输入描述 两个正整数a � 、b � (100≤a≤b≤999 100 ≤ � ≤ � ≤ 999 )。 输出描述 在一行里输出闭区间[a,b] [ � , � ] 内的所有水仙花数,多个水仙花数按从小到大的顺序输出,中间用空格隔开,行末不允许有多余的空格。如果区间内没有水仙花数,那么输出NO
时间: 2024-01-29 22:04:42 浏览: 69
以下是基于C语言的实现:
```c
#include <stdio.h>
#include <math.h>
// 判断一个数是否为水仙花数
int isNarcissistic(int num) {
int sum = 0;
int temp = num;
int digit = (int)log10(num) + 1; // 获取数字位数
while (temp > 0) {
int remainder = temp % 10;
sum += pow(remainder, digit);
temp /= 10;
}
return sum == num;
}
int main() {
int a, b;
scanf("%d %d", &a, &b);
int flag = 0; // 标志是否有水仙花数
for (int i = a; i <= b; i++) {
if (isNarcissistic(i)) {
flag = 1;
printf("%d ", i);
}
}
if (!flag) {
printf("NO");
}
return 0;
}
```
首先定义了一个函数 `isNarcissistic` 用于判断一个数是否为水仙花数。主要思路是先获取数字的位数,然后对每一位的数字进行求和,最后判断是否等于原数。
在主函数中,先读取输入的两个数,然后遍历区间内的每一个数,判断是否为水仙花数,如果是则输出,并将标志 `flag` 设为 1。最后如果 `flag` 仍为 0,则输出 "NO"。
阅读全文