分数加减法
描述编写一个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
1 import java.text.NumberFormat; 2 import java.util.Arrays; 3 import java.util.Scanner; 4 5 public class Main { 6 public static void main(String[] args) { 7 Scanner scanner=new Scanner(System.in); 8 char input[]=new char[7]; 9 char sign; 10 int a; 11 int b; 12 int c; 13 int d; 14 int fenMu; 15 int fenZi; 16 int flag; 17 int temp; 18 19 while(scanner.hasNext()){ 20 input=scanner.next().toCharArray(); 21 22 sign=input[3]; 23 a=input[0]-'0'; 24 b=input[2]-'0'; 25 c=input[4]-'0'; 26 d=input[6]-'0'; 27 28 fenMu=b*d/gcd(b,d); 29 30 if(sign=='+') 31 fenZi=fenMu/b*a+fenMu/d*c; 32 33 else 34 fenZi=fenMu/b*a-fenMu/d*c; 35 36 if(fenZi==0){ 37 System.out.println("0"); 38 continue; 39 } 40 41 if(fenZi<0){ 42 System.out.print("-"); 43 fenZi=-fenZi; 44 } 45 46 if(fenZi%fenMu==0) 47 System.out.println(fenZi/fenMu); 48 49 else{ 50 temp=gcd(fenZi,fenMu); 51 System.out.println(fenZi/temp+"/"+fenMu/temp); 52 } 53 } 54 } 55 56 static int gcd(int a,int b){ 57 int temp; 58 59 if(a<b){ 60 temp=a; 61 a=b; 62 b=temp; 63 } 64 65 while(a%b!=0){ 66 temp=a%b; 67 a=b; 68 b=temp; 69 } 70 71 return b; 72 } 73 }