1、#include/* 就是需要引用这个图形库*/#include#include/* 控制台输入输出头文件,getch()语句需要*/#include#include#include#define TRUE 1#define FALSE 0#define Stack_Size 50/*存储空间初始分配量*/char ops7=+,-,*,/,(,),#;int cmp77=2,2,1,1,1,2,2,2,2,1,1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1,2,2,1,1,1,1,1,3,0,2,2,2,2,0,2,2,1,1,1,1,1,0,3;typedef struct
2、char elemStack_Size;int top;SeqStack;/*运算数栈的定义*/typedef structint elemStack_Size;int top;SeqStackOperand;/*初始化运算符栈*/void InitStack(SeqStack *S)S-top =-1;/*初始化运算数栈*/void InitStacknOperand(SeqStackOperand *S)S-top =-1;/*判断栈 S 为空栈时返回值为真,反之为假*/int IsEmpty(SeqStack *S)return(S-top=-1?TRUE:FALSE);/*判断栈 S
3、为空栈时返回值为真,反之为假*/int IsEmptynOperand(SeqStackOperand *S)return(S-top=-1?TRUE:FALSE);/*判断栈 S 为满栈时返回值为真,反之为假*/int IsFull(SeqStack *S)return(S-top=Stack_Size-1?TRUE:FALSE);/*判断栈 S 为满栈时返回值为真,反之为假*/int IsFullOperand(SeqStackOperand *S)return(S-top=Stack_Size-1?TRUE:FALSE);/*运算符栈入栈函数*/int Push(SeqStack *S,
4、char x)if (S-top=Stack_Size-1)printf(“Stack is full!n“);return FALSE;elseS-top+;S-elemS-top=x;return TRUE;/*运算数栈入栈函数*/int PushOperand(SeqStackOperand *S,int x)if (S-top=Stack_Size-1)printf(“Stack is full!n“);return FALSE;elseS-top+;S-elemS-top=x;return TRUE;/*运算符栈出栈函数*/int Pop(SeqStack *S,char *x)if
5、 (S-top=-1)printf(“运算符栈空!n“);return FALSE;else*x=S-elemS-top;S-top-;return TRUE;/*运算数栈出栈函数*/int PopOperand(SeqStackOperand *S,int *x)if (S-top=-1)printf(“运算符栈空!n“);return FALSE;else*x=S-elemS-top;S-top-;return TRUE;/*运算符栈取栈顶元素函数 */char GetTop(SeqStack *S)if (S-top =-1)printf(“运算符栈为空!n“);return FALSE
6、;elsereturn (S-elemS-top);/*运算数栈取栈顶元素函数 */int GetTopOperand(SeqStackOperand *S)if (S-top =-1)printf(“运算符栈为空!n“);return FALSE;elsereturn (S-elemS-top);/*判断输入字符是否为运算符函数 ,是返回 TRUE,不是返回 FALSE*/int Isoperator(char ch)int i;for (i=0;i;break;case 2:pri=:Pop(PopOperand(PopOperand(v=Execute(a,op,b); /*对 a 和
7、b 进行 op 运算*/PushOperand(break;/*end while*/v=GetTopOperand(return v;void MainFace()int i,j;initgraph(400,250); /*初始化*/ bar(10,10,390,240);setcolor(WHITE); /*图形边框颜色设置*/rectangle(20,20,380,230); setcolor(LIGHTRED);bar(30,30,370,70); for(i=0;i30strcat(string,“=“);outtextxy(40,50,string);strcat(str1,“#“);itoa(ExpEvaluation(str1),str2,10);strcat(string,str2);outtextxy(40,50,string); getch(); /* 按任意键继续*/closegraph(); /*关闭图形界面 */ void main()CalFace();