结构-02. 有理数加法(15)
2015-03-13 20:40
337 查看
本题要求编写程序,计算两个有理数的和。
输入格式:
输入在一行中按照“a1/b1 a2/b2”的格式给出两个分数形式的有理数,其中分子和分母全是整形范围内的正整数。
输出格式:
在一行中按照“a/b”的格式输出两个有理数的和。注意必须是该有理数的最简分数形式,若分母为1,则只输出分子。
输入样例1:
输出样例1:
输入样例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;
}
输入格式:
输入在一行中按照“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;
}
相关文章推荐
- 结构-02. 有理数加法(15)
- 结构-02. 有理数加法(15)
- 结构-02. 有理数加法(15)
- 结构-02. 有理数加法(15)
- 结构-02. 有理数加法(15)
- 结构-02. 有理数加法(15)
- PAT_B_结构-02. 有理数加法(15)
- 结构-02. 有理数加法(15)
- 02-线性结构1 两个有序链表序列的合并(15 分)
- 02-线性结构1 两个有序链表序列的合并(15 分)
- 02-线性结构1 两个有序链表序列的合并(15 分)
- 结构-02. 有理数加法
- 02-线性结构1 两个有序链表序列的合并(15 point(s)) 【链表合并】
- 02-线性结构1 两个有序链表序列的合并(15 分)
- 02-线性结构3 Reversing Linked List(25 分)
- PAT 02-线性结构3. Pop Sequence (25)
- 02 分支结构
- 02-线性结构3 Reversing Linked List(25 分)
- 02-线性结构2. 一元多项式求导 (25)
- [新概念一册复习02] There be 结构