分析:
简单的模拟题。
熟练容器stack的话很容易解决。
stack,栈,有先进后出的特性。
比如你有一个箱子,你每放进第一个数时,就往箱底放,放第二个数时就在第一个数的上面放,而这两个数取出时,先取出第二个数,才能取出第一个数。
详细请看代码

1 #include<iostream> 2 #include<cstdio> 3 #include<stack> // 头文件 4 using namespace std; 5 6 char c; 7 stack<int> q; // 声明 8 9 int main() 10 { 11 int n = 1, num; 12 while((c = getchar()) && c != '@'){ // 输入,以 @ 结束 13 // 对数字的处理, 14 if(c >= '0' && c <= '9'){ 15 num = c - '0'; 16 if(n != 1) { 17 num += q.top() * n; // .top() q 最后放入的数 18 q.pop(); // .pop() 去掉 q 最后放入的数 19 q.push(num); // .push(x) 往 q 放进一个数 20 } 21 else { 22 q.push(num); 23 n = 10; // 处理一下数字 24 } 25 } 26 if(c == '.'){ // 输入一个数字完毕,归个位 27 n = 1; 28 } 29 30 // 判断运算符 31 int a, b; 32 if(c == '+'){ 33 a = q.top(); q.pop(); 34 b = q.top(); q.pop(); 35 a += b; 36 q.push(a); 37 } 38 if(c == '-'){ // 注意被减数与减数 39 a = q.top(); q.pop(); 40 b = q.top(); q.pop(); 41 b -= a; 42 q.push(b); 43 } 44 if(c == '*'){ 45 a = q.top(); q.pop(); 46 b = q.top(); q.pop(); 47 a *= b; 48 q.push(a); 49 } 50 if(c == '/'){ // 注意被除数与除数 51 a = q.top(); q.pop(); 52 b = q.top(); q.pop(); 53 b /= a; 54 q.push(b); 55 } 56 } 57 cout << q.top() << endl; // 输出 58 return 0; 59 }