在C语言中如何用栈检验一个算数表达式的正确假如我现在输入一个算数表达式(a+b),计算机在用栈计算之后,OPS和OVS里将不会有剩余的符号或字母,但我如果输入((a+b)的话,运算之后栈里就会有“
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/20 14:33:05
![在C语言中如何用栈检验一个算数表达式的正确假如我现在输入一个算数表达式(a+b),计算机在用栈计算之后,OPS和OVS里将不会有剩余的符号或字母,但我如果输入((a+b)的话,运算之后栈里就会有“](/uploads/image/z/6498-18-8.jpg?t=%E5%9C%A8C%E8%AF%AD%E8%A8%80%E4%B8%AD%E5%A6%82%E4%BD%95%E7%94%A8%E6%A0%88%E6%A3%80%E9%AA%8C%E4%B8%80%E4%B8%AA%E7%AE%97%E6%95%B0%E8%A1%A8%E8%BE%BE%E5%BC%8F%E7%9A%84%E6%AD%A3%E7%A1%AE%E5%81%87%E5%A6%82%E6%88%91%E7%8E%B0%E5%9C%A8%E8%BE%93%E5%85%A5%E4%B8%80%E4%B8%AA%E7%AE%97%E6%95%B0%E8%A1%A8%E8%BE%BE%E5%BC%8F%28a%2Bb%29%2C%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9C%A8%E7%94%A8%E6%A0%88%E8%AE%A1%E7%AE%97%E4%B9%8B%E5%90%8E%2COPS%E5%92%8COVS%E9%87%8C%E5%B0%86%E4%B8%8D%E4%BC%9A%E6%9C%89%E5%89%A9%E4%BD%99%E7%9A%84%E7%AC%A6%E5%8F%B7%E6%88%96%E5%AD%97%E6%AF%8D%2C%E4%BD%86%E6%88%91%E5%A6%82%E6%9E%9C%E8%BE%93%E5%85%A5%28%28a%2Bb%29%E7%9A%84%E8%AF%9D%2C%E8%BF%90%E7%AE%97%E4%B9%8B%E5%90%8E%E6%A0%88%E9%87%8C%E5%B0%B1%E4%BC%9A%E6%9C%89%E2%80%9C)
在C语言中如何用栈检验一个算数表达式的正确假如我现在输入一个算数表达式(a+b),计算机在用栈计算之后,OPS和OVS里将不会有剩余的符号或字母,但我如果输入((a+b)的话,运算之后栈里就会有“
在C语言中如何用栈检验一个算数表达式的正确
假如我现在输入一个算数表达式(a+b),计算机在用栈计算之后,OPS和OVS里将不会有剩余的符号或字母,但我如果输入((a+b)的话,运算之后栈里就会有“(”的剩余,从而可以检验出这个算数表达式的正确与否. 现在我假设运算符号有+,-,*,/ 元素全部用字母代替.那么现在((a+b)),这种算数表达式就是正确的,((a+u),a+-u,a*u))等此类算数表达式就是错误的. 请高手写一个C语言的程序,以检验一个算数表的式的正确与否. 小弟我以100分答谢最佳回答.
在C语言中如何用栈检验一个算数表达式的正确假如我现在输入一个算数表达式(a+b),计算机在用栈计算之后,OPS和OVS里将不会有剩余的符号或字母,但我如果输入((a+b)的话,运算之后栈里就会有“
给你一个完整的程序,自己按需要修改吧.这是我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