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);
}
}

浙公网安备 33010602011771号