输入一个区间,用C语言找出区间内的水仙花数
时间: 2023-05-31 10:02:26 浏览: 108
水仙花数是指一个n位正整数,其各位数字的n次方之和等于该数本身。例如,153是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。
以下是一个C语言程序,可以找出输入区间内的所有水仙花数:
```
#include <stdio.h>
#include <math.h>
int isNarcissistic(int num) {
int sum = 0, temp = num;
int digit = log10(num) + 1;
while (temp > 0) {
int remainder = temp % 10;
sum += pow(remainder, digit);
temp /= 10;
}
return (sum == num);
}
int main() {
int start, end;
printf("请输入区间的起始和结束数:");
scanf("%d %d", &start, &end);
printf("区间内的水仙花数为:");
for (int i = start; i <= end; i++) {
if (isNarcissistic(i)) {
printf("%d ", i);
}
}
printf("\n");
return 0;
}
```
程序中的isNarcissistic函数用来判断一个数是否为水仙花数。首先求出该数的位数digit,然后用循环依次取出每一位数字,计算各位数字的digit次方之和sum。最后判断sum是否等于该数本身,如果是则返回1,否则返回0。
在主函数中,先输入区间的起始和结束数,然后用for循环依次判断区间内的每一个数是否为水仙花数,如果是则输出该数。
阅读全文