分数计算

分数计算

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

#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;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值