1、手机端页面文档仅支持阅读 15 页,超过 15 页的文档需使用电脑才能全文阅读。
2、下载的内容跟在线预览是一致的,下载后除PDF外均可任意编辑、修改。
3、所有文档均不包含其他附件,文中所提的附件、附录,在线看不到的下载也不会有。
其数据测试的情况见截图表达式运算结果第页表达式二运行结果表达式三运行结果第页表达式四运行结果由表二可知以上四组表达式运行结果皆正确。
表达式五运行结果由表二可知第五组表达式。
第页附录二部分表达式组别第个字符前个运算符符当前运算符后个字符表调试分析与结果附录测试数据组别表达式正确值表达式表二第页按照附录中的测试,‟‟,‟‟,‟‟„‟,‟‟,‟‟„‟,‟‟,‟利用该算法对算术表达式求值操作过程如下步骤栈栈输入表达式主要操作,‟‟,‟‟,‟‟字符退出循环退出最外层循环调用函数,得到栈顶元素将两个栈消毁函数结束第页到调用并将结果入栈到数字栈优生权相等脱括号并接收下个字符调用,脱括号接收下个字符接收下个判断栈顶元素与接收的字符的优生级别栈顶运算符优先权低调用函数,将入运算符栈接收下个字符栈顶运算符优先权高运算符出栈得到数字栈连续出栈两次得符为运算符前个为调用函数,得到的栈顶元素调用函数,或者为表达式的开始调用,将的相反数入栈调用,将入栈第页数字进栈结束是运算符时则进栈运算析小数部分将指针移到第个出现的字符将指针指向小数的最后位指针不指向‟‟将指向的字符转为小数运算符为并且运算符前个为表达式没有结束进入最外层循环不是运算符则解析数字字符串然后进操作数栈整数部分小数部分没有遇到小数点并且为数字字符解析整数部分遇到小数点解初始化栈调用函数,将压入运算符栈第页第个字符就为栈不为空或指向运算符后面的个字符将传入的实参赋给定义个运算符栈定义个操作数栈调用函数初始化栈调用函数码定义两个字符变量和,代表输入表达式中的字符,代表栈顶运算符定义字符指针运算符的栈底元素依次读入表达式中每个字符,若是操作数则进栈,若是运算符则和栈的栈顶运算符比较优先权作相应操作,直至整个表达式求值完毕即栈的栈顶元素和当前读入的字符均为此算法的伪代其它子函数,实现最终的表达式求解。
各程序模块之间的调用关系子程序编号见上主函数可调用子程序。
子程序可调用子程序,。
详细设计此算法的基本思想首先置操作数栈为空栈,表达式起始符为入。
主菜单打印函数。
清屏函数。
这是此程序的核心函数,可以综合解析表达式中的双目第页运算,其返回的结果即为双目运算表达式的值。
提示函数,实现对多种非法四则表达式的判断,并给出提示,让用户更正自己的输入解析表达式中的双目第页运算,其返回的结果即为双目运算表达式的值。
提示函数,实现对多种非法四则表达式的判断,并给出提示,让用户更正自己的输入。
主菜单打印函数。
清屏函数。
这是此程序的核心函数,可以综合其它子函数,实现最终的表达式求解。
各程序模块之间的调用关系子程序编号见上主函数可调用子程序。
子程序可调用子程序,。
详细设计此算法的基本思想首先置操作数栈为空栈,表达式起始符为运算符的栈底元素依次读入表达式中每个字符,若是操作数则进栈,若是运算符则和栈的栈顶运算符比较优先权作相应操作,直至整个表达式求值完毕即栈的栈顶元素和当前读入的字符均为此算法的伪代码定义两个字符变量和,代表输入表达式中的字符,代表栈顶运算符定义字符指针指向运算符后面的个字符将传入的实参赋给定义个运算符栈定义个操作数栈调用函数初始化栈调用函数初始化栈调用函数,将压入运算符栈第页第个字符就为栈不为空或表达式没有结束进入最外层循环不是运算符则解析数字字符串然后进操作数栈整数部分小数部分没有遇到小数点并且为数字字符解析整数部分遇到小数点解析小数部分将指针移到第个出现的字符将指针指向小数的最后位指针不指向‟‟将指向的字符转为小数运算符为并且运算符前个为或者为表达式的开始调用,将的相反数入栈调用,将入栈第页数字进栈结束是运算符时则进栈运算符为运算符前个为调用函数,得到的栈顶元素调用函数,判断栈顶元素与接收的字符的优生级别栈顶运算符优先权低调用函数,将入运算符栈接收下个字符栈顶运算符优先权高运算符出栈得到数字栈连续出栈两次得到调用并将结果入栈到数字栈优生权相等脱括号并接收下个字符调用,脱括号接收下个字符接收下个字符退出循环退出最外层循环调用函数,得到栈顶元素将两个栈消毁函数结束第页利用该算法对算术表达式求值操作过程如下步骤栈栈输入表达式主要操作,‟‟,‟‟,‟‟,‟‟,‟‟,‟‟„‟,‟‟,‟‟„‟,‟‟,‟表调试分析与结果附录测试数据组别表达式正确值表达式表二第页按照附录中的测试数据,得出如下测试分析结果当我们输入表格中两个正确的四则表达式时程序能准确地求得其值完全支持浮点数,正负数的运算而当我们输入第五组的表达式时,程序能做出正确判断,提醒用户输入的表达式。
其数据测试的情况见截图表达式运算结果第页表达式二运行结果表达式三运行结果第页表达式四运行结果由表二可知以上四组表达式运行结果皆正确。
表达式五运行结果由表二可知第五组表达式。
第页附录二部分表达式组别第个字符前个运算符符当前运算符后个字符第页,第页判断是否为运算符第页比较两个运算符的优先级,是栈顶字符,是表达式字符第页运算函数第页提示函数,主要通过判断所有输入的字符数组其它函数只要声明也就说明输入有误第页提示函数表达式计算函数代表输入表达式中的字符,代表栈顶运算符指向运算符后面的个字符第页运算符栈操作数栈栈不为空或表达式没有结束进入最外层循环,不是运算符则解析数字字符串然后进操作数栈课程设计报告课程名称数据结构课程设计课程设计题目表达式求值问题姓名系计算机科学与技术专业计算机科学与技术年级级学号指导教师职称讲师年月日目录设计目的设计要求设计方案设计内容需求分析概要设计详细设计调试分析与结果使用说明总结附录三源代码第页表达式求值问题设计目的数据结构课程设计是计算机专业集中实践性环节之,是学习完数据结构课程后进行的次全面的综合练习。
其目的是要达到理论与实际应用相结合,使学生能够根据数据对象的特性,学会数据组织的方法,能把现实世界中的实际问题在计算机内部表示出来,并培养良好的程序设计技能。
在实践中认识为什么要学习数据结构,掌握数据结构程序设计语言程序设计技术之间的关系,是前面所学知识的综合和回顾。
设计要求以字符序列的形式从键盘输入语法正确的不含变量的整数或实数表达式,实现对算术四则混合运算表达式的求值。
当用户输入个合法的算术表达式后,能够返回正确的结果。
能够计算的运算符包括加减乘除括号,对于异常表达式能给出提示。
设计方案任何个表达式都是由操作符,运算符组成的。
我们分别用顺序栈来寄存表达式的操作数和运算符。
栈是限定于紧仅在表尾进行插入或删除操作的线性表。
顺序栈的存储结构是利用组连续的存储单元依次存放自栈底到栈顶的数据元素。
为了实现算符优先算法。
可以使用两个栈。
个称为,用以寄存运算符,另个称做,用以寄存操作数或运算结果。
首先置操作数栈为空栈,表达式起始符为运算符栈的栈底元素依次读入表达式,若是操作符即进栈,若是运算符则和栈的栈顶运算符比较优先权后作相应的操作,直至整个表达式求值完毕即栈的栈顶元素和当前读入的字符均为。
第页设计内容需求分析本程序所做的工作为能直接求出四则表达式的值,并输出本程序可用于小学教师对学生作业的快速批改以及对数值位数要求较大的科学运算。
概要设计用于存储操作数和运算结果数据元素此链栈中的所有元素类型为字符型的数字字符数据关系栈中数据
