C语言分数相加求和

C语言中1/2-3/4+7/8-13/16 +21/32 -31/64+……求前20组想加的和,要代码
2025-05-05 22:20:58
推荐回答(2个)
回答1:

#include 
#include 

int fenzi(int i)  // 分子就是 1 3 7 13 21 31  他们之间的差是 2 4 6 8 10
{
    if (i <= 0)
        return 1;
    return i * 2 + fenzi(i-1);
}

int fenmu(int i)  // 分母就是 2 的 i + 1 次方
{
    return (int)pow(2, i+1);
}

int main()
{
    double sum = 0;
    int flag, x, y;
    for (int i = 0; i < 20; i++)
    {
        x = fenzi(i);
        y = fenmu(i);
        flag = pow(-1, i);  // + - 随i是奇偶变换
        printf("%c%d/%d", flag > 0 ? '+' : '-', x, y);
        sum += flag * x * 1.0 / y;
    }
    printf(" = %lf\n", sum);
    return 0;
}

回答2:

找到规律,代码并不难。供参考

#include 
int main()
{
double a, b, r;
int i;
int sign = 1;

a = 1;
b = 2;
r = 0;

for(i = 1; i <= 20; i ++)
{
r += a/b*sign;
a += i*2;
b *= 2;
sign*=-1;
}

printf("result = %lf\n", r);
}