您的位置:首页 > 编程语言 > C语言/C++

结构-02. 有理数加法(15)

2015-03-13 20:40 337 查看
本题要求编写程序,计算两个有理数的和。

输入格式:

输入在一行中按照“a1/b1 a2/b2”的格式给出两个分数形式的有理数,其中分子和分母全是整形范围内的正整数。

输出格式:

在一行中按照“a/b”的格式输出两个有理数的和。注意必须是该有理数的最简分数形式,若分母为1,则只输出分子。
输入样例1:
1/3 1/6

输出样例1:
1/2

输入样例2:
4/3 2/3

输出样例2:
2


#include <stdio.h>

struct Rational
{
int n;
int d;
};

int gcd(int u, int v);

int main()
{
int g;
struct Rational r, r1, r2;

scanf("%d/%d %d/%d", &r1.n, &r1.d, &r2.n, &r2.d);

r.n = r1.n * r2.d + r2.n * r1.d;
r.d = r1.d * r2.d;
g= gcd(r.n, r.d);
r.n /= g;
r.d /= g;

if (r.d == 1) {
printf("%d\n", r.n);
}else {
printf("%d/%d\n", r.n, r.d);
}

return 0;
}

int gcd(int u, int v)
{
int tmp;
while (v != 0) {
tmp = u % v;
u = v;
v = tmp;
}

return u;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息