分数的表示和运算
#include#include //分数的表示和化简struct fraction{ int up,down;}f[2];int gcd(int a,int b){ //if(b == 0) return a; //else return gcd(b,a%b); return b==0?a:gcd(b,a%b);}fraction reduction(fraction result) //分数化简 { if(result.down < 0){ result.up = -result.up; result.down = -result.down; } if(result.up == 0){ result.down = 1; } else { int d = gcd(abs(result.up),abs(result.down)); result.up /= d; result.down /= d; } return result;}fraction minus(fraction f1,fraction f2) //分数减法 { fraction result; result.up = f1.up*f2.down-f1.down*f2.up; result.down = f1.down*f2.down; return result; }fraction multi(fraction f1,fraction f2) //分数乘法 { fraction result; result.up = f1.up*f2.up; result.down = f1.down*f2.down; return result;}fraction divide(fraction f1,fraction f2) //分数除法 { fraction result; result.up = f1.up*f2.down; result.down = f1.down*f2.up; return result;}void print_r(fraction f) //显示分数 { f = reduction(f); if(f.down == 1) printf("%d\n",f.up); else printf("%d/%d\n",f.up,f.down);}int main(){ scanf("%d%d%d%d",&f[1].up,&f[1].down,&f[2].up,&f[2].down); fraction r; r=minus(f[1],f[2]); print_r(r); r=multi(f[1],f[2]); print_r(r); r=divide(f[1],f[2]); print_r(r); return 0;}