C语言:分数求和

【问题描述】分数包含分子分母两项,定义一个有关分数的结构体类型,写一个函数来计算两分数之和,结果仍然为分数类型,注意约分。再编写main函数来输入两分数,调用函数求和,再... 【问题描述】分数包含分子分母两项,定义一个有关分数的结构体类型,写一个函数来计算两分数之和,结果仍然为分数类型,注意约分。再编写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
展开
 我来答
物理公司的
2017-05-28 · TA获得超过5695个赞
知道大有可为答主
回答量:6105
采纳率:86%
帮助的人:1297万
展开全部
//结构定义中包含两个成员,分子和分母
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;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式