分数加减法
时间限制:
3000 ms | 内存限制:
65535 KB
难度:
2
-
描述
-
编写一个C程序,实现两个分数的加减法
-
输入
-
输入包含多行数据
每行数据是一个字符串,格式是"a/boc/d"。
其中a, b, c, d是一个0-9的整数。o是运算符"+"或者"-"。
数据以EOF结束
输入数据保证合法
输出
-
对于输入数据的每一行输出两个分数的运算结果。
注意结果应符合书写习惯,没有多余的符号、分子、分母,并且化简至最简分数
样例输入
-
1/8+3/8 1/4-1/2 1/3-1/3
样例输出
-
1/2 -1/4 0
来源
- 水题比赛 上传者
import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner scan = new Scanner(System.in); boolean flag = true; int a,b,c,d; String sign; while(scan.hasNextLine()){ char[] str = scan.next().toCharArray(); a = str[0]-'0'; b = str[2]-'0'; c = str[4]-'0'; d = str[6]-'0'; sign = str[3]+""; if(b % d == 0 && b != d){ c = c * (b / d); }else if(d % b == 0 && b != d){ a = a * (d / b); b = d; }else{ c = c * b; a = a * d; b = b * d; } if("+".equals(sign)){ a = a + c; } if("-".equals(sign)){ if(a < c){ a = c - a; flag = false; }else{ a = a - c; } } if( a == 0){ System.out.println(0); }else if(a % b == 0){ if(flag){ System.out.println(a / b); }else{ System.out.println("-"+a / b); } }else if(b % a == 0){ b = b / a; if(flag){ System.out.println(1+"/"+b); }else{ System.out.println("-"+1+"/"+b); } }else{ if(flag){ System.out.println(a+"/"+b); }else{ System.out.println("-"+a+"/"+b); } } } } }
-
输入包含多行数据