用c++写出符合以下条件的代码:给出一个分数,该代码可以将此分数化简为最小公分母的形式,且只能分子有符号
时间: 2024-11-09 17:25:06 浏览: 27
在C++中,我们可以使用`<algorithm>`库里的`gcd`函数(最大公约数)和`std::abs`函数(绝对值)来简化分数。下面是一个简单的代码示例,它接受两个整数作为输入,表示分数的分子和分母,并确保分子为正,同时化简到最简形式:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
// 自己实现的取最大公约数函数
int gcd(int num1, int num2) {
if (num2 == 0)
return abs(num1);
else
return gcd(num2, num1 % num2);
}
// 化简分数函数
void simplify_fraction(int& numerator, int& denominator) {
// 确保分子为正
numerator = std::abs(numerator);
// 获取分子和分母的最大公约数
int gcd_val = gcd(numerator, denominator);
// 将分子和分母都除以最大公约数
numerator /= gcd_val;
denominator /= gcd_val;
}
int main() {
int numerator, denominator;
std::cout << "请输入分数的分子和分母(用空格隔开):";
std::cin >> numerator >> denominator;
// 化简分数
simplify_fraction(numerator, denominator);
// 输出结果,只显示分子(因为已保证分子为正)
std::cout << "化简后的分数是:" << numerator << "/" << denominator << std::endl;
return 0;
}
```
在这个代码中,用户需要输入分数的分子和分母,程序会自动将其转换为分子为正、分母非零的最简形式。
阅读全文