编写C语言程序,实现输出1到100范围内所有水仙花数的阶乘和,并保留两位小数。
时间: 2024-10-31 12:23:38 浏览: 16
在C语言中,计算水仙花数的阶乘和是一项涉及到循环、条件判断、数组、数学运算以及精确控制输出格式的任务。首先,我们需要了解水仙花数的定义,即一个三位数,其各位数字的立方和等于该数本身。接着,我们需要编写程序计算每个数字的阶乘,并累加这些阶乘值。为了保留两位小数,我们可以使用`printf`函数的格式化功能。
参考资源链接:[C语言编程:习题解答与水仙花数](https://wenku.csdn.net/doc/5gkwqgq4d8?spm=1055.2569.3001.10343)
由于单个整数类型可能无法存储较大的阶乘值,我们应当使用`long long int`类型来避免溢出。同时,计算阶乘时应确保不要进行不必要的乘法操作,以提高效率。最后,我们需要在输出时使用`%.2lf`格式化字符串来保留两位小数。
下面是一个示例代码,用于计算1到100内所有水仙花数的阶乘和,并保留两位小数输出:
```c
#include <stdio.h>
long long int factorial(int n) {
long long int fact = 1;
for (int i = 1; i <= n; i++) {
fact *= i;
}
return fact;
}
int main() {
double sum = 0.0;
for (int num = 100; num <= 999; num++) {
int digit1 = num / 100;
int digit2 = (num / 10) % 10;
int digit3 = num % 10;
if (digit1 * digit1 * digit1 + digit2 * digit2 * digit2 + digit3 * digit3 * digit3 == num) {
sum += (double)factorial(digit1) + factorial(digit2) + factorial(digit3);
}
}
printf(
参考资源链接:[C语言编程:习题解答与水仙花数](https://wenku.csdn.net/doc/5gkwqgq4d8?spm=1055.2569.3001.10343)
阅读全文