7-33 有理数加法(15 分)
本题要求编写程序,计算两个有理数的和。
输入在一行中按照a1/b1 a2/b2的格式给出两个分数形式的有理数,其中分子和分母全是整形范围内的正整数。
在一行中按照a/b的格式输出两个有理数的和。注意必须是该有理数的最简分数形式,若分母为1,则只输出分子。
代码如下
#include <stdio.h> int main() { int a_denominator,a_numerator; int b_denominator,b_numerator; int denominator,numerator; int p,q,r; scanf("%d/%d %d/%d",&a_numerator,&a_denominator,&b_numerator,&b_denominator); denominator = a_denominator * b_denominator; numerator = a_denominator * b_numerator + b_denominator * a_numerator; if(denominator > numerator) { p = denominator; q = numerator; } else { p = numerator; q = denominator; } while(q != p - q) { r = p - q; if(q > r) { p = q; q = r; } else { p = r; } } denominator = denominator / q; numerator = numerator / q; if(denominator == 1) printf("%d",numerator); else printf("%d/%d",numerator,denominator); return 0; }