7-33 有理数加法(15 分)
本题要求编写程序,计算两个有理数的和。
输入格式:
输入在一行中按照a1/b1 a2/b2
的格式给出两个分数形式的有理数,其中分子和分母全是整形范围内的正整数。
输出格式:
在一行中按照a/b
的格式输出两个有理数的和。注意必须是该有理数的最简分数形式,若分母为1,则只输出分子。
输入样例1:
输出样例1:
输入样例2:
输出样例2:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| #include <stdio.h> int gcd(int, int); struct fraction{ int a; int b; }; int main(void) { struct fraction f1, f2, f3; int g; scanf("%d/%d %d/%d", &f1.a, &f1.b, &f2.a, &f2.b); f3.a = f1.a*f2.b + f2.a*f1.b; f3.b = f1.b*f2.b; g = gcd(f3.a, f3.b); f3.a /= g; f3.b /= g; if (f3.b == 1) printf("%d", f3.a); else printf("%d/%d", f3.a, f3.b);
return 0; }
int gcd(int x, int y) { int r; while (1) { r = x%y; if (r == 0) break; x = y; y = r; } return y; }
|