#include <stdio.h>

// 求最大公约数
int gcd(int a, int b) {
    if (b == 0) {
        return a;
    }
    return gcd(b, a % b);
}

// 求最小公倍数
int lcm(int a, int b) {
    return a * b / gcd(a, b);
}

// 计算分式乘积
void calculateProduct(int n) {
    int numerator = 1;
    int denominator = 1;

    for (int i = 0; i < n; i++) {
        int a, b;
        scanf('%d %d', &a, &b);
        
        numerator *= a;
        denominator *= b;
    }

    int commonDivisor = gcd(numerator, denominator);
    numerator /= commonDivisor;
    denominator /= commonDivisor;

    int integerPart = numerator / denominator;
    int remainder = numerator % denominator;
    int denominatorPart = denominator;

    if (integerPart == 0) {
        printf('%d/%d\n', numerator, denominator);
    } else {
        if (remainder == 0) {
            printf('%d\n', integerPart);
        } else {
            printf('%d %d/%d\n', integerPart, remainder, denominatorPart);
        }
    }
}

int main() {
    int n;
    scanf('%d', &n);

    calculateProduct(n);

    return 0;
}

上述程序中,我们使用了两个函数 gcdlcm 分别计算最大公约数和最小公倍数。calculateProduct 函数用于计算分式的乘积,并将结果以最简形式输出。根据分式乘积的特点,我们将所有分子相乘,所有分母相乘,然后进行约分。

注意,我们使用了整数除法来计算商和余数,确保结果的分子和分母都在 int 范围内。同时,我们还判断了结果是否为整数,如果是整数直接输出,如果有余数则输出带分数形式。

C语言实现分数乘积计算及化简

原文地址: https://www.cveoy.top/t/topic/geh 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录