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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

表达式求值.docx

1、表达式求值课 程 设 计 报 告课程名称 数据结构 课题名称 表达式求值 专 业 计算机科学与技术 班 级 0901 学 号 200903010102 姓 名 覃宇星 指导教师 李珍辉 邓作杰 郭芳 2011年7月7日湖南工程学院课 程 设 计 任 务 书课程名称 C语言程序设计 课 题 表达式求值 专业班级 计算机0901 学生姓名 学 号 指导老师 周铁山 审 批 任务书下达日期 2011年 6月 23 日任务完成日期 2011年 7月 7日数据结构课程设计一、 课程设计的性质和目的数据结构课程设计是计算机专业的专业课程,通过课程设计使学生进一步巩固课堂所学知识,全面熟悉、掌握数据结构的基

2、本设计方法和技巧,进一步提高分析问题、解决问题及上机操作能力,为将来从事计算机工作打下一定的专业基础。二、 设计课题课题一:迷宫问题详细内容见后课题二:马踏遍棋盘问题 详细内容见后课题三:表达式求值问题详细内容见后课题四:B+树的实现详细内容见后三、 课程设计报告要求课程设计报告每人一份,必须包含如下几个方面的内容:1.基本设计思想;2.主要数据结构;3.主要实施流程;4.所有源代码;5.课程设计总结与体会。四、 分组及选题办法1、 一人一组。2、 若选择课题四,则只需完成一题即可;否则,必须至少完成前三个课题中的任意两个。3、 成绩考核按个人课题完成情况、设计报告质量及对课程设计的态度等综合

3、评定。五、设计进度安排1、 讲课及上机调试时间安排:各班具体时间另行安排2、 其余时间:查阅资料,确定方案,设计课题相关程序。3、 分组答辩,交课程设计报告。 设计课题三:表达式求值问题一、问题提出 在高级语言程序中出现的数学表达式要进行求值运算,本课程设计要求模拟编译程序的求值过程,利用栈这种数据结构,对包含四则算术运算及多重括号及常量的表达式进行求值运算。二、设计要求1一次性输入一个表达式,包含数值常量、四则算术运算符、括号等。2能输出表达式的正确结果。1 输入输出界面清晰明了。三、设计提示1可用两个栈(操作数栈和运算符栈)来存储运算过程中的原始数据及中间结果。2运算过程中要将输入的数字型

4、字符转化为数值。3. 可以利用一个函数返回运算符之间的优先关系;也可将一个运算符放入一个一维数组,并根据运算符在该数组中的位置建立一个二维数组,存放运算符之间的优先关系。目录一. 流程图vi二. 基本设计思想vii三.主要数据结构vii四.主要实施流程vii五.运行结果举例vii六.源代码ix七.课程设计总结与体会xvi八评分表xvii一 . 流程图二.基本设计思想:1可用两个栈(操作数栈和运算符栈)来存储运算过程中的原始数据及中间结果。2运算过程中要将输入的数字型字符转化为数值。3. 可以利用一个函数返回运算符之间的优先关系;也可将一个运算符放入一个一维数组,并根据运算符在该数组中的位置建立

5、一个二维数组,存放运算符之间的优先关系。三.主要数据结构: Shuzi zifu 两个栈;四.主要实施流程: 一次性输入一个表达式,包含数值常量、四则算术运算符、括号,中括号 大括号等。通过push(分别把数字和字符入站) gettop(分别取数字和字符两个栈顶元素) top(分别读数字和字符两个栈顶元素) in(判断是否为数字还是字符) compare(比较运算符的优先级) jisuan(四则运算) ExpEvaluation(对表达式进行总体运算)等函数进行计算并得出结果五.运行结果举例进入主菜单,选1输入表达式,并计算结果显示出来(带中括号)输入表达式,并计算结果显示出来(带大括号)输入

6、2 程序结束六. 源代码:/*头文件 haha.h*/#include stdio.h#define M 100typedef struct int t1M; int top; shuzi;int Push1(shuzi *p, int x)if(p-top=M-1) return(0); p-top+; p-t1p-top=x; return(1);int gettop1(shuzi *p, int *x) if(p-top=-1) /* 将栈S的栈顶元素弹出,放到x所指的存储空间中 */ return(0); else *x=p-t1p-top; p-top-; /* 修改栈顶指针 */

