本科学生综合性实验报告项目组长__学号_成员专业_班级__实验项目名称__栈的应用之表达式求值_指导教师及职称____开课学期至学年_学期上课时间年月日学生实验报告(1)学生姓名学号同组人:无实验项目栈的应用之表达式求值■必修□选修□演示性实验□验证性实验□操作性实验■综合性实验实验地点实验仪器台号指导教师实验日期及节次一、实验综述1、实验目的及要求实验目的:掌握栈在表达式求值算法中的应用。实验要求:输入一个个位数的数学表达式,如6+3*(9-5)/2-8,并将运行程序后将结果显示在屏幕上。扩展要求:在此基础上实现十位数的加减乘除(带括号)的数学表达式运算。2、实验仪器、设备或软件电脑二、实验过程(实验步骤、记录、数据、分析)打开电脑,打开MicrosoftvisualC++6.0、新建、Win32ConosleApplication建一个空工程文件、选择源文件、开始编写程序程序如下:#includestdio.h#includestdlib.h#includemath.h#defineOK1#defineERROR0#defineMAXSIZE100typedefcharStatus;typedefstructSq{char*base;char*top;intstacksize;}SqStack;charOP[7]={'+','-','*','/','(',')','#'};StatusInitStack(SqStack&S){S.base=newchar[MAXSIZE];if(!S.base)exit(OVERFLOW);S.top=S.base;S.stacksize=MAXSIZE;returnOK;}StatusPush(SqStack&S,chare){if(S.top-S.base==S.stacksize)returnERROR;*S.top++=e;returnOK;}StatusPop(SqStack&S,char&e){if(S.top==S.base)returnERROR;e=*--S.top;returnOK;}charGetTop(SqStackS){if(S.top==S.base)exit(1);return*(S.top-1);}intIn(charch,charOP[]){inti;intp=0;for(i=0;i=6;i++)if(ch==OP[i])p=1;returnp;}charPrecede(chara,charb){charc;if(a=='+'||a=='-'){if(b=='+'||b=='-'||b==')'||b=='#')c='';elsec='';}elseif(a=='*'||a=='/'){if(b=='(')c='';elsec='';}elseif(a=='('){if(b==')')c='=';elsec='';}elseif(a==')')c='';elseif(a=='#'){if(b=='#')c='=';elsec='';}returnc;}charOperate(chara,chartheta,charb){charc;if(theta=='+')c=(a-'0')+(b-'0')+'0';elseif(theta=='-')c=(a-'0')-(b-'0')+'0';elseif(theta=='*')c=(a-'0')*(b-'0')+'0';elseif(theta=='/')c=(a-'0')/(b-'0')+'0';returnc;}charEvaluateExpression(){charch,a,theta,b,x;structSqOPTR,OPND;InitStack(OPTR);Push(OPTR,'#');InitStack(OPND);ch=getchar();while(ch!='#'||GetTop(OPTR)!='#'){if(!In(ch,OP)){Push(OPND,ch);ch=getchar();}elseswitch(Precede(GetTop(OPTR),ch)){case'':Push(OPTR,ch);ch=getchar();break;case'':Pop(OPTR,theta);Pop(OPND,b);Pop(OPND,a);Push(OPND,Operate(a,theta,b));break;case'=':Pop(OPTR,x);ch=getchar();break;}}returnGetTop(OPND);}voidmain(){chart;printf(请输入算式:------参考格式:3*(7-2)#\n);t=EvaluateExpression();printf(结果为:%d\n,t-'0');}编译没错后进行调制、再进行运行得到结果,结束。三、结论1、实验结果2、分析讨论1、所有函数、变量使用前要进行声明。2、本次实验程序较复杂,代码也比较长,代码输入时应格外认真,避免不必要的错误。四、指导教师评语及成绩:评语:成绩:指导教师签名:批阅日期: