C语言实现分数乘积计算及化简
#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;
}
上述程序中,我们使用了两个函数 gcd 和 lcm 分别计算最大公约数和最小公倍数。calculateProduct 函数用于计算分式的乘积,并将结果以最简形式输出。根据分式乘积的特点,我们将所有分子相乘,所有分母相乘,然后进行约分。
注意,我们使用了整数除法来计算商和余数,确保结果的分子和分母都在 int 范围内。同时,我们还判断了结果是否为整数,如果是整数直接输出,如果有余数则输出带分数形式。
原文地址: https://www.cveoy.top/t/topic/geh 著作权归作者所有。请勿转载和采集!