7-6 有理数加法

本题要求编写程序,计算两个有理数的和。

输入格式:

输入在一行中按照a1/b1 a2/b2的格式给出两个分数形式的有理数,其中分子和分母全是整形范围内的正整数。

输出格式:

在一行中按照a/b的格式输出两个有理数的和。注意必须是该有理数的最简分数形式,若分母为1,则只输出分子。

输入样例1:

1/3 1/6

 

 

输出样例1:

1/2

 

 

输入样例2:

4/3 2/3

 

 

输出样例2:

2

 

 
#include<stdio.h>

int gcd(int a,int b)
{	
	int temp;
	if(a>b){
	
	 temp=a;
	 a=b;
	 b=temp;
}
	while(a!=0){
		temp=a;
		a=b%a;
		b=temp;
	}
	return b;

}//用来求最小公约数 

	struct num{
		int a[3];
		int b[3];
		double sum;
	};

	int main(){
		struct num n;
		int i;
		scanf("%d/%d%d/%d",&n.a[0],&n.b[0],&n.a[1],&n.b[1]);
		n.a[2]=n.a[0]*n.b[1]+n.a[1]*n.b[0];
		n.b[2]=n.b[0]*n.b[1];
		i=gcd(n.a[2],n.b[2]); //i为最小公约数 
		if(n.a[2]%n.b[2]==0)
			printf("%d",n.a[2]/i); //分母为1时 
		else{
			printf("%d/%d",n.a[2]/i,n.b[2]/i);
		}
		 
	}

 

 
posted @ 2020-05-18 01:13  rebloom000  阅读(247)  评论(0编辑  收藏  举报