题解
后缀表达式的值
1 条题解
-
0
#include<bits/stdc++.h> using namespace std; int main() { stack<long long> st; string s; // 读取一整行输入,包含所有空格、数字、符号、@ getline(cin, s); long long num = 0; int len = s.size(); for(int i = 0; i < len; i++) { char ch = s[i]; if(ch == '@') break; // 读到结束符直接退出循环 if(ch == ' ') // 空格分隔,数字结束,压栈 { if(num != 0) { st.push(num); num = 0; } continue; } // 数字字符,拼接多位数 if(isdigit(ch)) { num = num * 10 + (ch - '0'); } // 运算符 else { // 先把当前未入栈数字压入栈 if(num != 0) { st.push(num); num = 0; } // 弹出两个操作数(先右后左) long long b = st.top(); st.pop(); long long a = st.top(); st.pop(); long long res; if(ch == '+') res = a + b; else if(ch == '-') res = a - b; else if(ch == '*') res = a * b; else res = a / b; st.push(res); } } cout << st.top(); return 0; }
- 1