C语言分数加减法编程,分数加减法(C语言)

题目描述

编写一个C程序,实现两个分数的加减法

输入

输入包含多行数据 每行数据是一个字符串,格式是"a/boc/d"。 其中a, b, c, d是一个0-9的整数。o是运算符"+"或者"-"。 数据以EOF结束 输入数据保证合法

输出

对于输入数据的每一行输出两个分数的运算结果。 注意结果应符合书写习惯,没有多余的符号、分子、分母,并且化简至最简分数

样例输入

1/8+3/8

1/4-1/2

1/3-1/3

样例输出

1/2

-1/4

0

#include

#include

int func(int m,int n) //求最大公约数

{

int tmp;

m=abs(m);

n=abs(n);

if(m==n)

return m;

if(m

{

tmp=m;

m=n;

n=tmp;

}

while(m%n!=0)

{

tmp=m;

m=n;

n=tmp%n;

}

return n;

}

int main()

{

int a,b,c,d; //两个分数的分子和分母

int he,mu,zi; //分母和分子

char o;

while(scanf("%d/%d%c%d/%d",&a,&b,&o,&c,&d)!=EOF)

{

he=func(b,d); //求最大公约数

mu=b*d/he;

if(o=='+')

zi=a*(mu/b)+c*(mu/d);

else

zi=a*(mu/b)-c*(mu/d);

if(zi!=0)

{

if(zi/mu==1)

{

printf("1\n");

}

else

{

if(zi%mu==0)

{

printf("%d\n",zi/mu);

}

else

{

he=func(zi,mu);

zi=zi/he;

mu=mu/he;

printf("%d/%d\n",zi,mu);

}

}

}

else

printf("0\n");

}

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值