7、return(1);int Top1(shuzi *p, int *x) /将栈S的栈顶元素弹出,放到x所指的存储空间中,但栈顶指针保持不变 if(p-top=-1) /*栈为空*/ return(0); else *x=p-t1p-top; return(1);typedef structchar t2M; int top; zifu;char Push2(zifu *s, char x)if(s-top=M-1) return(0); s-top+; s-t2s-top=x; return(1);char gettop2(zifu *s, char *x) /* 将栈S的栈顶元素弹出,放到

8、x所指的存储空间中 */ if(s-top=-1) return(0); else *x=s-t2s-top; s-top-; return(1);int Top2(zifu *s, char *x) /将栈S的栈顶元素弹出,放到x所指的存储空间中,但栈顶指针保持不变 if(s-top=-1) return(0); else *x=s-t2s-top; return(1);int In(char ch) if(ch=+) return 1; else if(ch=-) return 1; else if(ch=*) return 1; else if(ch=/) return 1; else

9、if(ch=() return 1; else if(ch=) return 1; else if(ch=) return 1; else if(ch=) return 1; else if(ch=) return 1; else if(ch=) return 1; else if(ch=#) return 1; else return 0;char Compare(char x,char ch) switch(x) case +: if(ch=+|ch=-|ch=)|ch=|ch=|ch=#) return ; else if(ch=*|ch=/|ch=(|ch=|ch=) return ;

10、 else if(ch=*|ch=/|ch=(|ch=|ch=) return ; break; case *: if(ch=(|ch=|ch=) return ; break; case /: if(ch=(|ch=|ch=) return ; break; case (: if(ch=+|ch=-|ch=*|ch=/|ch=() return ; else if(ch=(|ch=|ch=) return 0; break; case : if(ch=+|ch=-|ch=*|ch=/|ch=() return ; else if(ch=(|ch=|ch=|ch=)|ch=) return 0

11、; break; case : if(ch=+|ch=-|ch=*|ch=/|ch=(|ch=) return ; else if(ch=(|ch=|ch=|ch=)|ch=|ch=) return 0; break; case #: if(ch=+|ch=-|ch=*|ch=/|ch=(|ch=|ch=) return top=-1; s-top=-1; Push2(s,#); Top2(s,&y); printf(nPlease input an expression (Ending with #) :n); fflush(stdin); ch=getchar(); while(ch!=#

12、|y!=#) /* Top()通过函数值返回栈顶元素*/ if(!In(ch) /*不是运算符,是运算数*/ int temp; temp=ch-0; /*将字符转换为十进制数*/ fflush(stdin); ch=getchar(); while(!In(ch) /用ch逐个读入运算数的各位数码,并转化为十进制数temp temp=temp*10+ch-0; / 将逐个读入运算数的各位转化为十进制数 fflush(stdin); ch=getchar(); Push1(p,temp); else switch(Compare(y,ch) case : gettop2(s,&c); gett

13、op1(p,&b); gettop1(p,&a); v=jisuan(a,c,b); /* 对a和b进行c运算 */ Push1(p,v); break; Top2(s,&y); Top1(p,&v); return (v); void main() int g=1,h,k; while(g) printf(-主菜单-nn); printf(-1 表达式输入计算并输出结果-n); printf(-2 退出程序-n); printf(输入对应的序列号:n); scanf(%d,&h); switch(h) case 1:system(CLS); k=ExpEvaluation(); printf(计算结果为:%dnn,k); break; case 2:g=0;break; default:g=0; 七.课程设计总结与体会:这次的课程设计,遇到的问题颇多,比如走不出循环,没吃掉前面的字符,或者根本没进入循环等等,遇到问题后,就着手解决了,通过不断的努力和坚持,终于解决了以上问题,努力才有收获。计算机科学与技术系课程设计评分表课题名称: 表达式求值 项 目评 价设计方案的合理性与创造性设计与调试结果设计说明书的质量答辩陈述与回答问题情况课程设计周表现情况综合成绩 教师签名: 日 期: (注:1此页附在课程设计报告最后一页;2综合成绩按优、良、中、及格和不及格五级评定。)

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

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