#include<>#defineMAXSIZE16typedefstruct{intdata[MAXSIZE];inttop;intbase;}seqstack;/*顺序栈的定义*//*以下为函数声明*/voidInitStack(seqstack*);intEmpty(seqstack*);voidPush(seqstack*,int);intPop(seqstack*);intGetTop(seqstack*);intOperate(int,char,int);charProceed(char,char);intIn(char);intEvalExpres(void);/*定义两个栈分别存放运算符和操作数*/seqstackStackR,StackD;/*主函数*/intmain(){intv;charch;while(1){printf("\t本程序的功能为:用顺序栈实现整型算术表达式的求值\n");v=EvalExpres();printf("Theresultis:%d",v);/*以下为程序控制*/printf("\nInput'q'toquitandENTERrunagain:");do{scanf("%c",&ch);if(ch=='q'||ch=='Q')exit(0);}while(ch!='\n');system("cls");}return0;}voidInitStack(seqstack*s){s->top=0;s->base=0;}/*初始化栈*/intEmpty(seqstack*s){if(s->top==s->base)return1;elsereturn0;}/*判断栈是否为空*/voidPush(seqstack*s,intx){if(s->top==MAXSIZE){printf("OVERFLOW!\n");exit(0);}else{s->data[s->top]=x;s->top++;}}/*进栈*/intPop(seqstack*s){inte;if(Empty(s)){printf("Underflow!\n");return0;}/*下溢*/else{s->top--;e=s->data[s->top];returne;}}/*出栈*/intGetTop(seqstack*s)/*取栈顶元素*/{if(Empty(s)){printf("Underflow!\n");return0;}elsereturns->data[s->top-1];}intEvalExpres(void)/*表达式求解函数*/{inta,b,i=0,s=0;charc[80],r;InitStack(&StackR);Push(&StackR,'#');InitStack(&StackD);printf("请输入表达式并以‘#’结束:");gets(c);while(c[i]!='#'||GetTop(&StackR)!='#'){if(!In(c[i]))/*判断读入的字符不是运算符是则进栈*/{if(c[i]>='0'&&c[i]<='9'){s+=c[i]-'0';while(!In(c[++i]))/*此处实现的功能为当输入的数字为多位数时*/{s*=10;s+=c[i]-'0';}Push(&Sta
《十进制表达式四则运算》源代码 来自淘豆网www.taodocs.com转载请标明出处.