周子涵大帅比 @ 2017-02-06 21:11:03
#include<bits/stdc++.h>
long long stk[1001],slen=0,tmp=0;
char s[1001];
int main()
{
gets(s);
int len=strlen(s);
for(int i=0;i<=len;i++)
{
if(s[i]=='@') break;
if(s[i]<='9'&&s[i]>='0')
{
tmp=tmp*10+s[i]-'0';
}
else if(s[i]=='.')
{
int res;
if(s[i]=='+') res=stk[slen+stk[slen-1]];
else if(s[i]=='-') res=stk[slen-1]-stk[slen];
slen=slen-2;
slen++;
stk[slen]=res;
}
}
printf("%d\n",stk[slen]);
return 0;
}
by hilsinleri @ 2017-02-06 22:22:08
@周子涵大帅比
你的判断四则运算符的if语句应该放在if(a[i]=='.')的外面吧
有加减乘除四则运算
if(s[i]=='+') res=stk[slen+stk[slen-1]];
这句话应该为if(s[i]=='+') res=stk[slen]+stk[slen-1];
(你可能手滑把右下标符打到后面来了)
by hilsinleri @ 2017-02-06 22:24:42
不好意思,才看到你已经AC了