用c语言for循环做一个求1+1/2+1/3+ …… +1/n累加和
时间: 2023-09-04 16:07:21 浏览: 218
好的,下面是一个用 C 语言 for 循环实现求 1+1/2+1/3+ ... +1/n 的累加和的示例代码:
```c
#include <stdio.h>
int main() {
int n;
double sum = 0.0;
printf("请输入 n 的值:");
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
sum += 1.0 / i;
}
printf("1+1/2+1/3+...+1/n 的和为:%.6lf", sum);
return 0;
}
```
在程序中,我们先定义了变量 `n` 表示累加的项数,变量 `sum` 表示累加的结果。接下来,通过 `scanf` 函数获取用户输入的 `n` 值。然后,我们使用 for 循环从 1 到 `n` 遍历每一项,并将它们累加到 `sum` 变量中。最后,使用 `printf` 函数输出累加和的值。
需要注意的是,我们在计算每一项时使用 `1.0 / i` 而不是 `1 / i`。这是因为在 C 语言中,整数除法会向下取整,而浮点数除法不会。所以,如果我们使用 `1 / i`,那么所有的结果都会被取整为 0,从而导致计算结果错误。
相关问题
输入一个整数n,求1/1+1/2+1/3+……+1/n的累加和。
以下是两种Java和C语言的实现方法:
1.Java实现方法:
```java
public double getNum(int n){
double sum = 0.0;
if (n <= 0) {
System.out.println("请输入正整数");
} else {
for (int i =1; i <=n ; i++) {
sum += (double)1.0/i;
}
}
return sum;
}
```
2.C语言实现方法:
```c
#include <stdio.h>
int main() {
int i, n;
double s;
i = 1;
s = 0;
printf("请输入一个正整数(赋给n):");
scanf("%d", &n);
while (i <= n) {
s = s + 1.0 / i;
i++;//每次循环后加1
}
printf("%f\n",s);
return 0;
}
```
利用c语言的递推函数求0!+1!+1/2!+1/3!+……1/n!?
利用C语言的递推函数求0!+1!+1/2!+1/3!+……1/n!的方法如下:
首先,我们需要定义一个递归函数来计算阶乘。假设这个函数名为factorial,它接受一个整数参数n,并返回n的阶乘。
```c
int factorial(int n) {
if (n == 0 || n == 1) {
return 1;
} else {
return n * factorial(n - 1);
}
}
```
接下来,我们可以使用一个循环来计算0!+1!+1/2!+1/3!+……1/n!的和。假设n是给定的整数,我们可以定义一个变量sum来保存和的值,并使用一个循环从0到n依次计算每一项的值并累加到sum中。
```c
int n = 10; // 假设n为10
double sum = 0.0;
for (int i = 0; i <= n; i++) {
sum += 1.0 / factorial(i);
}
```
最后,我们可以输出sum的值。
```c
printf("0!+1!+1/2!+1/3!+……1/n!的值为:%f\n", sum);
```