[C语言]分数运算

读入4个整数a、b、c、d和一个运算符(‘+’、‘-’、‘*’、‘/’中的一个),进行分数a/b和c/d的对应运算,输出最简结果。

Standard Input

有多组测试数据。输入的第一行是整数T(1<=T<=200),表示随后测试数据的组数。每组测试数据占一行,由四个正整数a,b,c,d和一个运算符组成,相邻数据间有一个空格。

Standard Output

对应每组测试数据,输出分数运算的最简结果,占一行。具体可参照样例。

Samples

InputOutput
3
1 2 3 4 -
35 24 24 5 *
25 72 9 5 /
-1/4
7
125/648
Problem ID1891
Problem Title分数运算
Time Limit1000 ms
Memory Limit64 MiB
Output Limit64 MiB
Sourcewxiaoping - 2018.4.16
#include<stdio.h>
int gcd(int x,int y)
{
	return !y? x>0?x:-x:gcd(y,x%y);
}

int main()
{
	int T;
	for(int i = 0;i < T;i++){
		int a1,b1,a2,b2;
		char c;
		while(scanf("%d/%d %d/%d %c",&a1,&b1,&a2,&b2,&c)!=-1)
		{
			int A,B,C;
			switch(c)
			{
				case '+':
					A=a1*b2+a2*b1;
					B=b1*b2;
					C=gcd(A,B);
					printf("%d/%d\n",A/C,B/C);
					break;
				case '-':
					A=a1*b2-a2*b1;
					B=b1*b2;
					C=gcd(A,B);
					printf("%d/%d\n",A/C,B/C);
					break;
				case '*':
					A=a1*a2;
					B=b1*b2;
					C=gcd(A,B);
					printf("%d/%d\n",A/C,B/C);
					break;
				case '/':
					A=a1*b2;
					B=a2*b1;
					C=gcd(A,B);
					B<0?printf("%d/%d\n",-A/C,-B/C):printf("%d/%d\n",A/C,B/C);
					break;
				default:break;
			}
		}
	}
	return 0;
}

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

名为28

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

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

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

打赏作者

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

抵扣说明:

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

余额充值