2022/4/25 20:18:00 软 件 学 院 课程设计报告书 课 程 名 称 数 据 结 构 设 计 题 目 算 术 表 达 式 求 值 演 示 程 序 专业班级 学 号 姓 名 指导教师 2 0 1 0 年 1 2 月 1 目录 1.设计时间 2 2.设计目的 2 3.设计任务 2 4.设计内容 2 4.1 需求分析 2 4.2 总体设计 2 4.2.1 抽象数据类型定义 2 4.2.2 函数模块说明 3 4.2.3 主函数流程图 4 4.2.4 函数模块调用关系 5 4.2.5 运算符间的优先关系 5 4.3 详细设计 6 4.3.1 数据类型的定义 6 4.3.2 函数调用关系 8 4.3.3 主要模块的算法描述 8 4.4 测试与分析 10 4.4.1 测试 10 4.4.2 分析 11 4.5 附录 11 5.总结与展望 16 参考文献 17 成绩评定 17 2 1 设计时间 2010.12.27-2011.1.3 2 设计目的 掌握栈的使用和把一个表达式翻译成能够正确求值的一个机器指令序列的原理。 3 设计任务 设计一个程序,演示用算符优先法对算术表达式求值的过程。 4 设计内容 4.1 需求分析 1、程序所能达到的功能:能够处理以字符序列的形式输入的不含变量的实数表达式,正确处理负数与小数,判断表达式是还语法正确(包含分母不能为零的情况),正确实现对算术四则混合运算表达式的求值,能够将计算中遇到的问题和结果以文件的形式予以存储。 2、输入的形式和输入值的范围:以字符串的形式输入表达式,以“#”结束。 3、输出的形式:在计算过程中遇到的问题或最终的答案将显示在屏幕上,同时所计算的表达式的最终的结果也将保存在文件中。 4、测试数据:输入“3*(7-2)#”时,输出“15.000000”,测试正确;输入“!(9-2)# ”时,输出“输入错误!”,测试正确。 4.2 总体设计 4.2.1 抽象数据类型定义 ADT Stack{ 数据对象:D={ia |ia ∈ElemSet,i=1,2,… ,n, n≧0} 数据对象:R1={<1,ii aa>|1ia,Dai ,i=2,… ,n} 约定na 端为栈顶,ia 端为栈底。 基本操作: InitStack(&S) 操作结果:构造一个空栈S。 GetTop(S) 初始条件:栈S 已存在。 3 操作结果:用P 返回S 的栈顶元素。 Push(&S,ch) 初始条件:栈S 已存在。 操作结果:插入元素ch 为新的栈顶元素。 Pop(&S) 初始条件:栈S 已存在。 操作结果:删除S 的栈顶元素。 In(ch) 操作结果:判断字符是否是运算符,运算符即返回1。 Precede(c1, c2) 初始条件:c1,c2 为运算符。 操作结...