ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:124.33KB ,
资源ID:15931063      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/15931063.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(表达式求值课程设计数据结构C语言版文档格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

表达式求值课程设计数据结构C语言版文档格式.docx

1、力水平能熟练应用所学知识,有一定查阅文献及运用文献资料能力理论依据充分,数据准确,公式推导正确能应用计算机软件进行编程、资料搜集录入、加工、排版、制图等能体现创造性思维,或有独特见解成果质量总体设计正确、合理,各项技术指标符合要求。说明书综述简练完整,概念清楚、立论正确、技术用语准确、结论严谨合理;分析处理科学、条理分明、语言流畅、结构严谨、版面清晰设计说明书栏目齐全、合理,符号统一、编号齐全。格式、绘图、表格、插图等规范准确,符合国家标准有一定篇幅,字符数不少于5000总 分100指导教师评语: 指导教师签名: 年 月 日四.结构分析: 14.1用于存储操作数和运算结果(Sfloat) 1五

2、.实现流程 35.1程序主流程图 35.2求值操作流程 3六.个性功能介绍 4七.部分问题及解决方案 57.1不能进行带有小数点的数的运算 57.2在输错后,跳回主界面直接提示指令输入错误,重输 6八.课程设计小结 7九.附录一:部分测试数据 7十.附录二:源代码 7一、题目: 二、课程设计任务:要求能输入一个带“( )”的任意多位实数的表达式。要求:1、有合理的提示;2、有非法数据的判断;3、能够进行多次计算。测试数据及测试结果请在上交的资料中写明;三、问题分析:任何一个表达式都是由操作符,运算符组成的。我们分别用顺序栈来寄存表达式的操作数和运算符。栈是限定于紧仅在表尾进行插入或删除操作的线

3、性表。顺序栈的存储结构是利用一组连续的存储单元依次存放自栈底到栈顶的数据元素。为了实现算符优先算法。可以使用两个栈。一个称为Schar,用以寄存运算符,另一个称做Sfloat,用以寄存操作数或运算结果。1.首先置操作数栈为空栈,表达式起始符”#”为运算符栈的栈底元素;2.依次读入表达式,若是操作符即进Sfloat栈,若是运算符则和Schar栈的栈顶运算符比较优先权后作相应的操作,直至整个表达式求值完毕(即Schar栈的栈顶元素和当前读入的字符均为”#”)。四、结构分析:1.用于存储操作数和运算结果(Sfloat):ADT s_float数据元素:此链栈中的所有元素类型为字符型的数字字符数据关系

4、:栈中数据元素之间是线性关系。基本操作:(1) Init(Sfloat *S); 初始化数字栈(2)Push(Sfloat*S,float e) 进栈(3)Pop(Sfloat*S,float*x) 出栈(4)GetTop(Sfloat *S,float *x) 取栈顶(5)void ClearStack(Sfloat *S) 清空栈 ADT s_float2.用于存储运算符(Schar):ADT s_char数据对象D:元素类型为字符型的符号字符数据关系R:基本操作:(1)Init(Schar *S)初始化字符栈(2)Push(Schar *S,char x)进栈 (3)Pop(Schar

5、*S,char *x)出栈 (4)GetTop(Schar *S,char *x)取栈顶(5)ClearStack(Schar *S)清空栈 ADT s_char3.系统中子程序及功能要求:(1)bool IsFloat(char ch)判断输入的是否为数字 (2)bool IsChar(char ch)判断输入的是否为所需要的字符 (3)float GetNumber(char *ch)将字符型数字转化为浮点型 (4)float Operation(float a,char sign,float b)+、-、*、/的基本运算(5)int Cmp(char x,char ch)比较字符的优先级

6、(6)void Master(); 程序主功能函数(7)void Error()错误提示界面(8)void Welcome() 程序欢迎界面(9)void End()结束选择界面五、实现流程1.程序主流程图2.求值操作流程 (下例为3*(7-2)的操作流程)步骤Schar栈Sfloat栈输入表达式主要操作1#3*(7-2)#Push(Sfloat,3)23*(7-2)#Push(Schar,*)#*(7-2)#Push(Schar,()4#*(7-2)#Push(Sfloat,7)53 7-2)#Push(Schar,-)6#*(-2)#Push(Sfloat,2)73 7 2)#Operat

7、ion(7,-,2)83 5Pop(Sfloat)9Operation(3,*,5)15Return(GetTop (Sfloat)六、个性功能介绍在本程序中,通过windows头文件的作用,实现了程序背景色的改变,不在是原本的黑白色,让人看得很新颖。通过Sleep函数,让程序出错或跳转其它界面时,不是迅速跳过,而是先提示即将跳转,让使用者更方便地了解程序的基本执行过程。七、实验过程中遇到的部分问题及解决方案1.不能进行带有小数点的数的运算错误运行结果解决方案解决后运行结果2.在输入错误后,跳回主界面时直接提示指令输入错误,重新输入。解决方案 导致这个的原因是错误后跳回主界面没有清除缓存,所以

8、需要在错误提示函数中添一个fflush(stdin)来刷新当前内存。运行结果八、课程设计小结通过这次的课程设计,让我更加地了解到C语言和数据结构的魅力。课程设计不仅要求对课本知识有较深刻的了解,同时要求程序设计者有较强的思维和动手能力,同时这也使我更加了解编程思想和编程技巧。这次课程设计让我有一个深刻的体会,那就是细节决定成败,编程最需要的是严谨,如何的严谨都不过分,往往检查了半天发现错误发生在某个括号,分号,引号,或者数据类型上,还有函数或变量命名一般要遵循其默认命名规则。就像我在写Master ()函数时,起初将各种标识符名称设置的乱七八糟,导致我后面自己都对各种变量名的指向的作用都混淆了

9、,后来还浪费了大量的时间进行优化命名,所以说细节很重要。程序设计时,也不要怕遇到错误,在实际操作过程中犯的一些错误还会有意外的收获,感觉课程设计很有意思。在具体操作中这学期所学的数据结构的理论知识得到巩固,达到课程设计的基本目的,也发现自己的不足之出,在以后的上机中应更加注意。以后我们会继续努力,大胆创新,争取能编写出透射着自己思想的程序。这次课程设计让我们充分认识到了自己的不足,认识到了动手能力的重要性。我们会在以后的学习中更加努力锻炼自己,提高自己,让自己写出更好更完善的程序,为以后的编程打好基础!附录一:部分测试数据组别表达式正确值1.23+4.5*1046.231.5*(1+9)-10

10、/513-(100-101)/50.201.23.5+6.5*12错误5+4*1.25)附录二:源代码#includestdlib.hwindows.h#define MAXSIZE 20/建立字符栈typedef struct char arrMAXSIZE; int top;Schar;void Init(Schar *S) /初始化 S-top=-1;int Push(Schar *S,char x) /进栈 if(S-top=MAXSIZE-1) return 0;top+;arrS-top=x; return 1;int Pop(Schar *S,char *x) /出栈 top=-

11、1) else *x=S-top;top-; int GetTop(Schar *S,char *x) /取栈顶char GetTop(Schar S) char x; GetTop(&S,&x); return x;void ClearStack(Schar *S) /清空栈 top!=-1) S-/建立数字栈typedef struct float arrMAXSIZE;Sfloat;void Init(Sfloat *S) /初始化 int Push(Sfloat *S,float e) /进栈 top=MAXSIZE-1)top=e;int Pop(Sfloat *S,float *x) /出栈 *x=S-int GetTop(Sfloat *S,float *x)/ 取栈顶top=-1)float GetTop(Sfloat S) float x;void ClearStack(Sfloat *S) /清空栈 =-1) S-t

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1