#include<iostream>
#include<stdio.h>using namespace std;int gcd(int a,int b){ if(b==0) return a; return gcd(b,a%b);}int main (){ int a,b,c,d; char ch1,ch2,ch3; while(scanf("%d%c%d%c%d%c%d",&a,&ch1,&b,&ch2,&c,&ch3,&d)!=EOF) { if(a==0 && c==0) { cout<<0<<endl; } else { int x,y; int flag=1; int m,n; int g; m=b*d; if(ch2=='+') n=a*d+b*c; else if(ch2=='-') n=a*d-b*c; if(n==0) { cout<<0<<endl; continue; } if(n<0) { flag=0; n=-n; } g=gcd(m,n); x=n/g; y=m/g; if(flag==0) cout<<"-"; if(y==1) { cout<<x<<endl; } else cout<<x<<"/"<<y<<endl; } } return 0; }输入的时候,两个除号“/”也要用两个字符变量来表示
对多种情况的判断:
输入两个分子都为零时,结果为零
另外gcd()函数用来求分子分母的最大公因数,然后将分子分母化为最简形式
分母为1时,只输出分子