编写程序,输入一个形式如 操作数 运算符 操作数 的四则运算表达式,输入运算结果步骤
时间: 2023-04-12 15:00:55 浏览: 187
非常感谢您的提问。以下是一个简单的程序,可以输入一个四则运算表达式,并输出运算结果步骤:
```
#include <iostream>
#include <stack>
#include <string>
using namespace std;
int calculate(int a, int b, char op) {
switch(op) {
case '+': return a + b;
case '-': return a - b;
case '*': return a * b;
case '/': return a / b;
}
return 0;
}
int main() {
string expr;
cout << "请输入一个四则运算表达式:" << endl;
cin >> expr;
stack<int> nums;
stack<char> ops;
int num = 0;
bool num_flag = false;
for (int i = 0; i < expr.size(); i++) {
char c = expr[i];
if (isdigit(c)) {
num = num * 10 + (c - '0');
num_flag = true;
} else {
if (num_flag) {
nums.push(num);
num = 0;
num_flag = false;
}
if (c == '+' || c == '-') {
while (!ops.empty()) {
char op = ops.top();
ops.pop();
int b = nums.top();
nums.pop();
int a = nums.top();
nums.pop();
nums.push(calculate(a, b, op));
}
ops.push(c);
} else if (c == '*' || c == '/') {
while (!ops.empty() && (ops.top() == '*' || ops.top() == '/')) {
char op = ops.top();
ops.pop();
int b = nums.top();
nums.pop();
int a = nums.top();
nums.pop();
nums.push(calculate(a, b, op));
}
ops.push(c);
}
}
}
if (num_flag) {
nums.push(num);
}
while (!ops.empty()) {
char op = ops.top();
ops.pop();
int b = nums.top();
nums.pop();
int a = nums.top();
nums.pop();
nums.push(calculate(a, b, op));
}
cout << "运算结果为:" << nums.top() << endl;
return 0;
}
```
例如,输入表达式 "3+4*5-6/2",程序将输出以下结果:
```
请输入一个四则运算表达式:
3+4*5-6/2
运算结果为:21
```
希望这个程序能够帮助您解决问题。如果您还有其他问题,请随时提出。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.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)