南阳111,为何错误应该是忘记考虑0和0了吧,晚上再提交看看

本文介绍如何使用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<stdio.h>
#include<math.h>
int abs(int j)
{
	if(j<0) return -j;
	return j;
}
int gcd(int m,int n)
{
	return !n? m:gcd(n,m%n);
}
int main()
{
    char a1,b1,c1,d1;char t;int a,b,c,d;
	while(scanf("%c/%c%c%c/%c",&a1,&b1,&t,&c1,&d1)!=EOF)
	{
		a=a1-'0';b=b1-'0';c=c1-'0';d=d1-'0';
                if(a==0  ||  d==0) printf("0\n");//考虑0和0.
        if(t=='+')
		{
			  int q;q=gcd((a*d+c*b),(b*d));
		      printf("%d/%d\n",(a*d+c*b)/q,(b*d)/q);
		}
		if(t=='-')
		{
			int q;q=gcd(abs(a*d-c*b),(b*d));
			if(a*d-c*b==0) printf("0\n");
			if((a*d-c*b)<0)    
			       printf("-%d/%d\n",abs(a*d-c*b)/q,(b*d)/q);
		     if((a*d-c*b)>0)
		       printf("%d/%d\n",(a*d-c*b)/q,(b*d)/q);
		}
		getchar();
	}
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洋葱ycy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值