NYOJ-111 分数加减法

来源:互联网 发布:淘宝网首页购物车 编辑:程序博客网 时间:2024/05/16 03:56

描述
编写一个C程序,实现两个分数的加减法
输入
输入包含多行数据 
每行数据是一个字符串,格式是"a/boc/d"。 
其中a, b, c, d是一个0-9的整数。o是运算符"+"或者"-"。 

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

**1.分子为0

    2.分子分母相等

    3.分母为1

    4.符号提出单独计算


#include <stdio.h>

int GCD(int a,int b)
{
int temp;
if(a==b)
return 1;
else if(a<b)
{
temp = a;
a = b;
b = temp;
}
while(a%b!=0)
{
temp = a;
a = b;
b = temp%b;
}
return b;
}
int main()
{
char s[10];
int fz,fm,yueshu;
while(scanf("%s",s)!=EOF)
{
fm = (s[2]-'0')*(s[6]-'0');
if(s[3]=='+')
fz = (s[0]-'0')*(s[6]-'0')+(s[2]-'0')*(s[4]-'0');
else
fz = (s[0]-'0')*(s[6]-'0')-(s[2]-'0')*(s[4]-'0');
if(fz==0)
{
printf("0\n");
}
else
{
if(fz<0)
{
printf("-");
fz = -fz;
}
if(fz==fm)
printf("1\n");
else
{
yueshu = GCD(fm,fz);
fz = fz/yueshu;
fm = fm/yueshu;
if(fm==1)
{
printf("%d\n",fz);
}else
printf("%d/%d\n",fz,fm);
}
}

}
return 0;
}
0 0
原创粉丝点击