代码实现:
#include<stdio.h>
long gg(long x, long y)
{
return y == 0 ? x : gg(y, x%y);
}
void printk(long a, long b)
{
int flag = 0;
long gf = gg((long)fabs(a), (long)fabs(b));
if (a == 0)
{
printf("0"); return;
}
if (a < 0)
{
printf("(-");
a = (-1)*a;
flag = 1;
}
if (a == b)printf("1");
else if (a > b)
{
a = a / gf;
b = b / gf;
if (a%b != 0) printf("%ld %ld/%ld", a / b, a%b, b);
else printf("%ld", a / b);
}
else
{
a = a / gf;
b = b / gf;
printf("%ld/%ld", a, b);
}
if (flag == 1)printf(")");
}
int main(void)
{
long a1 = 0, b1 = 0, a2 = 0, b2 = 0;
long n = 0, d = 0;
scanf("%ld/%ld %ld/%ld", &a1, &b1, &a2, &b2);
n = a1 * b2 + a2 * b1;d = b1 * b2;
printk(a1, b1);printf(" + ");printk(a2, b2);printf(" = ");printk(n, d);printf("\n");
n = a1 * b2 - a2 * b1;d = b1 * b2;
printk(a1, b1);printf(" - ");printk(a2, b2);printf(" = ");printk(n, d);printf("\n");
n = a1 * a2;d = b1 * b2;
printk(a1, b1);printf(" * ");printk(a2, b2);printf(" = ");printk(n, d);printf("\n");
n = a1 * b2;d = b1 * a2;
printk(a1, b1);printf(" / ");printk(a2, b2);printf(" = ");
if (d == 0)printf("Inf\n");
else
{
if (d < 0)
{
n = -n;
d = -d;
}
printk(n, d);printf("\n");
}
return 0;
}