C语言实现分数乘积计算及化简
分数的乘法规则是:a1/b1 * a2/b2 = (a1 * a2) / (b1 * b2)。 根据题目要求,我们需要对结果进行化简,即找到结果的最大公约数gcd,然后将分子和分母分别除以gcd即可。
具体的解题步骤如下:
- 读入n。
- 初始化两个变量numerator和denominator为1,用来保存结果的分子和分母。
- 循环n次,每次读入一个分式的分子a和分母b。
- 更新结果的分子和分母:numerator = numerator * a,denominator = denominator * b。
- 计算结果的最大公约数gcd = greatestCommonDivisor(numerator, denominator)。
- 将结果的分子和分母分别除以gcd:numerator = numerator / gcd,denominator = denominator / gcd。
- 判断结果是否为整数,如果是则直接输出numerator,否则输出numerator/denominator。
- 定义函数greatestCommonDivisor(a, b)来计算a和b的最大公约数:
- 如果b为0,则返回a。
- 否则,递归调用greatestCommonDivisor(b, a % b)。
以下是一种可能的C语言实现:
#include <stdio.h>
int greatestCommonDivisor(int a, int b) {
if (b == 0) {
return a;
}
return greatestCommonDivisor(b, a % b);
}
int main() {
int n;
scanf("%d", &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 gcd = greatestCommonDivisor(numerator, denominator);
numerator /= gcd;
denominator /= gcd;
if (denominator == 1) {
printf("%d\n", numerator);
} else {
printf("%d/%d\n", numerator, denominator);
}
return 0;
}
这样就可以根据输入的分式计算出它们的乘积,并输出最简形式的结果。
原文地址: https://www.cveoy.top/t/topic/dpQx 著作权归作者所有。请勿转载和采集!