C语言用for循环求 s=1!+ 2!+ 3!+ …+n!的值
时间: 2023-11-19 13:05:51 浏览: 214
以下是C语言用for循环求 s=1!+ 2!+ 3!+ …+n!的值的代码实现:
```c
#include <stdio.h>
int main() {
int n, i, j, m = 1, sum = 0;
printf("请输入n的值:");
scanf("%d", &n);
for (i = 1; i <= n; i++) {
m = 1;
for (j = 1; j <= i; j++) {
m *= j;
}
sum += m;
}
printf("s=%d\n", sum);
return 0;
}
```
该程序中,外层循环控制 i 的取值范围,内层循环控制计算 i 的阶乘。每次内层循环结束后,将计算出的 i 的阶乘加到 sum 中。最终输出 sum 的值即可。
相关问题
c语言用双重循环计算s=1!+2!
在C语言中,我们可以使用双重循环来计算阶乘的累加,比如求1! + 2!。阶乘是一个数的所有小于及等于它的正整数的积,例如1的阶乘是1(1! = 1),2的阶乘是2(2! = 2 * 1)。但是请注意,直接用双重循环计算大数的阶乘效率较低,因为每次内层循环都会将结果乘以前一次的结果,这可能导致溢出。通常我们会避免这种做法,如果需要计算大的阶乘,可以考虑使用递归或者第三方库提供的函数。
下面是一个简单的双重循环示例,用于演示如何计算,但这不是实际推荐的做法:
```c
#include <stdio.h>
// 非最优计算阶乘的方式,仅适用于较小的数字
long long factorial(int n) {
if (n == 0 || n == 1) return 1;
long long result = 1;
for (int i = 1; i <= n; ++i) {
result *= i;
}
return result;
}
int main() {
int outer = 1; // 可能的最大值是1,因为2的阶乘就会溢出
int inner = 1;
long long sum = 0;
while (outer <= 2) { // 循环到2
sum += factorial(outer); // 计算当前外层循环变量的阶乘并累加
outer++;
}
printf("1! + 2! = %lld\n", sum);
return 0;
}
```
c语言用双重循环计算s=1!+2!……+20!
在C语言中,计算从1到20的所有整数阶乘之和(即1! + 2! + ... + 20!),可以使用两个嵌套的for循环。首先要初始化变量s为0,并通过外部循环遍历从1到20的每个数,然后内部循环用于计算当前数的阶乘并累加到s上。以下是简单的示例代码:
```c
#include <stdio.h>
// 计算阶乘的辅助函数
unsigned long long factorial(int n) {
if (n == 0 || n == 1)
return 1;
else
return n * factorial(n - 1);
}
int main() {
unsigned long long s = 0; // 存储阶乘和的结果
int i;
for (i = 1; i <= 20; ++i) { // 外部循环,遍历1到20
s += factorial(i); // 累加阶乘
}
printf("1! + 2! + ... + 20! = %llu\n", s);
return 0;
}
```
在这个程序中,`factorial()` 函数递归地计算给定数值的阶乘,外部的for循环将这个过程应用于1到20的所有数字。
阅读全文