c语言,c算数表达式求值

上传人:汽*** 文档编号:491773599 上传时间:2023-03-30 格式:DOC 页数:19 大小:112KB
返回 下载 相关 举报
c语言,c算数表达式求值_第1页
第1页 / 共19页
c语言,c算数表达式求值_第2页
第2页 / 共19页
c语言,c算数表达式求值_第3页
第3页 / 共19页
c语言,c算数表达式求值_第4页
第4页 / 共19页
c语言,c算数表达式求值_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《c语言,c算数表达式求值》由会员分享,可在线阅读,更多相关《c语言,c算数表达式求值(19页珍藏版)》请在金锄头文库上搜索。

1、文档供参考,可复制、编制,期待您的好评与关注! 数 据 结 构课程设计说明书题 目算术表达式求值学 号姓 名指导教师日 期2012.6目录第1章 需求分析4第2章 总体设计4第3章 抽象数据类型设计5第4章 详细设计64.1 工程视图64.2 类图视图64.3 函数的调用关系74.4 主程序流程图74.5 主要算法的流程图8第5章 测试9第6章 总结10附录:程序代码11课程名称数据结构课程设计设计题目算术表达式求值指导教师余金林时间2012.62012.7一、教学要求1. 掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力2. 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试

2、等基本方法和技能3. 提高综合运用所学的理论知识和方法独立分析和解决问题的能力4. 训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风二、设计资料及参数每个学生在教师提供的课程设计题目中任意选择一题,独立完成,题目选定后不可更换。算术表达式求值以字符串表示算术表达式,在此基础上借助栈完成对表达式的转换和求值操作。要求设计类(或类模板)来描述算术表达式及其操作,包含必要的构造函数和析构函数,以及其他能够完成如下功能的成员函数:v 输入算术表达式(中缀表示)v 中缀表达式转换为后缀表达式v 输出表达式v 对后缀表达式求值 并设计主函数测试该类。三、设计要求

3、及成果1. 分析课程设计题目的要求2. 写出详细设计说明3. 编写程序代码,调试程序使其能正确运行4. 设计完成的软件要便于操作和使用5. 设计完成后提交课程设计报告四、进度安排资料查阅与讨论(1天)系统分析(2天)系统的开发与测试(5天)编写课程设计说明书和验收(2天)五、评分标准1. 根据平时上机考勤、表现和进度,教师将每天点名和检查2. 根据课程设计完成情况,必须有可运行的软件。3. 根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。4. 根据答辩的情况,应能够以清晰的思路和准确、简练的语言叙述自己的设计和回答教师的提问六、建议参考资料1数据结构 (C语言版)严蔚敏、吴伟

4、民 主编 清华大学出版社 2004.112数据结构课程设计案例精编(用C/C+描述),李建学 等 编著,清华大学出版社 2007.23.数据结构:用面向对象方法与C+语言描述,殷人昆 主编,清华大学出版社 2007.6第1章 需求分析在计算机中,算术表达式由常量、变量、运算符和括号组成。由于不同的运算符具有不同的优先级,又要考虑括号,因此,算术表达式的求值不可能严格地从左到右进行。因而在程序设计时,借助栈实现。算法输入:一个算术表达式,由常量、变量、运算符和括号组成(以字符串形式输入)。为简化,规定操作数只能为正整数,操作符为+、-*、/。算法输出:表达式运算结果。算法要点:设置运算符栈和运算

5、数栈辅助分析算符优先关系。在读入表达式的字符序列的同时,完成运算符和运算数的识别处理,以及相应运算。第2章 总体设计图2.1第3章 抽象数据类型定义ADT SqstackbasetopstacksizeSqStackPushGetTopPop 成员变量 成员函数图3.1ADT Sqstack数据对象:D=Ci/Cisqstack,i=1,2,n,n0数据关系:R=1 Ci-1,CiD,i=2,n基本操作:input(base,top,stacksize)初始条件:base,top是字符型数据;stacksize是整型数据操作结果:生成一个算术表达式Get base(&base,a)初始条件:若

