111
分数加减法
时间限制:
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
-
#include<stdio.h> int gb(int a,int b) { if(a<=b) for(int i=b;;i++) if(i%a==0&&i%b==0) { return i; break; } } int gy(int a,int b) { if(a<=b) for(int 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"); } } }
-
总结:需要注意的情况是当分子为零时,以及能整除时德处理。