分数计算

    技术2025-10-24  16

    分数计算

    分数的计算要用到,两个分数的通分,还有分子与分母的化简

    #include<stdio.h>

    int gys(int x,int y)//最大公约数,主要用来分子与分母的化简

    {

    return y?gys(y,x%y):x;

    }

    int gbs(int x,int y)//最小公倍数,主要用来两个分数的通分

    {

    return x/gys(x,y)*y;

    }

    void yuefen(int fz,int fm)//两个数的约分,化简

    {

    int s=gys(fz,fm);//求出两数的最大公约数

    fz/=s;

    fm/=s;

    printf("结果为:%d/%d/n",fz,fm);

    }

    void add(int a,int b,int c,int d)//加法

    {

    int u1,u2,v=gbs(b,d),fz1,fm1;

    u1=v/b*a;//用最小公倍数来通分

    u2=v/d*c;

    fz1=u1+u2;

    fm1=v;

    yuefen(fz1,fm1);

    }

    void mul(int a,int b,int c,int d)//减法

    {

    int u1,u2,v=gbs(b,d),fz1,fm1;

    u1=v/b*a;//用最小公倍数来通分

    u2=v/d*c;

    fz1=u1-u2;

    fm1=v;

    yuefen(fz1,fm1);

    }

    void sub(int a,int b,int c,int d)//乘法

    {

    int u1,u2;

    u1=a*c;

    u2=b*d;

    yuefen(u1,u2);

    }

    void div(int a,int b,int c,int d)//除法

    {

    int u1,u2;

    u1=a*d;

    u2=b*c;

    yuefen(u1,u2);

    }

    void main()

    {

    char op;

    int a,b,c,d;

    scanf("%ld/%ld%c%ld/%ld",&a,&b,&op,&c,&d);

    switch(op)

    {

    case '+':add(a,b,c,d);break;

    case '-':mul(a,b,c,d);break;

    case '*':sub(a,b,c,d);break;

    case '/':div(a,b,c,d);break;

    }

    }

    最新回复(0)