6、T存在操作结果:生成一个栈底元素 baseGet top(&top,b)初始条件:若T1存在操作结果:生成一个栈顶元素 topGet char(&char,c)初始条件:若c存在操作结果:脱括号并接收下一字符Get push(&push,d)初始条件:若d存在操作结果:将#压入运算符栈其中DPND为操作数栈,DPTR为运算符栈a,bOPND c,dDPTRADT Sqstack第4章 详细设计4.1 工程视图图4.14.2 类图视图图4.24.3 函数的调用关系主函数main() 调用cal()函数Return0图4.34.4 主程序流程图开始Int e=-1switchcase #: e=6

7、case ): e=5case (: e=4;case /: e=3case *: e=2case -: e=1case +: e=0结束图4.44.5 主要算法的流程图开始提示用户输入用户输入判断输入格式正误判断符号判断优先级结束第5章 测试图5.1图5.2图5.3第6章 总结 这次课程设计让我更加了解大一学到的C和这个学期学到的数据结构。课设题目要求不仅要求对课本知识有较深刻的了解,同时要求程序设计者有较强的思维和动手能力和更加了解编程思想和编程技巧。 这次课程设计让我有一个深刻的体会,那就是细节决定成败,编程最需要的是严谨,如何的严谨都不过分,往往检查了半天发现错误发生在某个括号,分号,

8、引号,或者数据类型上。 程序设计时,不要怕遇到错误,在实际操作过程中犯的一些错误还会有意外的收获,感觉课程设计很有意思。在具体操作中这学期所学的数据结构的理论知识得到巩固,达到课程设计的基本目的,也发现自己的不足之出,在以后的上机中应更加注意,发现上机的重要作用,特别对算术表达式有了深刻的理解。参考资料:1数据结构 (C语言版)严蔚敏、吴伟民 主编 清华大学出版社 2004.112数据结构课程设计案例精编(用C/C+描述),李建学 等 编著,清华大学出版社 2007.23.数据结构:用面向对象方法与C+语言描述,殷人昆 主编,清华大学出版社 2007.6附录:程序代码#include #inc

9、lude #include #include /*/类模版定义template class SqStack private:T *base;/ 栈底 T *top;/栈顶 int stacksize;/栈的大小public:/公有属性(公有成员)SqStack();/建立一个新栈Push(T e);/压入一个新数据GetTop();/取得最上面的数据Pop();/弹出最上面的数据;template SqStack :SqStack()/作用域限定运算符base = (T*)malloc(100*sizeof(T);/新建一个栈底空间if(!base)/如果没有这个空间exit (0);/分配内

10、存失败top=base;/栈底被赋值为栈顶stacksize = 100;/栈的大小100template int SqStack :GetTop()/将栈模版转换为整形限定域GetTop()T e;/栈类型变量if(top=base)/栈顶等于栈底return 0;/返回栈空的情况e=*(top-1);/指向下一个栈顶return e;/返回栈 template int SqStack :Pop()/将栈模版转换为整形并且弹出最上面的数据T e;/栈类型变量if(top=base)/栈顶等于栈底return 0;/返回栈空的情况e=* -top;/弹出指向下一个栈顶return e;/返回栈

11、template int SqStack :Push(T e)/将栈模版转换为整形并且出栈if(top-base=stacksize)/栈满的情况base=(T*)realloc(base,(stacksize+10)* sizeof(T);/追加空间10if(!base)/如果没有栈底 exit (0);/空间分配失败top=base+stacksize;/如果有栈底栈顶等于栈底加数据空间*top+=e;/栈顶等于ereturn 1;/返回状态1(出栈的证明)/*/基本函数定义int Isnum(char e)/判断是否是数字if(e=0&e=9)/如果E等于0或者E大于0小于9return 1;/返回状态1else/否则return 0;/返回状态0int Primary(char x)/判断是什么符号int e=-1;/把E初始化为-1switch (x)/switch语句,是一种多路判定语句case +: e=0;break;/如果输入满足条件,e等于0case -: e=1;break;case *: e

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 国内外标准规范

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号