C语言经典例24-分数累加和

本文介绍了一个分数序列的求和问题,通过分析序列规律,使用C语言实现了一个程序,该程序可以计算序列的前20项之和。最终的运行结果显示,前20项之和约为32.6603。

1 题目

有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。

2 分析

本题实质是要看出序列的规律,显而易见,规律就是处第一个数以外,后一个数的分子为前一个数的分子分母之和,后一个数的分母是上一个数的分子

3 实现

#include <stdio.h>

int main() {
    int t; // 临时变量
    double sum = 0; // 总和
    double a = 2, b = 1; // 初始变量
    for (int i = 1; i <= 20; i++) {
        sum = sum + a / b;
        t = a;
        a = a + b;
        b = t;
    }
    printf("%.4f\n", sum);  
}

4 运行结果

32.6603
以下是几种不同场景下C语言实现分数累加的代码示: ### 全是正分数相加 ```c #include <stdio.h> int main() { double sum = 0.0; int i = 0; for (i = 1; i <= 100; i++) { sum += 1.0/i; } printf("%lf\n", sum); return 0; } ``` 此代码实现了从1/1到1/100的正分数累加,将每次计算的分数累加到变量`sum`中,最后输出累加结果 [^2]。 ### 一正一负分数相加 ```c #include <stdio.h> int main() { int i = 0; double sum = 0; int flag = 1; for (i = 1; i <= 100; i++) { sum += flag*1.0/ i; flag = -flag; } printf("%lf", sum); return 0; } ``` 该代码实现了分数一正一负的累加,通过`flag`变量控制正负号,每次循环后改变`flag`的正负,从而实现正负交替累加 [^2]。 ### 分母奇数为正、偶数为负的分数相加 ```c #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int main() { int i, j; double sum = 0, a = 0, b = 0; for (i = 1; i <= 100; i = i + 2) { a = a + 1.0 / i; } for (j = 2; j <= 100; j = j + 2) { b = b + 1.0 / j; } sum = a - b; printf("%lf", sum); return 0; } ``` 此代码分别计算分母为奇数和偶数的分数和,最后用奇数分母分数和减去偶数分母分数和得到最终结果 [^1]。 ### 另一种分母奇数为正、偶数为负的分数相加实现 ```c #include <stdio.h> int main() { int i; double sum = 0.0; for (i = 1; i <= 100; i++) { if (i % 2 == 0) { sum -= 1.0 / i; } else { sum += 1.0 / i; } } printf("The sum is: %.2f\n", sum); return 0; } ``` 该代码通过判断分母的奇偶性,直接在循环中进行正负分数累加 [^4]。 ### 分数序列累加 ```c #include <stdio.h> int main() { int n; printf("输入项数 n: "); scanf("%d", &n); double a = 2.0, b = 1.0, sum = 0.0, temp; for (int i = 1; i <= n; i++) { sum += a / b; temp = a; a = a + b; b = temp; } printf("分数序列的前 %d 项和: %.5f\n", n, sum); return 0; } ``` 此代码计算特定分数序列的前`n`项和,通过循环不断更新分子分母的值并累加 [^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值