正文

表达式求值II(只对整数有效)2005-08-13 17:53:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/elva6401/3773.html

分享到:

int main() {     int len=0,i=0,j;     int m,n,result;     char op;     int number=0;     char enter[100];     int s1[100],top1=0,top2=0;     char s2[100];     s2[top2]='(';top2++;     scanf("%s",enter);     for(i=0;i<strlen(enter);i++)     {         if(enter[i]>='0' && enter[i]<='9')         {             if (enter[i+1]>='0' && enter[i+1]<='9')                 number=10*number+enter[i]-'0';             else             {             s[len].index=1;             s[len].a=10*number+enter[i]-'0';             s[len].b='0';             len++;             number=0;             }         }         else         {             s[len].index=0;             s[len].a=0;             s[len].b=enter[i];             len++;         }             /*printf("len@=%d,i=%d\n",len,i); */     }     if (enter[strlen(enter)-1]!='=')     {         s[len].index=0;         s[len].a=0;         s[len].b='=';         len++;      }     for(i=0;i<len;i++)     {         if (s[i].b=='=')         {             while(top1!=1)             {             m=s1[top1-1];             top1--;             n=s1[top1-1];             top1--;             op=s2[top2-1];             top2--;             result=oper(n,m,op);             s1[top1]=result;             top1++;             }             printf("%d\n",s1[top1-1]);             break;         }         if (s[i].b==')')         {             while(s2[top2-1]!='(')             {             m=s1[top1-1];             top1--;             n=s1[top1-1];             top1--;             op=s2[top2-1];             top2--;             result=oper(n,m,op);             s1[top1]=result;             top1++;             }             top2--;         }         else         {         if(s[i].index==1)         {             s1[top1]=s[i].a;             top1++;         }         else         {             if (comp1(s[i].b,s2[top2-1])==1)             {                 s2[top2]=s[i].b;                 top2++;             }             else             {                 if(comp2(s[i].b,s2[top2-1])==0)                 {                     m=s1[top1-1];                     top1--;                     n=s1[top1-1];                     top1--;                     op=s2[top2-1];                     top2--;                     result=oper(n,m,op);                     s1[top1]=result;                     top1++;                 }                 s2[top2]=s[i].b;                 top2++;             }         }         }         /*         if (s[i].index==1)         {         for (j=0;j<top1;j++)         printf("%d ",s1[j]);         printf("\n");         }         if (s[i].index==0)         {         for (j=0;j<top2;j++)         printf("%c ",s2[j]);         printf("\n");         }         */     }     getch(); }

阅读(2820) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册