分数序列和(函数和循环)

【问题描述】
编写函数double FUN(double n)计算以下分数序列的前n项之和,其中参数n由主函数输入,FUN函数的返回值在主函数中输出。
2/1 , 3/2 , 5/3 , 8/5 , 13/8 , 21/13 , …

【输入形式】 正整数n

【输出形式】 分数序列的和(浮点数,精确到小数点后4位)

【样例输入】 99

【样例输出】 160.4849

#include <iostream>
#include <iomanip>
using namespace std;

double FUN(double n);

int main()
{
    int n;
    cin >> n;
    cout << fixed << setprecision(4) << FUN(n) << endl;
    return 0;
}

double FUN(double n)
{
    double sum = 0, a = 1.0, b = 2.0, temp;
    for( int i=1; i<=n; ++i )
    {
        sum += b/a;
        temp = a;
        a = b;
        b += temp;
    }
    return sum;
}

转载于:https://www.cnblogs.com/yuzilan/p/10626137.html

在C语言中,如果你有一个分数序列,想要计算它们的并保留为整数,通常的做法是将每个分数转换成小数形式,然后相加。如果结果是一个有限小数,可以直接累加;如果是无限循环小数(即分数形式),你需要找到循环部分并确定重复多少次。 下面是一个简单的示例,假设你有分数数组`fracs[]`,长度为`n`,并且每个分数都是两个整数表示的分子除以分母的形式,例如 `frac = numerator / denominator`: ```c #include <stdio.h> // 计算分数序列,返回一个整数表示结果的小数形式 double sumOfFractions(int fracs[], int n) { double total = 0; for (int i = 0; i < n; i++) { total += (double)fracs[i].numerator / fracs[i].denominator; } return total; } int main() { // 假设有一个分数数组如 { {2, 3}, {4, 5}, {6, 7} } 等等 struct Fraction { int numerator, denominator; }; struct Fraction fractions[3] = {{2, 3}, {4, 5}, {6, 7}}; double sum = sumOfFractions(fractions, sizeof(fractions) / sizeof(fractions[0])); // 如果需要将结果转换为最接近的整数(向上取整) int rounded_sum = (sum > 0 ? (int)(ceil(sum)) : (int)(floor(sum))); // 使用天花板函数(ceil)或地板函数(floor) printf("Sum as an integer: %d\n", rounded_sum); return 0; } ``` 在这个例子中,`sumOfFractions` 函数计算了所有分数,然后`main` 函数将其转换为整数。如果需要保持精度,就不用进行这个转换。然而,如果需要的是最接近的整数,你可以使用 `ceil` 或 `floor` 函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值