编写一个C语言程序,求分数序列:1/2+2/3+3/5+5/8+8/13…的前20项和
时间: 2023-11-05 13:09:19 浏览: 115
以下是一个求解分数序列前20项和的C语言程序:
```c
#include <stdio.h>
int main() {
int i;
double a = 1, b = 2, sum = 0, tmp;
for (i = 1; i <= 20; i++) {
sum += b / a;
tmp = a + b;
a = b;
b = tmp;
}
printf("分数序列前20项和为:%.2f\n", sum);
return 0;
}
```
程序中使用了两个变量a和b来表示分子和分母,初始值分别为1和2。在循环中,计算当前项的值并加到sum变量中,然后更新a和b的值,使它们分别变为上一个分数的分母和分子之和。循环20次后,输出sum的值即为所求的分数序列前20项的和。
相关问题
编写一个C语言程序,求分数序列:1/2+2/3+3/5+5/8+8/13…的前30项整数和
编写一个C语言程序来计算这个著名的分数序列——希尔伯特系列(Harmonic series with denominators being Fibonacci numbers),也称为“Fibonacci Sum”,可以分为几个步骤:
1. 定义斐波那契数列:我们需要生成前两个数字(通常是0和1)以及后续的每一个Fibonacci数。
2. 创建分数序列:利用Fibonacci数作为分母,从第三项开始,每次添加当前的Fibonacci数。
3. 计算每项的分数:将当前的Fibonacci数除以前一项的总和得到当前分数。
4. 累加分数到总和:每次更新总和并保留整数部分。
下面是一个简单的C程序示例来完成这个任务:
```c
#include <stdio.h>
// 边界条件
#define LIMIT 30
// 斐波那契函数
int fibonacci(int n) {
if (n <= 1)
return n;
else
return fibonacci(n - 1) + fibonacci(n - 2);
}
// 求分数序列和
long long sum(int n) {
long long total = 0, prev_sum = 0, fib = 1;
for (int i = 2; i <= n; ++i) {
fib = fibonacci(i);
double fraction = (double)fib / prev_sum;
int int_fraction = fraction;
// 只累加整数部分,忽略分数部分
total += int_fraction;
// 更新上一阶段的总和
prev_sum += fib;
}
return total;
}
int main() {
printf("The sum of the first %d terms is: %lld\n", LIMIT, sum(LIMIT));
return 0;
}
```
当你运行此程序时,它会输出前30项希尔伯特序列的整数和。注意,由于浮点数精度问题,这里的分数部分会被舍去,只保留整数值。
编写一个c语言程序,求下列分数序列的前20项之和:2/1+3/2+5/3+8/5+13/8+
```
#include <stdio.h>
int main() {
int i;
double a = 2, b = 1, c, sum = 0;
for (i = 1; i <= 20; i++) {
sum += a / b;
c = a;
a = a + b;
b = c;
}
printf("前20项之和为:%.2f\n", sum);
return 0;
}
```
运行结果:
```
前20项之和为:32.66
```
阅读全文