分数加减法
时间限制:3000 ms | 内存限制:65535 KB
难度:2
描述
编写一个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
代码1:
#include<stdio.h>
int main(void)
{
int x,y,x1,y1;
char o;
while(scanf("%d/%d%c%d/%d",&x,&y,&o,&x1,&y1)!=EOF)
{
int x2,y2;
y2=y*y1;
if(o=='+')
x2=x*y1+x1*y;
else
x2=x*y1-x1*y;
int max=x2>y2?x2:y2;
for(int i=2;i<=max/2;i++)
{
if(x2%i==0&&y2%i==0)
{
x2=x2/i;
y2=y2/i;
i=2;
}
}
if(x2==0)
printf("%d\n",x2);
else if(x2%y2==0)
printf("%d\n",x2/y2);
else
printf("%d/%d\n",x2,y2);
}
return 0;
}
#include<stdio.h>
int main(void)
{
char ch[7];
int a,b,c,d,m,n,s,t,r;
while(scanf("%s",ch)!=EOF)
{
b=ch[2]-'0';
d=ch[6]-'0';
if(b!=d)
{
if(b>d)
{
t=b;
b=d;
d=t;
}
m=b;
while(m%d!=0)
m=m+b;
}
else
m=b;
a=m*(ch[0]-'0')/(ch[2]-'0');
c=m*(ch[4]-'0')/(ch[6]-'0');
if(ch[3]=='+')
n=a+c;
if(ch[3]=='-')
n=a-c;
t=m;
if(n<0)
s=-n;
else
s=n;
printf("%d %d %d %d \n",m,s,a,c);
while(s!=0)
{
r=t%s;
t=s;
s=r;
}
if((m/t)==1)
printf("%d\n",n/t);
else
printf("%d/%d\n",n/t,m/t);
}
return 0;
}