http://acm.nyist.net/JudgeOnline/problem.php?pid=111
#include<stdio.h>
//求最大公约数
int Gcd(int a,int b)
{
int temp;
if(a>b)
{
temp=b;
b=a;
a=temp;
}
while(b!=0)
{
temp=a%b;
a=b;
b=temp;
}
if(a>0)
return a;
else //因为可能为负的
return -a;
}
int main()
{
int a,b,c,d;
char ch;
int temp1,temp2,temp;
while(~scanf("%d/%d%c%d/%d",&a,&b,&ch,&c,&d))
{
if(ch=='+')
{
temp2=b*d;
temp1=a*d+c*b;
if(temp1==0)
//这里要考虑分子是不是为零 ,如果为零,下面就没意义了
{
printf("0\n");
continue;
}
temp=Gcd(temp1,temp2);
temp1/=temp;
temp2/=temp;
if(temp1%temp2==0)
//这里要注意分子整除分母时的情况
printf("%d\n",temp1/temp2);
else
printf("%d/%d\n",temp1,temp2);
}
if(ch=='-')
{
temp2=b*d;
temp1=a*d-c*b;
if(temp1==0)
{
printf("0\n");
continue;
}
temp=Gcd(temp1,temp2);
temp1/=temp;
temp2/=temp;
if(temp1%temp2==0)
printf("%d\n",temp1/temp2);
else
printf("%d/%d\n",temp1,temp2);
}
}
return 0;
}