编写程序实现以下功能,用户输入两个三位数a,b(b>a),程序计算并输出[a,b]间所有的水仙花数,C语言
时间: 2024-05-01 15:24:01 浏览: 116
以下是实现以上功能的 C 语言代码:
```c
#include <stdio.h>
// 计算一个数的位数
int getNumLength(int num) {
int len = 0;
while (num > 0) {
len++;
num /= 10;
}
return len;
}
// 计算一个数的每一位的立方和
int calcNarcissisticNum(int num) {
int sum = 0;
int len = getNumLength(num);
int temp = num;
while (temp > 0) {
int digit = temp % 10;
sum += pow(digit, len);
temp /= 10;
}
return sum;
}
int main() {
int a, b;
printf("请输入两个三位数a,b(b>a):\n");
scanf("%d%d", &a, &b);
printf("%d到%d之间的所有水仙花数为:\n", a, b);
for (int i = a; i <= b; i++) {
if (i == calcNarcissisticNum(i)) {
printf("%d\n", i);
}
}
return 0;
}
```
程序中使用了两个函数,`getNumLength` 用于计算一个数的位数,`calcNarcissisticNum` 用于计算一个数的每一位的立方和。
在 `main` 函数中,首先让用户输入两个三位数 `a` 和 `b`,然后使用 `for` 循环遍历 `[a,b]` 的每一个数,对于每一个数,如果它等于它的每一位的立方和,就输出该数。
阅读全文