#include<stdio.h>
#include<string.h>
int count(int a,int b,char c)
{
if(c=='d') return a+b;
if(c=='i') return a<b?a:b;
if(c=='a') return a>b?a:b;
}
int main()
{
char s[310],a[310];
int n,m,b[310],i,atop,btop,num;
scanf("%d",&n);
while(n--)
{
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
//memset(s,0,sizeof(s));//对于字符串,清不清0都无所谓
scanf("%s",s);
m=strlen(s);
atop=btop=1;
for(i=0;i<m;)
{
if(s[i]>='a'&&s[i]<='z'){
i++;
if(s[i]=='d') a[atop++]='d';
if(s[i]=='a') a[atop++]='a';
if(s[i]=='i') a[atop++]='i';
i+=2;
}
else if(s[i]=='('||s[i]==',') i++;
else if(s[i]>='0'&&s[i]<='9')
{
num=0;
while(s[i]>='0'&&s[i]<='9')
{
num=num*10+s[i]-'0';
i++;
}
b[btop++]=num;
}
if(s[i]==')')
{
num=count(b[--btop],b[--btop],a[--atop]);
b[btop++]=num;//这样写是b[btop++]=count(b[--btop],b[--btop],a[--atop]);
i++;
}
}
printf("%d\n",b[1]);
}
return 0;
}
南阳 305 表达式求值
最新推荐文章于 2018-09-11 08:53:04 发布