有理数四则运算
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/b75ff70fa57aa2f8c6e4ac72b721d3f5.png)
#include <stdio.h>
int maxdivisor(int a,int b)
{
while(a%b!=0)
{
int temp = a%b;
a = b;
b = temp;
}
return b;
}
void handle(int n,int d)
{
if(d == 0)
{
printf("Inf");
return;
}
int inegative = 1;
if(n<0)
{
n*=-1;
inegative*=-1;
}
if(d<0)
{
d*=-1;
inegative*=-1;
}
int max = maxdivisor(n,d);
d = d/max;
n = n/max;
if(inegative == -1)
{
printf("(-");
}
if(n/d && n%d)
{
printf("%d %d/%d",n/d,n%d,d);
}
else if(n%d)
{
printf("%d/%d",n%d,d);
}
else
{
printf("%d",n/d);
}
if(inegative == -1)
{
printf(")");
}
}
int main()
{
int a1,b1,a2,b2;
scanf("%d/%d %d/%d",&a1,&b1,&a2,&b2);
char jjcc[4] = {'+','-','*','/'};
int i;
for(i = 0;i<4;i++)
{
handle(a1,b1);printf(" %c ",jjcc[i]);
handle(a2,b2);printf(" = ");
switch(jjcc[i])
{
case '+':
handle(a1*b2+a2*b1,b1*b2);
break;
case '-':
handle(a1*b2-a2*b1,b1*b2);
break;
case '*':
handle(a1*a2,b1*b2);
break;
case '/':
handle(a1*b2,a2*b1);
break;
}
printf("\n");
}
return 0;
}