#include"stdio.h"
//这个程序确实可以完成求和的计算但是结果是不准确的
int main()
{
int i;
double s = 0;
for (i = 1; i <= 9; i++)
{
s = s + 1.0*i / (i + 1);
}
return 0;
}
//这个分数求和的准确性高
#define N 9
struct Rational
{
long r1, r2;//分子r1,分母r2
};
//求最大公约数
int gcd(int a, int b)
{
int i;
for (i = a < b ? a : b; i >= 1; i--)
{
if (a%i == 0 && b%i == 0)
{
break;
}
}
return i;
}
int main()
{
struct Rational x[N];
struct Rational result;
int i, t1, t2, t;
for (i = 0; i < N; i++)//用结构体数组存储数据
{
x[i].r1 = i + 1;
x[i].r2 = i + 2;
}
result = x[0];
for (i = 1; i < N; i++)
{
t1 = result.r1*x[i].r2 + result.r2*x[i].r1;//新的分子
t2 = result.r2*x[i].r2;//新的分母
t = gcd(t1, t2);
result.r1 = t1 / t;//约去最大公约数,简化分子
result.r2 = t2 / t;
}
printf("%ld/%ld\n", result.r1, result.r2);
return 0;
}
分数求和算法
最新推荐文章于 2022-11-06 13:24:05 发布