分数加减法
Time Limit: 1000 ms Memory Limit: 65536 KiB
Problem Description
编写一个C程序,实现两个分数的加减法
Input
输入包含多行数据
每行数据是一个字符串,格式是"a/boc/d"。
其中a, b, c, d是一个0-9的整数。o是运算符"+“或者”-"。
数据以EOF结束
输入数据保证合法
Output
对于输入数据的每一行输出两个分数的运算结果。
注意结果应符合书写习惯,没有多余的符号、分子、分母,并且化简至最简分数
Sample Input
1/8+3/8
1/4-1/2
1/3-1/3
Sample Output
1/2
-1/4
0
AC代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner mi = new Scanner(System.in);
while (mi.hasNext()) {
String str = mi.next();
char[] a = str.toCharArray();
int m = (a[2] - '0') * (a[6] - '0');
int n = a[3] == '+' ? (a[0] - '0') * (a[6] - '0') + (a[4] - '0') * (a[2] - '0')
: (a[0] - '0') * (a[6] - '0') - (a[4] - '0') * (a[2] - '0');
int b, c;
if (n <= 0) {
c = -n;
b = -m;
} else {
c = n;
b = m;
}
int t;
if (n > m) {
n = m;
t = n;
m = t;
}
int r = n % m;
while (r != 0) {
n = m;
m = r;
r = n % m;
}
if ((c / m) % (b / m) == 0) {
System.out.println((c / m) / (b / m));
} else {
System.out.println(c / m + "/" + b / m);
}
}
mi.close();
}
}
————
余生还请多多指教!