(1)输入2个正整数m和n(1<=m,n<=1000),输出m到n之间的所有水仙花数。水仙花数是指各位数字的立方和等于其自身的数。 要求定义并调用函数is(number)判断 number 的各位数字之立方和是否等于其自身c语言
时间: 2024-02-24 16:53:06 浏览: 27
好的,以下是 C 语言的代码实现:
```c
#include <stdio.h>
#include <math.h>
// 判断一个数是否是水仙花数
int is_narcissistic_number(int number) {
int sum_of_cubes = 0, digit;
int n = log10(number) + 1; // 获取数字的位数
for (int i = 0; i < n; i++) {
digit = number % 10; // 取出最后一位数字
sum_of_cubes += pow(digit, n); // 计算立方和
number /= 10; // 去掉最后一位数字
}
return sum_of_cubes == number;
}
// 输出m到n之间的所有水仙花数
void print_narcissistic_numbers(int m, int n) {
for (int number = m; number <= n; number++) {
if (is_narcissistic_number(number)) {
printf("%d ", number);
}
}
}
// 测试
int main() {
print_narcissistic_numbers(100, 999);
return 0;
}
```
以上代码中,`is_narcissistic_number` 函数用来判断一个数是否是水仙花数。它首先使用 `log10` 函数获取数字的位数,然后循环取出每个数字,计算它们的立方和。最后,如果这个立方和等于这个数本身,就返回 1,否则返回 0。
`print_narcissistic_numbers` 函数用来输出 m 到 n 之间的所有水仙花数。它遍历 m 到 n 之间的每个数,如果这个数是水仙花数,就输出它。
最后,我们在 `main` 函数中调用 `print_narcissistic_numbers(100, 999)` 来输出 100 到 999 之间的所有水仙花数。