编写一个分类数,实现两个分数的相加,能够将分数以分数和实数两种方式输出显示,用C++实现
时间: 2024-05-27 12:11:57 浏览: 8
#include <stdio.h>
typedef struct {
int numerator; // 分子
int denominator; // 分母
} Fraction;
// 求两个数的最大公约数
int gcd(int a, int b) {
if (b == 0) {
return a;
}
return gcd(b, a % b);
}
// 将分数化简为最简分数
void simplify(Fraction *frac) {
int g = gcd(frac->numerator, frac->denominator);
frac->numerator /= g;
frac->denominator /= g;
}
// 分数相加
Fraction add(Fraction frac1, Fraction frac2) {
Fraction res;
res.denominator = frac1.denominator * frac2.denominator;
res.numerator = frac1.numerator * frac2.denominator + frac2.numerator * frac1.denominator;
simplify(&res);
return res;
}
// 输出分数
void printFraction(Fraction frac) {
printf("%d/%d\n", frac.numerator, frac.denominator);
}
// 输出实数
void printFloat(Fraction frac) {
printf("%.2f\n", (float)frac.numerator / frac.denominator);
}
int main() {
Fraction frac1 = {1, 2};
Fraction frac2 = {3, 4};
Fraction res = add(frac1, frac2);
printFraction(res);
printFloat(res);
return 0;
}
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)