C语言:计算1!+2!+……+n! 的值,n值由键盘输入。
时间: 2023-11-24 22:51:32 浏览: 57
以下是C语言计算1!+2!+……+n!的代码实现:
```c
#include <stdio.h>
int main() {
int i = 0; //循环变量
int n = 0; //输入n
int ret = 1; //把每个数的阶乘计算后赋值给该变量,因为0乘任何数都为0,所以初始化为1。
int sum = 0; //外循环后将各个数的阶乘相加后赋值给该值,作为最终结果。
//输入:
scanf("%d", &n);//记得使用取地址符:&
//实现代码:
for (i = 1; i <= n; i++) //外循环:实现阶乘相加,相加到 n!
{
ret = ret * i;//依次相乘再赋值给变量ret
sum += ret; //将各数的阶乘相加后赋给该值
}
//打印:
printf("%d\n", sum);
return 0;
}
```
相关问题
C语言计算1!+2!+……+n! 的值,n值由键盘输入。
可以使用循环结构和递归两种方法来计算1!+2!+……+n! 的值。
1. 循环结构方法:
首先需要定义一个变量sum来存储阶乘和,然后使用for循环从1到n依次计算每个数的阶乘,并将其加到sum中。具体代码如下:
```
#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 = 1;
for (j = 1; j <= i; j++) {
factorial *= j;
}
sum += factorial;
}
printf("1!+2!+...+%d!的值为:%d\n", n, sum);
return 0;
}
```
2. 递归方法:
递归方法是通过函数调用自身来实现的。首先需要定义一个递归函数factorial来计算每个数的阶乘,然后在主函数中使用for循环依次调用该函数,并将其返回值加到sum中。具体代码如下:
```
#include <stdio.h>
int factorial(int n) {
if (n == 0 || n == 1) {
return 1;
} else {
return n * factorial(n - 1);
}
}
int main() {
int n, i, sum = 0;
printf("请输入一个正整数n:");
scanf("%d", &n);
for (i = 1; i <= n; i++) {
sum += factorial(i);
}
printf("1!+2!+...+%d!的值为:%d\n", n, sum);
return 0;
}
```
用C语言写求1!+2!+……+10!的值
下面是用C语言写求1!+2!+……+10!的值的代码:
```c
#include <stdio.h>
int main() {
int i = 0;
int result = 1;
int sum = 0;
for (i = 1; i < 11; i++) {
result *= i;
sum += result;
}
printf("1!+2!+3!+……+10!:%d", sum);
return 0;
}
```
其中,我们使用了for循环来计算1!+2!+……+10!的值,具体实现方式是:在每次循环中,我们先计算出当前循环变量i的阶乘,然后将其加到sum中,最后输出sum的值即可。
如果要编写一个函数来实现这个功能,可以参考下面的代码:
```c
#include <stdio.h>
int fun(int n) {
int i = 0;
int result = 1;
int sum = 0;
for (i = 1; i <= n; i++) {
result *= i;
sum += result;
}
return sum;
}
int main() {
int n = 0;
printf("请输入n的值:");
scanf("%d", &n);
printf("1!+2!+3!+……+%d!:%d", n, fun(n));
return 0;
}
```
在这个代码中,我们首先定义了一个名为fun的函数,该函数接受一个整数参数n,返回1!+2!+……+n!的值。在函数内部,我们使用了和之前相同的方法来计算1!+2!+……+n!的值。在主函数中,我们通过scanf函数从键盘读入n的值,然后调用fun函数计算1!+2!+……+n!的值,并输出结果。