文件读写
freopen("A.in", "r", stdin);
freopen("A.out", "w", stdout);
栈的重点函数
stack<int> s; //创建一个装数字的栈
s.push(5); //把5压入栈
s.size(); //获取栈的长度(站里面有多少个元素)
s.top(); //栈顶元素
s.pop(); //删除栈顶元素
第4题
#include <bits/stdc++.h>
using namespace std;
string s;
stack<int> q;
int num;
int start; //start表示的是从哪个位置开始是运算符号
int main() {
getline(cin, s);
int len = s.size();
//16 9 4 3 +*-@
for(int i=0; i<len; i++){
if(s[i]>='0' && s[i]<='9') num = num * 10 + s[i] - '0';
else{
q.push(num);
num = 0;
if(s[i]=='+' || s[i]=='-' || s[i]=='*' || s[i]=='/'){
start = i; //获取到第一个运算符的位置
break;
}
}
}
q.pop();
for(int i=start; s[i]!='@'; i++){
int a = q.top(); q.pop(); //获取第一个,删除第一个
int b = q.top(); q.pop(); //获取第二个,删除第二个
if(s[i]=='+'){
q.push(a+b);
}
if(s[i]=='-'){
q.push(b-a);
}
if(s[i]=='*'){
q.push(a*b);
}
if(s[i]=='/'){
q.push(b/a);
}
}
cout << q.top();
return 0;
}