1 /* 2 描述 3 编写一个C程序,实现两个分数的加减法 4 输入 5 输入包含多行数据 6 每行数据是一个字符串,格式是"a/boc/d"。 7 其中a, b, c, d是一个0-9的整数。o是运算符"+"或者"-"。 8 9 数据以EOF结束 10 输入数据保证合法 11 输出 12 对于输入数据的每一行输出两个分数的运算结果。 13 注意结果应符合书写习惯,没有多余的符号、分子、分母,并且化简至最简分数 14 样例输入 15 1/8+3/8 16 1/4-1/2 17 1/3-1/3 18 样例输出 19 1/2 20 -1/4 21 0 22 */ 23 #include<stdio.h> 24 int main() 25 { 26 char s[8]; 27 void f(int x,int y); 28 while(scanf("%s",s) != EOF) 29 { 30 int a, b, c, d; 31 a = s[0] - 48; 32 b = s[2] - 48; 33 c = s[4] - 48; 34 d = s[6] - 48; 35 a *= d; 36 c *= b; 37 b *= d; 38 if(s[3] == '+') 39 a += c; 40 else 41 a -= c; 42 if(a*b>0) f(a,b); 43 else if(a*b == 0)printf("0\n"); 44 else if(a*b<0) 45 { 46 printf("-"); 47 if(a<0)a=-a; 48 else b=-b; 49 f(a,b); 50 } 51 } 52 return 0; 53 } 54 void f(int x,int y) 55 { 56 int i; 57 if(x % y == 0) 58 printf("%d\n",x/y); 59 else 60 { 61 for(i=x;i>=2;i--) 62 if(x%i==0&&y%i==0) 63 { 64 x/=i; 65 y/=i; 66 } 67 printf("%d/%d\n",x,y); 68 } 69 }