用c语言计算两个分数之和,对分数进行通分后分子相加,并对分子、分母进行约分
时间: 2024-12-24 11:33:06 浏览: 12
在C语言中,计算两个分数之和需要首先将它们转换成公共分母,然后进行分子的相加。以下是步骤:
1. **定义结构体表示分数**:创建一个结构体`Fraction`,包含分子`num`和分母`den`。
```c
typedef struct {
int num; // 分子
int den; // 分母
} Fraction;
```
2. **公共分母函数**:找到两个分数分母的最大公约数(GCD),这将是新的公共分母。
```c
int gcd(int a, int b) {
if (b == 0)
return a;
else
return gcd(b, a % b);
}
```
3. **通分函数**:根据最大公约数计算新分母,并更新分子。
```c
void normalize(Fraction &f1, Fraction &f2) {
int commonDen = gcd(f1.den, f2.den);
f1.num *= commonDen / f1.den;
f2.num *= commonDen / f2.den;
f1.den = commonDen;
f2.den = commonDen;
}
```
4. **分数相加**:将两个分数的分子相加,保持分母不变。
```c
void addFractions(Fraction &result, const Fraction &f1, const Fraction &f2) {
result.num = f1.num + f2.num;
result.den = f1.den;
}
```
5. **约简分数**:如果结果的分子可以被分母整除,就进行约简。
```c
void simplify(Fraction &frac) {
int new_num = frac.num / frac.den;
frac.num = new_num;
frac.den = abs(new_num); // 约简后的分母总是正的
}
```
完整的示例代码如下:
```c
#include <stdio.h>
// ... (以上代码)
int main() {
Fraction f1 = {5, 7}, f2 = {9, 14};
normalize(f1, f2);
addFractions(f1, f2);
simplify(f1);
printf("分数之和为: %.1f/%d\n", (float)f1.num / f1.den, f1.den);
return 0;
}
```
阅读全文