【前言】今天上午写了学校2019年上机题,前两道水题平均十分钟,第三道入坑了,写的时间长了点,第四道没写出来,下面记录以便回头复习。总结经验,再接再厉,一定会4道AC!
表达式求值
算法描述
输入7个字符,含4个数字,3个运算符。运算符为“+“,”-“,”x“,”/“之一
输出结果
#include<iostream>
#include<string>
#include<stack>
using namespace std;
string str;
stack<int> num;
stack<char> sign;
int main(){
cin>>str;
int j=0;
while(j<str.size()){
if(str[j]>='0'&&str[j]<='9'){
num.push(str[j]-'0');
}
else{
if(str[j]=='+')sign.push('+');
else if(str[j]=='-'){
num.push((str[j+1]-'0')*(-1));
sign.push('+');
j++;
}
else if(str[j]=='x'){
int temp=num.top();
num.pop();
num.push(temp*(str[j+1]-'0'));
j++;
}
else if(str[j]=='/'){
int temp=num.top();
num.pop();
num.push(temp/(str[j+1]-'0'));
j++;
}
}
j++;
}
while(!sign.empty()){
int temp1 = num.top(); num.pop();
int temp2 = num.top(); num.pop();
sign.pop();
num.push(temp1+temp2);
}
int ans=num.top();
cout<<ans;
return 0;
}