C编写程序,求1!+2!+3!+…+20!的值 ,用double类型的变量存储该值
时间: 2024-10-19 08:11:55 浏览: 74
在C语言中,计算阶乘通常不是直接的任务,因为对于较大的数,阶乘的结果可能会超出`int`类型的范围,导致溢出。因此,我们需要使用`long long`或者`double`类型来存储结果。这里我们使用`double`来存储,并通过循环计算阶乘。
```c
#include <stdio.h>
double factorial(int n) {
if (n == 0 || n == 1)
return 1.0; // 阶乘的基本情况
else
return n * factorial(n - 1); // 递归计算阶乘
}
int main() {
double result = 0.0;
for (int i = 1; i <= 20; ++i) {
result += factorial(i);
}
printf("1! + 2! + 3! + ... + 20! = %.6f\n", result);
return 0;
}
```
在这个程序中,我们定义了一个名为`factorial`的递归函数来计算阶乘,然后在主函数里将从1到20的所有阶乘相加,最后用`printf`输出结果。
相关问题
编写C语言程序,计算并输出1!+2!+3!+...+10!的值
下面是计算并输出1!+2!+3!+...+10!的C语言程序:
```c
#include <stdio.h>
int main() {
int i, j;
double sum = 0, fac = 1;
for (i = 1; i <= 10; i++) {
fac *= i;
sum += fac;
}
printf("1!+2!+3!+...+10!=%.0f\n", sum);
return 0;
}
```
程序中使用了for循环来计算1!+2!+3!+...+10!的值,其中变量fac用来存储当前的阶乘值,变量sum用来存储前面所有阶乘的和。最后使用printf函数输出结果。
编写C语言函数计算N!,调用该函数计算下式的值: 变量 S=1+1/(1+4!)+1/(1+4!+7!)+···+1/(1+4!+7!+…+19!)
以下是C语言函数计算N!的代码:
```c
int fac(int n) //阶乘函数
{
int i = 0;
int y = 1; //用来存返回值
if (0 == n || 1 == n) {
return 1;
} else {
for (i = 2; i <= n; i++) {
y *= i;
}
return y;
}
}
```
以下是调用该函数计算S的代码:
```c
#include <stdio.h>
#include <stdlib.h>
int fac(int n) //阶乘函数
{
int i = 0;
int y = 1; //用来存返回值
if (0 == n || 1 == n) {
return 1;
} else {
for (i = 2; i <= n; i++) {
y *= i;
}
return y;
}
}
double sum(int n) //求和函数
{
int i = 0; //循环变量
double sum = 0; //和
int temp = 1; //用来存储1+4!+7!+...+19!
for (i = 1; i <= n; i++) {
temp += fac(3 * i - 2); //计算1+4!+7!+...+19!
sum += 1.0 / fac(temp); //计算1/(1+4!+7!+...+19!)
}
return sum;
}
int main()
{
int n = 0;
printf("请输入n:>");
scanf("%d", &n);
printf("sum = %lf\n", sum(n));
system("pause");
return 0;
}
```
阅读全文
相关推荐
















