求一个三位数,其个位,十位,百位的阶乘的和为这个三位数,用C语言编写程序
时间: 2025-01-01 16:39:20 浏览: 13
在C语言中,你可以编写一个程序来寻找满足条件的三位数,即它的各位数字(个位、十位、百位)分别对应各自的阶乘并相加等于原数本身。这样的问题是需要一些循环控制和递归函数来解决的,因为我们需要生成每个数的每位数字并计算它们的阶乘。
下面是一个简单的示例程序:
```c
#include <stdio.h>
#include <math.h>
// 阶乘函数
int factorial(int n) {
if (n == 0 || n == 1)
return 1;
else
return n * factorial(n - 1);
}
// 主函数,遍历所有三位数,检查条件是否满足
int main() {
for (int num = 100; num <= 999; num++) {
int digits[3] = {num % 10, (num / 10) % 10, num / 100}; // 分割成个位、十位、百位
int sum = 0;
for (int i = 0; i < 3; i++)
sum += factorial(digits[i]);
// 如果各位阶乘之和等于原数,则打印出来
if (sum == num) {
printf("The number is: %d\n", num);
break;
}
}
return 0;
}
```
这个程序会从100开始到999,依次计算每一位的阶乘,并检查它们的总和是否等于原始的三位数。如果找到符合条件的数字,就立即停止并输出结果。
阅读全文