题目是P1449 后缀表达式
代码是
#include<cstdio>
using namespace std;
char ch;
int s[1007],l,num;
int main(){
for (ch=getchar();ch!='@';ch=getchar()){
if (ch>=48&&ch<=57){
num*=10;
num+=ch-48;
}
if (ch=='.'){
s[++l]=num;
num=0;
}
if (ch=='+')
s[--l]=s[l]+s[l+1];
if (ch=='-')
s[--l]=s[l]-s[l+1];
if (ch=='*')
s[--l]=s[l]*s[l+1];
if (ch=='/')
s[--l]=s[l]/s[l+1];
}
printf("%d",s[1]);
return 0;
}
问题就是出在--l放在语句里面上。
样例是 3.5.2.-*7.+@
本地windows输出是16
洛谷是9
放在外面也变成了16