#include <stdio.h>
#include <stdlib.h>
void add(int[]);
void sub(int[]);
void mul(int[]);
void div1(int[]);
int reduce(int,int);//除掉公约数
int main()
{
int a[4];//a[0],a[2]保存分子,a[1],a[3]保存分母
printf("enter first fractional number<m n>:\n");
scanf("%d %d",&a[0],&a[1]);
printf("enter second fractional number<m n>:\n");
scanf("%d %d",&a[2],&a[3]);
if(a[0]==0||a[3]==0)
{
printf("The denominator can not be zero!\n");
main();
}
add(a);
sub(a);
mul(a);
div1(a);
}
//加
void add(int a[])
{
int com,mol,den;
mol=a[0]*a[3]+a[2]*a[1];//结果的分子
den=a[1]*a[3];//结果的分母
com=reduce(mol,den);
printf("add=%d/%d\n",mol/com,den/com);
}
//减
void sub(int a[])
{
int com,mol,den;
mol=a[0]*a[3]-a[2]*a[1];
den=a[1]*a[3];
com=reduce(mol,den);
printf("sub=%d/%d\n",mol/com,den/com);
}
//乘
void mul(int a[])
{
int com,mol,den;
mol=a[0]*a[2];
den=a[1]*a[3];
if(mol==0)
printf("mul=0\n");
else
{
com=reduce(mol,den);
printf("mul=%d/%d\n",mol/com,den/com);
}
}
//除
void div1(int a[])
{
int com,mol,den;
mol=a[0]*a[3];
den=a[2]*a[1];
if(den==0)
{
printf("The dividend can not be zero!\n");
//main();
}
else if(mol==0)
printf("div=%d/%d\n",mol,den/den);
else
{
com=reduce(mol,den);
printf("div=%d/%d\n",mol/com,den/com);
}
}
//除掉公约数
int reduce(int a,int b)
{
int s,t;
if(a<b)
{
t=a;a=b;b=t;
}
while((t=a%b)!=0)
{
a=b;b=t;
}
s=b;
return s;
}