c语言用静态变量计算1! + 2! + 3! + … + n!。
时间: 2023-11-22 08:05:24 浏览: 143
以下是使用静态变量计算1! + 2! + 3! + … + n!的C语言代码:
```c
#include <stdio.h>
long f(int n);
int main() {
int n;
long sum = 0;
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
sum += f(i);
}
printf("1! + 2! + 3! + ... + %d! = %ld\n", n, sum);
return 0;
}
long f(int n) {
static long m = 1;
return m *= n;
}
```
相关问题
用定义子函数的方式,编程计算1!+2!+3!+ …+10!的值
以下是C语言的代码实现,定义了一个函数fact()来计算阶乘,然后在主函数中循环调用fact()函数来计算1!+2!+3!+ …+10!的值,并输出结果。
```c
#include <stdio.h>
double fact(int i); // 声明函数fact()
int main() {
int i;
double sum = 0; // 注意要使用double类型
for (i = 1; i <= 10; i++) {
sum += fact(i); // 累加每个阶乘的值
}
printf("%.6f\n", sum); // 输出结果,保留6位小数
return 0;
}
double fact(int i) {
static int j = 1; // 静态变量,只初始化一次
j *= i; // 计算阶乘
return j;
}
```
C语言求1! +2! .....+5!(用三种方法实现:一重循环、函数、静态变量)
以下是三种方法的实现:
### 方法一:一重循环
```c
#include <stdio.h>
int main() {
int sum = 0;
int fac = 1;
for(int i = 1; i <= 5; i++) {
fac *= i;
sum += fac;
}
printf("1! + 2! + ... + 5! = %d\n", sum);
return 0;
}
```
### 方法二:函数
```c
#include <stdio.h>
int factorial(int n) {
if(n <= 1) {
return 1;
}
return n * factorial(n-1);
}
int main() {
int sum = 0;
for(int i = 1; i <= 5; i++) {
sum += factorial(i);
}
printf("1! + 2! + ... + 5! = %d\n", sum);
return 0;
}
```
### 方法三:静态变量
```c
#include <stdio.h>
int main() {
int sum = 0;
static int fac = 1; // 静态变量
for(int i = 1; i <= 5; i++) {
fac *= i;
sum += fac;
}
printf("1! + 2! + ... + 5! = %d\n", sum);
return 0;
}
```
阅读全文