[6.43]分数的四则运算★★★ 【问题描述】 在小学时我们就学习了分数的四则运算,即对两个分数进行加、减、乘、除等运算,现在我们尝试用C语言来实现。 【输入】 分数1 操作符 分数2。 【输出】 计算结果。
时间: 2024-11-20 21:43:02 浏览: 9
ros6.43.zip
在C语言中,我们可以使用结构体来表示分数,并为每个操作定义相应的函数。这里是一个简单的实现,我们将分数表示为分子和分母:
```cpp
#include <iostream>
// 定义分数结构体
struct Fraction {
int numerator; // 分子
int denominator; // 分母
};
// 判断分母是否为0,防止除以0的情况
bool is_valid_denominator(int denominator) {
return denominator != 0;
}
// 计算分数相加
Fraction add(Fraction a, Fraction b) {
int new_numerator = a.numerator * b.denominator + a.denominator * b.numerator;
int new_denominator = a.denominator * b.denominator;
return {new_numerator, new_denominator};
}
// 计算分数相减
Fraction subtract(Fraction a, Fraction b) {
int new_numerator = a.numerator * b.denominator - a.denominator * b.numerator;
return {new_numerator, a.denominator * b.denominator};
}
// 计算分数相乘
Fraction multiply(Fraction a, Fraction b) {
return {a.numerator * b.numerator, a.denominator * b.denominator};
}
// 计算分数相除,确保分母不为0
Fraction divide(Fraction a, Fraction b) {
if (is_valid_denominator(b.denominator)) {
return {a.numerator * b.denominator, a.denominator * b.numerator};
} else {
throw std::invalid_argument("Cannot divide by zero.");
}
}
// 输出分数(为了简化,假设分子永远是非负的)
void print_fraction(Fraction f) {
if (f.denominator == 1) {
std::cout << f.numerator << std::endl;
} else {
std::cout << f.numerator << "/" << f.denominator << std::endl;
}
}
int main() {
Fraction fraction1, fraction2;
char op;
// 输入分数和操作符
std::cin >> fraction1.numerator >> fraction1.denominator >> op >> fraction2.numerator >> fraction2.denominator;
// 根据操作符执行相应操作
switch(op) {
case '+':
fraction1 = add(fraction1, fraction2);
break;
case '-':
fraction1 = subtract(fraction1, fraction2);
break;
case '*':
fraction1 = multiply(fraction1, fraction2);
break;
case '/':
try {
fraction1 = divide(fraction1, fraction2);
} catch (const std::invalid_argument& e) {
std::cerr << "Error: " << e.what() << std::endl;
}
break;
default:
std::cerr << "Invalid operator." << std::endl;
break;
}
// 输出结果
print_fraction(fraction1);
return 0;
}
```
这个程序首先读取两个分数和一个操作符,然后根据操作符调用相应的函数计算结果。注意,这个例子假设操作符输入正确,实际应用中可能需要额外处理错误输入。
阅读全文