111分数加减法
描述编写一个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
#include<stdio.h> #include<math.h> int gb(int a,int b) { int i,j; if(a<=b) for(i=b;;i++) if(i%a==0&&i%b==0) { return i; break; } else for(j=a;;j++) if(j%b==0&&j%a==0) { return j; break; } } int gy(int a,int b) { int i; if(a<=b) for(i=a;;i--) { if(i<2) break; else if(a%i==0&&b%i==0) { return i; break; } } return 1;
}
int main() { int a,b,c,d; char o,y,z; while(scanf("%d%c%d%c%d%c%d",&a,&y,&b,&o,&c,&z,&d)!=EOF) { if(b!=0&&d!=0) { int n,m; n=gb(b,d); if(o=='+') m=a*(n/b)+c*(n/d); else m=a*(n/b)-c*(n/d); if(m!=0) { if(m%n!=0) { int c=gy(m,n); m=m/c; n=n/c; printf("%d%c%d\n",m,y,n); } else { int v=m/n; printf("%d\n",v); } } else printf("0\n"); } } }