您的位置:首页 > 其它

nyoj_111_分数加减法_201311281341

2013-11-28 15:36 323 查看

分数加减法

时间限制: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

来源水题比赛上传者hzyqazasdf

#include <stdio.h>

int gcd(int a,int b)
{
int i,t;
if(a>b)
{
t=a;a=b;b=t;
}
while(a)
{
i=a;
a=b%a;
b=i;
}
return b;
}

int main()
{
char s[10];
while(gets(s))
{
int i;
int a,b1,b2;
int t1,t2;
//printf("%d\n",gcd(6,4));
a=(s[2]-'0')*(s[6]-'0')/gcd((s[2]-'0'),(s[6]-'0'));
b1=a/(s[2]-'0')*(s[0]-'0');
b2=a/(s[6]-'0')*(s[4]-'0');
if(s[3]=='-'){
if(b1<b2)
{
t1=b2-b1;
t2=gcd(t1,a);
if(t1==0)
printf("%d\n",0);
else
{
printf("-");
printf("%d/%d\n",t1/t2,a/t2);
}
}
else
{
t1=b1-b2;
t2=gcd(t1,a);
if(t1==0)
printf("%d\n",0);
else
printf("%d/%d\n",t1/t2,a/t2);
}
}
else
{
t1=b2+b1;
t2=gcd(t1,a);
if(t1%a==0)
printf("%d\n",t1/a);
else
printf("%d/%d\n",t1/t2,a/t2);
}
}
return 0;
}


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