小心注意
分子=0;
分母=1;
求最大公约数r赋初值
sum=0时直接退出,后面求最大公分无法进行
#include <stdio.h>
#include<math.h>
int main(int argc, char *argv[])
{
int a,b,c,d,sum,t;
int max,min,r;
char e;
while(scanf("%d/%d%c%d/%d",&a,&b,&e,&c,&d)!=EOF)
{
r=1;
if(a==0 || b==0)
{
printf("0");
continue;
}
switch(e)
{
case'+':sum=a*d+b*c;break;
case'-':sum=a*d-b*c;break;
}
if(sum==0)
{
printf("0\n");
continue;
}
if (abs(sum)>=b*d) { max=abs(sum); min=b*d;}
else { max=b*d; min=abs(sum); }
while(r)
{
r=max%min;
max=min;
min=r;
}
sum/=max;
t=(b*d)/max;
if(t==1 || t==-1) printf("%d\n",sum);
else printf("%d/%d\n",sum,t);
}
return 0;
}