C语言:分数求和

【问题描述】分数包含分子分母两项,定义一个有关分数的结构体类型,写一个函数来计算两分数之和,结果仍然为分数类型,注意约分。再编写main函数来输入两分数,调用函数求和,再输出两分数的和。

【输入形式】
【输出形式】
【样例输入输出】
please enter the fenzi,fenmu of two complex:
1 8
3 8
the result is 1/2
【样例说明】1/8+3/8=4/8 约分后为1/2

//结构定义中包含两个成员,分子和分母
struct fraction
{
int up, down;/*分子和分母*/
};

/*
相加算法的核心是找两个分母的最小公倍数和结果分子分母的最大公约数,分别单独函数来求
*/
int pubtime(int, int);//最小公倍数
int pubsub(int, int);//最大公约数,可用辗转相除法求,挺经典的一个方法。

/********分数相加********/
fraction add(fraction f1, fraction f2)
{
fraction result;
result.down = pubtime(f1.down, f2.down);
result.up = f1.up * result.down / f1.down + f2.up * result.down / f2.down;
int n = pubsub(result.up, result.down);
result.up /= n; result.down /= n;
return result;
}

int pubtime(int n1, int n2)
{
int n = pubsub(n1, n2);
return n1 * n2 / n;
}
int pubsub(int n1, int n2)
{
int r = n1;
if(n2 > n1)
r = n1, n1 = n2, n2 = r;
do
{ /*辗转相除*/
r = n1 % n2;
if(r == 0) break;
n1 = n2; n2 = r;
}while(true);
return n2;
}

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网