用c++写一个程序,实现输入一个包括加减乘除的计算式,输出其结果
时间: 2024-09-21 17:05:57 浏览: 123
当然可以,这里是一个简单的C++程序,它使用`std::cin`从用户那里获取输入的数学表达式,并利用`std::stringstream`将其转换成整数运算。请注意,这个示例仅处理整数运算,且并未考虑复杂的算术优先级、括号等复杂情况,实际应用中可能需要更完善的解析库如第三方库`exprtk`或`RcppAlgebra`。
```cpp
#include <iostream>
#include <sstream>
// 定义计算函数模板,用于支持加减乘除运算
template<typename T>
T calculate(const std::string& operation, const T& a, const T& b) {
if (operation == "+") return a + b;
else if (operation == "-") return a - b;
else if (operation == "*") return a * b;
else if (operation == "/") return static_cast<T>(a / b); // 需要考虑b是否为0的情况
else throw std::invalid_argument("Invalid operation");
}
int main() {
std::string expression;
std::cout << "请输入一个包含加减乘除的数学表达式(如:5+3*2):" << std::endl;
std::getline(std::cin, expression);
try {
std::istringstream iss(expression);
int num1, num2;
char op;
if (!(iss >> num1 >> op >> num2)) {
throw std::runtime_error("Invalid input format");
}
double result = calculate<double>(op, static_cast<double>(num1), static_cast<double>(num2));
std::cout << "计算结果是:" << result << std::endl;
} catch (const std::exception& e) {
std::cerr << "错误: " << e.what() << std::endl;
}
return 0;
}
```
阅读全文