题目参考:信息学奥赛一本通398-1.2
#include<iostream> #include<string> #include<cstring> using namespace std; int main(void) { string a; a="16 9 4 3 +*-@"; //cin >> a; int len=a.length(),p1=0,p2=0,b[100],k=0; memset(b,0,sizeof(b)); for(int i=0; a[p2+1]>=48&&a[p2+1]<=57 || a[p2+1]==32; i++) { p2++; if(a[p2]==' ') { k++; for(int j=p1;j<=p2-1;j++) { b[k]=b[k]*10+a[j]-48; } p1=p2+1; } } for(int i=0;i<=k;i++) cout << "b["<<i<<"]="<<b[i]<<" "; cout << endl; int p=k; for(int i=p2+1;i<len;i++) { cout << a[i]<<endl; switch(a[i]) { case '+': b[p-1]=b[p]+b[p-1]; p--; break; case '-': b[p-1]=b[p-1]-b[p]; p--; break; case '*': b[p-1]=b[p]*b[p-1]; p--; break; case '/': b[p-1]=b[p]/b[p-1]; p--; break; } cout << "b["<<p<<"]="<<b[p]<<endl; } cout<<"ans = " << b[p]<<endl; return 0; }