/*随便写了一个,只求两个分数相加的*/
#include
#include
usingnamespacestd;
structRational
{
intnumerator;
intdenominator;
};
intGCD(inta,intb)
{
intc;
if(a<b)
swap(a,b);
while(b)
{
c=a%b;
a=b;
b=c;
}
returna;
}
intLCM(inta,intb)
{
return(a*b/GCD(a,b));
}
intmain()
{
Rationala,b;
intn,i;
charstr[100];
printf("Inputtworationalonebyone%cSample:1/21/3%c:\n",char(91),char(93));
for(intk=0;k<2;k++)
{
gets(str);
inttemp=0;
intlen=strlen(str);
for(i=0;str!='/';i++)
temp=temp*10+str-'0';
if(k==0)
a.numerator=temp;
elseb.numerator=temp;
temp=0;
for(i++;i<len;i++)
temp=temp*10+str-'0';
if(k==0)
a.denominator=temp;
elseb.denominator=temp;
}
intc=LCM(a.denominator,b.denominator);
n=c/a.denominator*a.numerator+c/b.denominator*b.numerator;
if(n%c==0)
printf("%d/%d+%d/%d=%d\n",a.numerator,a.denominator,b.numerator,b.denominator,n/c);
else
{
inttemp=GCD(n,c);
printf("%d/%d+%d/%d=%d/%d\n",a.numerator,a.denominator,b.numerator,b.denominator,n/temp,c/temp);
}
return0;
} |