使用C语言求s=1!+2!+3!+…+n!
时间: 2023-09-09 20:07:21 浏览: 172
可以使用循环和递归两种方法来求s=1!+2!+3!+...+n!,以下是循环的实现方式:
```c
#include <stdio.h>
int main() {
int n, i, j, factorial = 1, sum = 0;
printf("请输入n的值:");
scanf("%d", &n);
for (i = 1; i <= n; i++) {
factorial *= i; // 计算i的阶乘
sum += factorial; // 累加阶乘和
}
printf("s=%d\n", sum);
return 0;
}
```
以上代码中,使用一个循环来计算1到n的阶乘,并且每次将阶乘值累加到sum变量中,最后输出sum的值即可。
相关问题
c语言求s=1!+2!+3!+...n!
以下是C语言求s=1!+2!+3!+...n!的代码:
```c
#include <stdio.h>
int main()
{
int n, i, j;
long long fact = 1, sum = 0;
printf("请输入一个正整数:");
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
fact = 1;
for (j = 1; j <= i; j++)
{
fact *= j;
}
sum += fact;
}
printf("1!+2!+3!+...+%d! = %lld\n", n, sum);
return 0;
}
```
运行结果:
```
请输入一个正整数:5
1!+2!+3!+...+5! = 153
```
用c语言高精度计算出 s= 1 ! + 2 ! + 3 ! + ⋯ + n ! S=1!+2!+3!+⋯+n!( n ≤ 50 n≤50)
以下是用C语言高精度计算出S的代码实现:
```c
#include <stdio.h>
#include <string.h>
#define MAX_N 50
#define MAX_LEN 1000
int main() {
int n;
scanf("%d", &n);
int s[MAX_LEN] = {0}; // 初始化s为0
s[0] = 1; // 初始值为1
for (int i = 1; i <= n; i++) {
int carry = 0; // 进位
for (int j = 0; j < MAX_LEN; j++) {
int tmp = s[j] * i + carry; // 计算当前位的值
s[j] = tmp % 10; // 取个位数
carry = tmp / 10; // 计算进位
}
}
int sum = 0;
for (int i = 0; i < MAX_LEN; i++) {
sum += s[i]; // 计算每一位的和
}
printf("%d\n", sum); // 输出结果
return 0;
}
```
阅读全文