本题要求编写程序,计算两个有理数的和。
输入格式:
输入在一行中按照“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;
}