#include<bits/stdc++.h> using namespace std; string s; stack<int> st; int main(){ getline(cin,s); int l = s.length(); for(int i=0;i<l;i++){ if(s[i]==' '){ continue; }if(s[i]>='0'&&s[i]<='9'){ st.push(s[i]-'0'); }else{ char o; int n,m; o=s[i]; n=st.top(); st.pop(); m=st.top(); st.pop(); if(o=='+'){ m+=n; }else if(o=='-'){ m-=n; }else if(o=='*'){ m*=n; } st.push(m); } } cout<<(st.top()+10)%10; }
时间: 2023-12-05 12:06:46 浏览: 103
万能头文件#include&amp;lt;bits/stdc++.h&amp;gt; using namespace std;
这段代码是一个逆波兰表达式求值程序,它可以正确处理输入中的空格,并且对于除法操作也进行了处理。
具体的实现步骤如下:
1. 首先,通过getline函数从标准输入获取一行字符串s。
2. 然后,遍历字符串s中的每个字符(从索引0开始)。
3. 如果当前字符是空格,则跳过,继续下一个字符的判断。
4. 如果当前字符是数字,则将其转化为整数并压入栈中。
5. 如果当前字符是操作符,则从栈中取出两个操作数,并根据操作符进行相应的计算,将计算结果再压入栈中。
6. 最后,输出栈顶元素加上10取模的结果。
需要注意的是,这段代码同样没有对输入进行错误处理,例如对于非法输入或除零错误的情况没有做处理。在实际使用中需要根据具体需求进行相应的错误处理。
阅读全文