在C语言中如何用栈检验一个算数表达式的正确

问题描述:

在C语言中如何用栈检验一个算数表达式的正确
假如我现在输入一个算数表达式(a+b),计算机在用栈计算之后,OPS和OVS里将不会有剩余的符号或字母,但我如果输入((a+b)的话,运算之后栈里就会有“(”的剩余,从而可以检验出这个算数表达式的正确与否. 现在我假设运算符号有+,-,*,/ 元素全部用字母代替.那么现在((a+b)),这种算数表达式就是正确的,((a+u),a+-u,a*u))等此类算数表达式就是错误的. 请高手写一个C语言的程序,以检验一个算数表的式的正确与否. 小弟我以100分答谢最佳回答.
1个回答 分类:综合 2014-11-16

问题解答:

我来补答
给你一个完整的程序,自己按需要修改吧.这是我2001年使用过的一个段落.编译后,可以直接运行. 编译如下: // #include #include #include #define TTRUE 0 #define TFALSE 1 #define MY_BUF_SIZ 256 #define WORD_SIZ 32 int A=100; float B=200.002; double C=300.033; struct Variables{ char name[64]; int ty; //int--0,float--1,double--2 double val; }VarTable[]={ {"A",0,0.0}, {"B",1,0.0}, {"C",2,0.0} }; int VarTableLen = 3; int isTheVar(char *tv){ int i = 0; void setVarValue(int); for(i = 0;i'F'*/){ printf("Bad Var \n",expr[t].var); exit(TFALSE); } val_stk[++top] = atof(expr[t].var); } //printf("This version does not process [STR_TYPE]\n"); break; default: printf("ERROR! unknown var TYPE .\n",expr[t].ty); exit(0); } } printf("The Result is val_stk[%d]=%g\n",top,val_stk[top]); return val_stk[top]; } //getExpValue Over int main(int argc,char *argv[]){ if(argc
 
 
展开全文阅读
剩余:2000