您的位置:首页 > 其它

nyoj-305-表达式求值

2013-08-08 20:36 393 查看
#include<stdio.h>

#include<string.h>

char a[310];

int b[310],c[310];

int bijiao(int a,int b,char c)

{

 if(c=='a')

  return a>b?a:b;

 else if(c=='i')

  return a<b?a:b;

 else if(c=='d')

  return a+b;

}

int main()

{

 int s;

 scanf("%d",&s);

 while(s--)

 {

  int le,n,i,j,b1,c1;

  scanf("%s",a);

  le=strlen(a);

  memset(b,0,sizeof(b));

  memset(c,0,sizeof(c));

  b1=c1=1;

  for(i=0;i<le;)

  {

   if(a[i]=='a'||a[i]=='m')

   {

    i++;

    if(a[i]=='a')

     b[b1++]='a';

    else if(a[i]=='d')

     b[b1++]='d';

    else if(a[i]=='i')

     b[b1++]='i';

    i+=2;

   }

   else if(a[i]=='('||a[i]==',')

    i++;

   else if(a[i]>='0'&&a[i]<='9')

   {

    n=0;

    while(a[i]>='0'&&a[i]<='9')

    {

                 n=n*10+(a[i]-48);

     i++;

    }

    c[c1++]=n;

   }

   else if(a[i]==')')

   {

             n=bijiao(c[--c1],c[--c1],b[--b1]);

    c[c1++]=n;

    i++;

   }

  }

  printf("%d\n",c[--c1]);

 }

 return 0;

}

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: