C语言编写代码:水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=1 3 +5 3 +3 3 。 本题要求编写两个函数,一个判断给定整数是否水仙花数,另一个按从小到大的顺序打印出给定区间(m,n)内所有的水仙花数。
时间: 2023-10-23 16:20:21 浏览: 99
好的,以下是 C 语言实现的代码:
```c
#include <stdio.h>
#include <math.h>
int is_narcissistic_number(int num) {
int n = 0, temp = num, digit, sum = 0;
while (temp > 0) {
temp /= 10;
n++;
}
temp = num;
while (temp > 0) {
digit = temp % 10;
sum += pow(digit, n);
temp /= 10;
}
return sum == num;
}
void print_narcissistic_numbers(int m, int n) {
int num;
for (num = m; num <= n; num++) {
if (is_narcissistic_number(num)) {
printf("%d ", num);
}
}
printf("\n");
}
int main() {
int m, n;
printf("请输入区间[m,n]的起始和结束数值:");
scanf("%d %d", &m, &n);
print_narcissistic_numbers(m, n);
return 0;
}
```
`is_narcissistic_number()` 函数判断一个数是否为水仙花数,它的实现与 Python 版本的类似。`print_narcissistic_numbers()` 函数按从小到大的顺序打印出给定区间(m,n)内所有的水仙花数,使用 `for` 循环遍历区间内的每个整数,然后调用 `is_narcissistic_number()` 函数判断是否为水仙花数,如果是,就打印出来。`main()` 函数用于读取输入的区间起始和结束数值,并调用 `print_narcissistic_numbers()` 函数。
阅读全文