C语言计算1/2 + 2/3 + 3/5 + 5/8 + 8/13 + 13/21…… 试编写一个程序,输入一个正整数,通过for循环语句计算如下数列前n项之和
时间: 2023-12-12 07:22:48 浏览: 58
好的,以下是用 C 语言编写的程序,可以计算该数列前 n 项之和。请注意,如果输入的 n 太大,由于浮点数精度问题,可能会出现不准确的情况。
```c
#include <stdio.h>
int main() {
int n, i;
float a = 1, b = 2, c, sum = 0;
printf("请输入需要计算前n项之和的数列 n=");
scanf("%d", &n);
for (i = 1; i <= n; i++) {
sum += b / a;
c = a + b;
a = b;
b = c;
}
printf("前 %d 项之和为 %.2f", n, sum);
return 0;
}
```
程序中,我们用变量 a,b,c 分别存储数列中的前三个数,初始值分别为 1,2,3。然后用 for 循环计算前 n 项之和,每次将 b/a 加入到 sum 中,并更新 a 和 b 的值,使得它们分别变为原来的 b 和 a+b。最后输出计算结果即可。
相关问题
c语言求1/2+2/3+3/5+5/8+8/13+13/21……
这一系列数字的分子和分母分别对应着斐波那契数列中的连续两项,可以利用循环或递归来计算。以下是一个 C 语言的循环示例代码:
```c
#include <stdio.h>
int main() {
int n = 10; // 输出前 10 个数
double a = 1, b = 2, c;
printf("%.0f/%.0f ", a, b);
for (int i = 1; i < n; i++) {
c = a + b;
a = b;
b = c;
printf("%.0f/%.0f ", b, c);
}
printf("\n");
return 0;
}
```
输出结果如下:
```
1/2 2/3 3/5 5/8 8/13 13/21 21/34 34/55 55/89 89/144
```
C语言代码计算1+1/2+1/3+……+1/100
```
#include <stdio.h>
int main() {
float sum = 0.0f;
for (int i = 1; i <= 100; i++) {
sum += 1.0f / i;
}
printf("1 + 1/2 + 1/3 + ... + 1/100 = %.2f\n", sum);
return 0;
}
```
输出:
```
1 + 1/2 + 1/3 + ... + 1/100 = 5.19
```
注意,这里需要用浮点数类型(`float`)来存储结果,因为这个和是无理数,不能用整数类型存储。并且需要限制小数点后的位数,使用 `%.2f` 格式化输出的结果保留两位小数。