2. 用程序实现求解表达式的值,例如输入1+2*3-16/2,则输出为-1。C++
时间: 2024-10-14 16:09:22 浏览: 102
第2章-简单程序设计(C-版).ppt
在C++中,你可以使用`std:: stringstream`和`std::cin`来实现一个简单的计算器,用于求解用户输入的数学表达式。这里是一个基础的示例,它并不包含异常处理和完整的运算符优先级解析,但可以作为一个起点。
```cpp
#include <iostream>
#include <sstream>
// 定义计算函数
int calculate(std::istringstream& expression流) {
double num1, num2 = 0, result = 0;
char op;
while (expression流 >> num1) {
expression流 >> op;
if (op == '+') {
result += num1;
} else if (op == '-') {
result -= num1;
} else if (op == '*') {
result *= num1;
} else if (op == '/') {
if (expression流 >> num2 && num2 != 0) {
result /= num2;
} else {
std::cerr << "Invalid division by zero.\n";
return 0;
}
}
}
return static_cast<int>(result);
}
int main() {
std::string input;
std::cout << "Enter a mathematical expression (e.g., 1 + 2 * 3 - 16 / 2): ";
getline(std::cin, input);
std::istringstream expression(input);
try {
int result = calculate(expression);
if (result != 0) {
std::cout << "The value is: " << result << "\n";
}
} catch (...) {
std::cerr << "Error in calculation.\n";
}
return 0;
}
```
在这个程序中,我们首先读取输入表达式中的数字和运算符,然后依次进行加减乘除的运算。遇到除法时,需要额外读取第二个数字(除非是整除)。这个实现假设输入总是有效的。
阅读全文