7-33 有理数加法

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

输入格式

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

输出格式

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

输入样例1

1/3 1/6

输出样例1

1/2

输入样例2

4/3 2/3

输出样例2

2

分析与答案

其实是考数学,a1/b1+a2/b2=(a1b2+a2b1)/(b1b2),然后对结果进行约分输出。

#include <stdio.h>

/*
    a1/b1+a2/b2=(a1b2+a2b1)/(b1b2),然后进行约分
*/
void sim(int up, int down);
int main(){
    int a1,b1,a2,b2;
    scanf("%d/%d %d/%d",&a1,&b1,&a2,&b2);
    int up,down;
    up = a1*b2 + a2*b1;
    down = b1*b2;
    sim(up,down);
    return 0;
}
sim(int up,int down){
    if(up%down == 0){
        printf("%d",up/down);
    }
    else{
        int i = down;
        while(i!=1){
            if(up%i == 0 && down%i == 0){
                up /= i;
                down /=i;
            }
            i--;
        }
        printf("%d/%d",up,down);
    }
}

7-33 测试点