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