您的位置:首页 > 编程语言 > PHP开发

(POJ 3979)分数加减法

2011-04-13 14:21 225 查看
 

分数加减法
Description
编写一个C程序,实现两个分数的加减法
Input
输入包含多行数据 
每行数据是一个字符串,格式是"a/boc/d"。 

其中a, b, c, d是一个0-9的整数。o是运算符"+"或者"-"。 

数据以EOF结束 
输入数据保证合法
Output
对于输入数据的每一行输出两个分数的运算结果。 
注意结果应符合书写习惯,没有多余的符号、分子、分母,并且化简至最简分数
Sample Input
1/8+3/8 
1/4-1/2 
1/3-1/3
Sample Output
1/2 
-1/4
0

 

AC  code:

#include<stdio.h>
#include<math.h>
#define N 10
int gcd(int a,int b)
{
int r,t;
if(a<b)
{
t=a;
a=b;
b=t;
}
while(b)
{
r=a%b;
a=b;
b=r;
}
return a;
}
int lcm(int m,int n)
{
int a;
a=gcd(m,n);
return n*(m/a);
}
int main()
{
char s
;
int a,b,c,d;
int m,n,t;
while(scanf("%s",s)!=EOF)
{
a=s[0]-'0';
b=s[2]-'0';
c=s[4]-'0';
d=s[6]-'0';
m=lcm(b,d);
if(s[3]=='+')
n=a*(m/b)+c*(m/d);
else
n=a*(m/b)-c*(m/d);
t=gcd(m,n);
m=m/t;
n=n/t;
if(n==0)
printf("%d/n",0);
else if(m==1)
{
printf("%d/n",n);
}
else
{
if(m<0)
{
printf("%d",-n);
printf("%c",'/');
printf("%d/n",-m);
}
else
{
printf("%d",n);
printf("%c",'/');
printf("%d/n",m);
}
}

}

return 0;
}
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  output input c