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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

表达式求值报告.docx

1、表达式求值报告课程设计报告样本数据结构课程设计报告题 目: 表达式求值 院 (系): 计算机工程学院 专 业: 计算机科学与技术 班 级: 嵌入式109(1) 学 生: 倪利权 指导教师: 寇海洲 孙成富 邱军林 殷 路 2010年 12月目录一、设计目的 1二、设计内容 1三、程序设计步骤 1四、调试分析 9五、测试结果 10六、课程设计小结: 11一、设计目的1、能根据实际问题的具体情况,结合数据结构课程中的基本理论和基本算法,分析并正确确定数据的逻辑结构,合理地选择相应的存储结构,并能设计出解决问题的有效算法。2、提高程序设计和调试能力。学生通过上机实习,验证自己设计的算法的正确性。学会

2、有效利用基本调试方法,迅速找出程序代码中的错误并且修改。3、初步掌握软件开发过程中问题分析、系统设计、程序编码、测试等基本方法和技能。4、训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。5、培养根据选题需要选择学习书籍,查阅文献资料的自学能力。二、设计内容1、系统名称:表达式求值 通过屏幕输入加减乘除及括号来实现表达式求值。2、要求:(1)当用户输入一个合法的算术表达式后,能够返回正确的结果。能够计算的运算符包括:加、减、乘、除、括号;能够计算的操作数要求包括在整数范围内;对于异常的表达式能给出错误的提示。三、程序设计步骤1)功能分析说明图:2)采

3、用主要的数据结构类型。定义一两个栈一个为存储整数一个存储运算符、全局变量/* 定义字符类型栈 */ typedef struct int stacksize; char *base; char *top; Stack/* 定义整型栈 */typedef struct int stacksize; int *base; int *top; Stack2;/* - 全局变量- */ Stack OPTR;/* 定义运算符栈*/Stack2 OPND; /* 定义操作数栈 */ char expr255 = ; /* 存放表达式串 */ char *ptr = expr; 2、对数据初始化及判断、操

4、作的函数初始化函数int InitStack(Stack *s) /构造运算符栈 s-base=(char *)malloc(STACK_INIT_SIZE*sizeof(char); if(!s-base) return ERROR; s-top=s-base; s-stacksize=STACK_INIT_SIZE;return OK; int InitStack2(Stack2 *s) /构造操作数栈 s-base=(int *)malloc(STACK_INIT_SIZE*sizeof(int); if(!s-base) return ERROR; s-stacksize=STACK_

5、INIT_SIZE; s-top=s-base; return OK; 对栈中数据存取和删除的函数int Push(Stack *s,char ch) /运算符栈插入ch为新的栈顶元素 *s-top=ch; s-top+; return 0; int Push2(Stack2 *s,int ch)/操作数栈插入ch为新的栈顶元素 *s-top=ch; s-top+; return 0; char Pop(Stack *s) /删除运算符栈s的栈顶元素,用p返回其值 char p;s-top-; p=*s-top; return p; int Pop2(Stack2 *s)/删除操作数栈s的栈顶

6、元素,用p返回其值 int p;s-top-; p=*s-top; return p;char GetTop(Stack s)/用p返回运算符栈s的栈顶元素 char p=*(s.top-1); return p; int GetTop2(Stack2 s) /用p返回操作数栈s的栈顶元素 int p=*(s.top-1); return p; 对操作符的运算优先级别的定义的函数/* 判断运算符优先权,返回优先权高的 */char Precede(char c1,char c2) int i=0,j=0; static char array49=, , , , , , , , , , , ,

7、, , , , , , , , , , , , , , , , , , , , !, , , , , , , , !, =; switch(c1) /* i为下面array的横标 */ case + : i=0;break; case - : i=1;break; case * : i=2;break; case / : i=3;break; case ( : i=4;break; case ) : i=5;break; case # : i=6;break; switch(c2) /* j为下面array的纵标 */ case + : j=0;break; case - : j=1;brea

8、k; case * : j=2;break; case / : j=3;break; case ( : j=4;break; case ) : j=5;break; case # : j=6;break; return (array7*i+j); /* 返回运算符 */ 3、主函数和主要计算函数int EvalExpr()/主要操作函数 char c,theta,x; int n,m;int a,b; c = *ptr+; while(c!=#|GetTop(OPTR)!=#) if(!In(c) if(!In(*(ptr-1) ptr=ptr-1;m=atoi(ptr);/取字符串前面的数字

9、段n=num(m); Push2(&OPND,m); ptr=ptr+n;c=*ptr+; else switch(Precede(GetTop(OPTR),c) case : theta=Pop(&OPTR); b=Pop2(&OPND); a=Pop2(&OPND); Push2(&OPND,Operate(a,theta,b);break; return GetTop2(OPND); int main( ) printf(请输入正确的表达式以#结尾:); do gets(expr); while(!*expr); InitStack(&OPTR); /* 初始化运算符栈 */ Push(

10、&OPTR,#); /* 将#压入运算符栈 */ InitStack2(&OPND); /* 初始化操作数栈 */ printf(表达式结果为:%dn, EvalExpr();return 0; 四、调试分析调试的过程中,对程序做了几点改进,增加了程序的容错能力,不论用户输入什么内容,程序都能安全检查。每次输入以#为结束。本习题是对栈的经典应用需理解栈的存储结构和数据操作,同时要有清晰的思路分析。五、测试结果进入演示程序后,即显示主界面为:输入一串表达式字符输出结果六、课程设计小结:通过本次课程设计自己感觉编程水平有了一定程度上的提高尤其对数据、有更深层次的理解本次设计遇到了相当大的困难尤其是如何对输入的字符、数据之间的判断、但是在查阅资料后问题顺利解决虽然程序顺利编译是还是有两个警告可能和指针有关,说明还是要注重基础知识的应用,还有程序的层次必须要清晰,明白了在本课程设计开始之前对整个程序要有整体上的把握,搭建好框架,然后再详细实现每个模块所实现的功能这次课程设计的界面不是很友好,原本计划是用c#来实现窗口应用程序的但是由于c#中没有指针所以放弃。通过本次课程设计发现自己存在严重的不足,在今后的学习中应该更加努力地学习,在实践中不断完善自己。

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

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