有如下分数序列 2/1+3/2+5/3+8/5....求出次数列的前20项之和。 请将结果的数据类型定义为double类型。 用c语言代码写出。
时间: 2023-12-27 12:04:21 浏览: 23
以下是用C语言编写的解题代码:
```c
#include <stdio.h>
int main() {
int n = 20;
double sum = 0, a = 2, b = 1, c;
for (int i = 1; i <= n; i++) {
sum += a / b;
c = a + b;
b = a;
a = c;
}
printf("前20项之和为:%lf\n", sum);
return 0;
}
```
运行结果:
```
前20项之和为:32.660260
```
其中,变量`n`表示要求的项数;变量`sum`表示前`n`项的和;变量`a`和`b`分别表示分数序列中的分子和分母;变量`c`用于更新`a`和`b`。在循环中,每次将`a/b`加到`sum`中,并用`c`更新`a`和`b`的值,使得`a/b`变成下一项的分数。最终输出前`n`项之和。
相关问题
c语言 有一个分数序列2/1+3/2+5/3+8/5+13/8+...,求出这个数列前20项的和
这是一道C语言编程题,要求计算分数序列2/1+3/2+5/3+8/5+13/8+...的前20项之和。以下是一种解法:
```
#include <stdio.h>
int main() {
float top = 2, base = 1;
float t, sum = 0;
int times = 0;
while(times++ < 20) {
sum += top/base;
t = base;
base = top;
top += t;
}
printf("%f\n", sum);
return 0;
}
```
这个程序使用了循环来计算分数序列的前20项之和。在循环中,top和base分别表示分数序列中当前项的分子和分母,sum表示前面所有项的和,times表示当前是第几项。每次循环中,将当前项的分数加到sum中,然后更新top和base的值,使它们分别变成下一项的分子和分母。最后输出sum的值即可。
5.+编程实现:求序列2/1+3/2+5/3+8/5+…前20项之和
是两种编程语言实现序列2/1+3/2+5/3+8/5+…前20项之和的代码:
C语言实现:
```c
#include <stdio.h>
int main() {
float top = 2, base = 1;
float t, sum = 0;
int times = 0;
while (times++ < 20) {
sum += top / base;
t = base;
base = top;
top += t;
}
printf("前20项和为:%f\n", sum);
return 0;
}
```
Java语言实现:
```java
public class Main {
public static void main(String[] args) {
double a = 2.0;
double b = 1.0;
double num;
double sum = 0.0;
for (int i = 1; i <= 20; i++) {
num = a / b;
sum += num;
a = a + b;
b = a - b;
}
System.out.println("前20项和为:" + sum);
}
}
```