- 先求公因子
- 再编程化成最简式
- 再进行加减乘除的函数编写
#include <stdio.h>
#include <stdlib.h>
typedef struct{
int fenzi;
int fenmu;
}fenshu;
fenshu fenshu1={15,25},fenshu2={14,21};
int gcd(int a,int b)
{
int buf;
do{
buf=a%b;
a=b;
b=buf;
}while(buf!=0);
return a;
}
fenshu to_simple(fenshu a)
{
fenshu x;
x.fenzi=a.fenzi/gcd(a.fenzi,a.fenmu);
x.fenmu=a.fenmu/gcd(a.fenzi,a.fenmu);
return x;
}
fenshu add_fenshu(fenshu a,fenshu b)
{
fenshu x;
x.fenzi=a.fenzi*b.fenmu+b.fenzi*a.fenmu;
x.fenmu=a.fenmu*b.fenmu;
return to_simple(x);
}
fenshu sub_fenshu(fenshu a,fenshu b)
{
fenshu x;
x.fenzi=a.fenzi*b.fenmu-b.fenzi*a.fenmu;
x.fenmu=a.fenmu*b.fenmu;
return to_simple(x);
}
fenshu mul_fenshu(fenshu a,fenshu b)
{
fenshu x;
x.fenzi=a.fenzi*b.fenzi;
x.fenmu=a.fenmu*b.fenmu;
return to_simple(x);
}
fenshu div_fenshu(fenshu a,fenshu b)
{
fenshu x;
x.fenzi=a.fenzi*b.fenmu;
x.fenmu=a.fenmu*b.fenzi;
return to_simple(x);
}
int main()
{
fenshu test_fenshu;
printf("fenshu1=%d/%d\n",fenshu1.fenzi,fenshu1.fenmu);
printf("fenshu2=%d/%d\n\n",fenshu2.fenzi,fenshu2.fenmu);
printf("gcd=%d\n",gcd(46,16));
printf("fenshu1 to simple=%d/%d\n",to_simple(fenshu1).fenzi,to_simple(fenshu1).fenmu);
printf("fenshu2 to simple=%d/%d\n\n",to_simple(fenshu2).fenzi,to_simple(fenshu2).fenmu);
test_fenshu=add_fenshu(fenshu1,fenshu2);
printf("fenshu1*fenshu2=%d/%d\n",test_fenshu.fenzi,test_fenshu.fenmu);
test_fenshu=sub_fenshu(fenshu1,fenshu2);
printf("fenshu1*fenshu2=%d/%d\n",test_fenshu.fenzi,test_fenshu.fenmu);
test_fenshu=mul_fenshu(fenshu1,fenshu2);
printf("fenshu1*fenshu2=%d/%d\n",test_fenshu.fenzi,test_fenshu.fenmu);
test_fenshu=div_fenshu(fenshu1,fenshu2);
printf("fenshu1*fenshu2=%d/%d\n\n",test_fenshu.fenzi,test_fenshu.fenmu);
return 0;
}
输出效果如下: