c++指针编写约简分数的函数
时间: 2024-02-05 15:11:22 浏览: 27
下面是一个用 C++ 编写的约分函数,它使用指针传递参数并返回值。假设有一个表示分数的结构体,其中包含分子和分母字段:
```c++
struct Fraction {
int numerator; // 分子
int denominator; // 分母
};
```
现在我们需要编写一个函数,将给定的分数约分为最简分数,并将结果存储在相同的结构体中。函数的原型应该是这样的:
```c++
void simplifyFraction(Fraction* frac);
```
这个函数接受一个指向 Fraction 结构体的指针,该结构体包含要约分的分数。它不返回任何值,但会修改传递的结构体。
下面是完整的代码:
```c++
#include <iostream>
// 定义分数结构体
struct Fraction {
int numerator; // 分子
int denominator; // 分母
};
// 求最大公约数
int gcd(int a, int b) {
if (b == 0) {
return a;
}
return gcd(b, a % b);
}
// 约分函数
void simplifyFraction(Fraction* frac) {
int div = gcd(frac->numerator, frac->denominator);
frac->numerator /= div;
frac->denominator /= div;
}
int main() {
Fraction frac1 = {12, 16};
std::cout << "原始分数:" << frac1.numerator << "/" << frac1.denominator << std::endl;
simplifyFraction(&frac1);
std::cout << "约分后:" << frac1.numerator << "/" << frac1.denominator << std::endl;
return 0;
}
```
这个程序首先定义了一个 Fraction 结构体,然后定义了一个求最大公约数的函数 gcd。接下来是 simplifyFraction 函数,它接受一个指向 Fraction 结构体的指针,计算分数的最大公约数,然后使用指针修改分数的值以进行约分。
在 main 函数中,我们创建了一个 Fraction 对象,并将其传递给 simplifyFraction 函数。最后,我们打印出约分后的结果。