- 先求公因子
- 再编程化成最简式
- 再进行加减乘除的函数编写
#include#include 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/%dn",fenshu1.fenzi,fenshu1.fenmu); printf("fenshu2=%d/%dnn",fenshu2.fenzi,fenshu2.fenmu); printf("gcd=%dn",gcd(46,16)); printf("fenshu1 to simple=%d/%dn",to_simple(fenshu1).fenzi,to_simple(fenshu1).fenmu); printf("fenshu2 to simple=%d/%dnn",to_simple(fenshu2).fenzi,to_simple(fenshu2).fenmu); test_fenshu=add_fenshu(fenshu1,fenshu2); printf("fenshu1*fenshu2=%d/%dn",test_fenshu.fenzi,test_fenshu.fenmu); test_fenshu=sub_fenshu(fenshu1,fenshu2); printf("fenshu1*fenshu2=%d/%dn",test_fenshu.fenzi,test_fenshu.fenmu); test_fenshu=mul_fenshu(fenshu1,fenshu2); printf("fenshu1*fenshu2=%d/%dn",test_fenshu.fenzi,test_fenshu.fenmu); test_fenshu=div_fenshu(fenshu1,fenshu2); printf("fenshu1*fenshu2=%d/%dnn",test_fenshu.fenzi,test_fenshu.fenmu); return 0; }
输出效果如下:



