欢迎来到天天文库
浏览记录
ID:54759086
大小:287.22 KB
页数:16页
时间:2020-04-21
《《带括号算术表达式的计算》实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、带括号的算术表达式求值四川大学数据结构与算法分析实验报告实验名称:带括号的算术表达式求值指导老师:________孙界平________学院:_______软件学院_______专业:_______软件工程_______姓名:________马健________学号:_____2013141463026____班级:________5班________日期:___2014年10月24日___16/16带括号的算术表达式求值目录一实验题目3二实验目的和要求3三实验环境3四算法描述3五源程序清单附录六运行结果6七实验运行情况分析716/16带括号的算术表达式求值一、实验题目:l
2、带括号的算术表达式求值二、实验目的和要求:ü采用算符优先数算法,能正确求值表达式;ü熟练掌握栈的应用;ü熟练掌握计算机系统的基本操作方法,了解如何编辑、编译、链接和运行一个C程序;ü上机调试程序,掌握查错、排错使程序能正确运行。三、实验的环境:²硬件环境:联想笔记本电脑²软件环境:操作系统:windows7旗舰版编译软件:VisualC++6.0四、算法描述:否开始判断表达式是否正确从键盘读入算术表达式存入单链表中是用栈计算显示算数表达式退出程序是是否继续计算?显示错误信息否Ø程序框图判断表达式是否正确16/16带括号的算术表达式求值Ø文字解释:1.用户从键盘读入算术中缀表
3、达式,以”=”结尾;2.程序判断用户输入表达式是否正确;3.若表达式正确,则用栈计算算术表达式;4.打印输出计算过程和最终结果;5.程序询问用户是否继续计算;6.若继续,则执行第1步;若否定,则退出程序7.若表达式错误,则打印错误信息,提示用户重新输入8.返回第1步;Ø函数及结构说明:l结构体:1)存储算数表达式的单链表:structExpression{charsign;structExpression*next;};2)操作符和操作数栈:typedefstruct{char*top;char*bottom;intstack_size;}Stack;l构造函数:1)栈相关
4、操作函数:①初始化空栈intStackCreate(Stack*s);②入栈操作intPUSH(Stack*s,charc);③出栈操作intPOP(Stack*s,charc);④获取栈顶元素charGetTop(Stack*s);16/16带括号的算术表达式求值2)计算相关操作函数:①利用栈计算算术表达式intCalculate(structExpression*exp);②子式的值的计算intCount(charnum1,charsign,charnum2);③判断字符是否为运算符intIsOpOrNum(charc);④判断运算符优先级charJudgeLevel(
5、charc1,charc2);⑤判断表达式正确性intIsExpresiion(structExpression*exp);⑥输出计算结果voidPrintResult(structExpression*exp,intresult);3)算术表达式输入函数:①键盘读入存于单链表structExpression*GetExp();符号2l构造操作符优先级表符号1比较+-*/()=(#)+>><<<>>->><<<>>*>>>><>>/>>>><>>(<<<<<=)>>>>>>=(#)<<<<<=五、源程序清单Ø见附录六、运行结果Ø测试表l本次测试采用用户从键盘输入算数表达式,
6、共进行16组测试序号测试功能测试内容输入项预期输出实际输出结果16/16带括号的算术表达式求值1基本计算操作单括号运算2*(3+4)+5*3=2929通过2基本计算操作多括号运算3+((4+3)*6)/3=1717通过3基本计算操作不能除整运算6*(2+(3/2))=2118有误差4基本计算操作不能除整运算(1+2+3)/4=1.51有误差5式子正误判断括号不匹配1+(1+3*2=输出错误信息输出错误信息通过6式子正误判断计算符多余1++2*3+6=输出错误信息输出错误信息通过7式子正误判断含非计算符x+y*z+w=输出错误信息输出错误信息通过8式子正误判断未输入”=”1+
7、2*377通过9容错能力除数为02+3/0=输出除数为0输出除数为0通过10容错能力自动去空格1+2*(3+4)=1515通过11容错能力“=”输为”#”2*(3+2)#1010通过12拓展功能多位正数计算10*(2+13)=150输出错误信息未通过13拓展功能负数计算4+3*(-4)+5=-3输出错误信息未通过15拓展功能小数计算1+10*0.1/2=6输出错误信息未通过16全体测试最终测试2*(4–(3+3))+3#-1-1通过Ø部分运行截图l基本计算操作16/16带括号的算术表达式求值不能整除运算(3)多括号
此文档下载收益归作者所有