| 注册
home doc ppt pdf
请输入搜索内容

热门搜索

年终总结个人简历事迹材料租赁合同演讲稿项目管理职场社交

数据结构(C语言版)课程设计报告表达式求值说明书

文***享

贡献于2020-12-22

字数:6503


XX学

数结构
课程设计说明书



题目 表达式求值



院 系: 计算机科学工程学院
专业班级: 计算机班
学 号:
学生姓名:
指导教师:  

2013年 X 月X 日


XX学课程设计(文)务书

计算机科学工程 学院
学 号

学生姓名

专业(班级)

设计题目
表达式求值






系统台:Windows 7Windows XP
开发工具:VC++60






(1)够计算运算符包括:加减圆括号
(2)够计算数求实数范围
(3)执行重括号嵌套运算
(4)异常表达式出错误提示



课程设计报告求少3000字
源程序求少300行





201311211201 根课程设计纲求查找相关资料完成需求分析
201312021216 进行系统概设计
201312171231 进行系统详细设计源代码书写
201401010117 系统进行调试分析写出课程设计报告





[1]钦铭编C语言程序设计北京:高等教育出版社2007
[2]谭浩强编著C程序设计(第四版)北京:清华学出版社2008
[3]严蔚敏吴伟民编著数结构(C语言版)北京:清华学出版社2007
[4]严蔚敏吴伟民编著数结构题集 北京:清华学出版社2007

指导教师签字

教研室签字

2013年 X月 X 日

学生姓名: 学号: 专业班级:
课程设计题目: 表达式求值

指导教师评语:

















成绩:




指导教师:

年 月 日

XX学课程设计(文)成绩评定表



目  录
1 需求分析 1
2 概设计 1
21 设计思路 1
22 存储结构设计 1
23 功模块设计 1
3 详细设计 1
4 运行测试 1
5总结 1
参考文献 2


(求:出级目录二级目录宋体四号字15倍行距页码罗马数字居中)











(报告正文部分):
(求:正文部分律四号字宋体行距20磅级标题左加粗二级标题左加粗正文页码单独开始阿拉伯数字编码居中)
1 需求分析
1程序达功:够处理字符序列形式输入含变量实数表达式正确处理数判断表达式语法正确正确实现算术四混合运算表达式求值 
2输入形式输入值范围:字符串形式输入表达式#结束 
3输出形式:计算程中遇问题终答案显示屏幕 
4测试数:输入3*(72)#时输出15000000测试正确输入(92)#时输出输入错误测试正确
2 概设计
21 设计思路
实现算符优先算法两工作栈称OPTR寄存运算符称作OPND寄存操作数运算结果算法基思想:
(1)首先置非运算符栈空栈表达式起始符# 运算符栈栈底元素
(2)次读入表达式中字符非运算符进OPND栈运算符OPTR栈栈顶运算符较优先权做相应操作直整表达式求值完毕(OPTR栈栈顶元素前读入字符均#)
算法中调两函数中Precede判定运算符栈顶运算符a读入运算符b间优先关系函数Operate进行二元运算a theta b函数果编译表达式产生运算组相应指令返回存放结果中间变量名果解释执行表达式直接进行该运算返回运算结果


22 存储结构设计
 表达式操作符运算符界限符组成需两栈char类型栈寄存运算符int类型栈寄存非运算符 
定义结点元素结构(存放运算符)
typedef struct charstack
{
char *base
char *top
int stacksize
}SqStackchar
定义结点元素结构(存放非运算符)
typedef struct intstack
{
float *base
float *top
int stacksize
}SqStackint
23 功模块设计
1栈基功:
(1) InitStackchar(Stackchar &S):构造运算符栈
(2) InitStackint(Stackint &S):构造非运算符栈
(3) Pushchar(SqStackchar &Schar e):运算符栈插入元素e新栈顶元素
(4) Pushint(SqStackint &Sfloat e):非运算符栈插入元素e新栈顶元素
(5) Popchar(SqStackchar &Schar &e): 删运算符栈S栈顶元素e返回值
(6) Popint(SqStackint &Sfloat &e):删非运算符栈S栈顶元素e返回值
(7) GetTopchar(SqStackchar S):e返回运算符栈S栈顶元素
(8) float GetTopint(SqStackint S) e返回操作数栈S栈顶元素
2功分析:
(1) Xiaoshu(char c)计算数
(2) Precede(char achar b) 判断运算符优先权功算符间优先关系见表1:
表1 算符间优先关系

+

*

(
)
#
+
>
<
<
<
<
>
>

>
>
<
<
<
>
>
*
>
>
>
>
<
>
>

>
>
>
>
<
>
>
(
<
<
<
<
<


)
>
>
>
>

>
>
#
<
<
<
<
<



(3) Operate(float achar thetafloat b) 操作数应运算符进行运算功运算结果直接返回 
3 详细设计(程序源代码)
#include
#include
#define MAXSIZE 100 存储空间初始分配量
#define STACKINCREMENT 10 存储空间分配增量


typedef struct charstack
{
char *base 栈构造前base值NULL
char *top 栈顶指针
int stacksize 前已分配存储空间元素单位
}SqStackchar 定义结点元素结构(存放运算符)

typedef struct intstack
{
float *base 栈构造前base值NULL
float *top 栈顶指针
int stacksize 前已分配存储空间元素单位
}SqStackint 定义结点元素结构(存放非运算符)

int InitStackchar(SqStackchar &S){
构造空栈(存放非运算符)
Sbase(char *)malloc(MAXSIZE * sizeof(char))
if(Sbase)
return 0 存储分配失败
StopSbase 空栈
SstacksizeMAXSIZE
return 1
}
int InitStackint(SqStackint &S){
构造空栈(存放运算符)
Sbase(float *)malloc(MAXSIZE * sizeof(float))
if(Sbase)
return 0 存储分配失败
StopSbase 空栈
SstacksizeMAXSIZE
return 1
}

int Pushchar(SqStackchar &Schar e){
元素进运算符栈
if(StopSbase>Sstacksize){ 栈满追加存储空间
Sbase(char *)realloc(Sbase(Sstacksize+STACKINCREMENT)*sizeof(char))
if(Sbase)
return 0 存储分配失败
StopSbase+Sstacksize sbase原值
Sstacksize+STACKINCREMENT
}
*Stop++e 元素入栈栈顶指针增1
return 1
}

int Pushint(SqStackint &Sfloat e){
元素进非运算符栈
if(StopSbase>Sstacksize){ 栈满追加存储空间
Sbase(float *)realloc(Sbase(Sstacksize+STACKINCREMENT)*sizeof(float))
if(Sbase)
return 0 存储分配失败
StopSbase+Sstacksize sbase原值
Sstacksize+STACKINCREMENT
}
*Stop++e 元素入栈栈顶指针增1
return 1
}

char GetTopchar(SqStackchar S){
取栈顶元素(存放运算符栈顶元素)
char e
if(StopSbase)
return 0
e*(Stop1) 栈身改变
return e
}

float GetTopint(SqStackint S){
取栈顶元素(存放非运算符栈顶元素)
float e
if(StopSbase)
return 0
e*(Stop1) 栈身改变
return e
}

int Xiaoshu(char c)
{
if(c>48&&c<57)
{
c48
return c
}
else
return 0
}

int Popchar(SqStackchar &Schar &e){
出栈(运算符)
if(StopSbase)
return 0
e*Stop 栈顶指针减1取出前指元素
return 1
}

int Popint(SqStackint &Sfloat &e){
出栈(非运算符)
if(StopSbase)
return 0
e*Stop 栈顶指针减1取出前指元素
return 1
}

char Precede(char achar b){
判断运算符栈栈顶元素读入运算符间优先关系函数
char c
if(a'+'||a'')
{
if(b'*'||b''||b'(')
return c'<'
else
return c'>'
}
else if(a'*'||a'')
{
if(b'(')
return c'<'
else
return c'>'
}
else if(a'(')
{
if(b')')
return c''
else if(b'#')
{
printf( )
exit(0)
}
else
return c'<'
}
else if(a')')
{
if(b'(')
{
printf( )
exit(0)
}
else
return c'>'
}
else if(a'#')
{
if(b'#')
return c''
else if(b')')
{
printf( )
exit(0)
}
else
return c'<'
}
}

float Operate(float achar thetafloat b){
执行相应运算操作
float c
switch(theta)
{
case '+'ca+b
break
case ''cab
break
case '*'ca*b
break
case ''if(b0)cab
else
printf(输入错误\n)
break
}
return c
}

void main()
{
SqStackchar OPTR
SqStackint OPND
float ab
int sum0
int m1
float f
char cxtheta
InitStackchar(OPTR)
Pushchar(OPTR'#')
InitStackint(OPND)
printf(\n)
printf(*************学号:2012303038**************\n)
printf(\n)
printf(*************课程设计:表达式求值**********\n)
printf(\n)
printf(请输入表达式'#'结尾\n)
cgetchar()
if(c35||(c>40&&c<43)||c45||(c>47&&c<57))
{
while(c'#'||GetTopchar(OPTR)'#')
{
if(Xiaoshu(c))
{
sumsum*10+Xiaoshu(c)
cgetchar()
while(Xiaoshu(c)||c'')
{
if(c'')
{
cgetchar()
while(Xiaoshu(c))
{
m*10
sumsum*10+Xiaoshu(c)
cgetchar()
}
}
else
{
sumsum*10+Xiaoshu(c)
cgetchar()
}
}
fsum(float)m
Pushint(OPNDf)
sum0
m1
} 运算符进栈
else
{
switch(Precede(GetTopchar(OPTR)c))
{
case '<' 栈顶元素优先权低
{
Pushchar(OPTRc)
cgetchar()
break
}
case '' 拖脱括号接受字符
{
Popchar(OPTRx)
cgetchar()
break
}
case '>' 退栈运算结果进栈
{
Popchar(OPTRtheta)
Popint(OPNDb)
Popint(OPNDa)
Pushint(OPNDOperate(athetab))
break
}
}
}
}
printf( f\nGetTopint(OPND))
}
else
printf(输入错误\n)
}

4 运行测试
1.加法测试输入正确输出正确测试正确:

2.减法测试输入正确输出正确测试正确:

3.法测试输入正确输出正确测试正确:

3.法测试输入正确输出正确测试正确:

4.输入表达式正确输出正确测试正确:

5.输入表达式错误正确判断测试正确:

5总结
通段时间课程设计计算机应数结构作C语言更深解然遇少问题正国问题引发思考带收获初喜欢机写程序现动写程序初着程序知手现知道分析问题专业知识解决实际问题转变发现专业知识动手力程度提高实际机操作程中仅解数结构理知识更重培养解决实际问题力续课程学实践良基础
次课程设计更加解学C语言学期学数结构紧密联系设计题目仅求设计者课知识较深刻解时较强思维动手力 
次课程设计深刻体会:严谨编程需严谨检查错误某括号分号引号等应该犯错方程序设计时难免遇错误坏事情发现薄弱环节具体操作中巩固学C语言数结构更加体会C语言语句简洁灵活执行效率高等特点
外注意:报告中图表格式求
(1)正文中图表规范图号图题图方正中五号字表号表题表格方正中五号字图编号图1开始表编号表1开始
(2)表格文字宋体五号字加粗
(3)正文中应图表引图引:图*示表引:见表*

图:

图1 图题
表:
表1 表题

字体
段落
行间距
字间距
表格文字
宋体五号
居中
1倍
标准





参考文献
[1] 刘国钧陈绍业王凤翥 图书馆目录[M] 北京:高等教育出版社1957
(求五号字宋体单倍行距作者书名点:
文档香网(httpswwwxiangdangnet)户传

《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 2 香币 [ 分享文档获得香币 ]

该文档为用户出售和定价!

购买文档

相关文档

数据结构课程设计运动会分数统计(C语言版)

数据结构课程设计运动会分数统计(C语言版)目 录第一章 绪 论 1 1.1 运动会分数统计系统的背景 1 1.2 运动会分数统计系统的任务和目标 1第二章 运动会分数统计系统的需求分析 2 2.1 功能需求 2 2.2 功能模块 2 2.3 数据要求 3 2.4 性能要求 3第三章 系统开发工具及关键技术 4 3.1 系统开

文***品 3年前 上传644   0

《数据结构(C语言版)》教案

2011 至2012 学年第 一 学期教  案课程名称 数据结构 使用教材《数据结构(C语言版)》教学时数 56    课程性质 必修    任课班级(人数)信管(53人)   信息 系(部)    信管 教研室任课教师山东科技大学泰山科技学院课 时 授 课 计 划2011-2012学年第 二学期                           第1周

文***享 3年前 上传654   0

数据结构(C语言版)(第2版)课后习题答案

数据结构(C语言版)(第2版) 课后习题答案 目 录第1章 绪论 1第2章 线性表 5第3章 栈和队列 13第4章 串、数组和广义表 26第5章 树和二叉树 33第6章 图 43第7章 查找 54第8章 排序 65第1章 绪论1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。答案:数

文***品 2年前 上传670   0

数据结构和算法课程设计题目

XX大学课程设计课程名称: 数 据 结 构 与 算 法院(部)名 称: 信息与计算科学学院组长姓名学号 同组人员姓名指导教师姓名: 设 计 时 间: 2010.6.7----2009.6.27一、《数据结构与算法》课程设计参考题目(一)参考题目一(每位同学选作一个,同组人员

文***品 11个月前 上传382   0

数据结构课程设计报告最小生成树Kruskal算法

计算机科学与技术系课程设计报告 2014-2015学年第二学期课程数据结构课程设计名称Kruskal算法求最小生成树学生姓名 学号 专业班级 软件工程指导教师 2014年X月题目:设计程序完成如下功能:对给定过的网和起点,用kruskal算法的基本思想求解其所有的最小生成树1、问题分析和任务定义根据课设题目要求,拟将整体程序分为三大模块

文***品 1年前 上传209   0

数据结构课程设计报告——图书管理系统

课程设计报告 课设课题: 课程设计——图书管理系统 学 院: 电 子 信 息 学 院 专 业: 网 络 工 程 姓 名: 班级学号: 指导教师:

文***享 3年前 上传681   0

哈夫曼树应用数据结构课程设计报告

数据结构课程设计报告设计题目:哈夫曼树应用 专 业 : 软件工程 班 级 : 软件 学 生 : 学 号 : 指导教师 : 起止时间 :2011-07-04—2011-07

文***品 2年前 上传472   0

车牌号管理系统数据结构课程设计报告

XX 学 院 计算机工程学院课程设计报告设计名称: 数据结构课程设计 选题名称: 车牌号管理系统 姓 名: 学 号: 专业班级: 软件工程 系 (院): 计算机工程学院

文***享 3年前 上传431   0

数据结构课程设计报告n维矩阵乘法

设计一个矩阵相乘的程序,首先从键盘输入两个矩阵a,b的内容,并输出两个矩阵,输出ab-1结果。

文***品 4年前 上传712   0

c++超市管理系统课程设计报告

c++超市管理系统课程设计报告第1章 任务描述本次C++实践课题为“超市管理系统”。要求功能有A、添加商品信息,有商品编号、商品名、供应商代号、进货价、售出价、存货数等。进货:若商品已存在,只需修改存货数;若不存在,需增加新纪录。B、售出:输入商品编号,修改相应的存货数与销售额。C、查询:查询商品,销售额。

文***品 2年前 上传552   0

C课程设计题目及要求

课程设计题目 选题一: 学生信息管理系统设计 学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。(测试数据不少5个人,可以用本班同学的具体数据为背景) 软件由下列几个功能模块组成: (1)增加一个学生的信息(需输入要增加学生的所有信息);当录入了重复的姓名和电话号码时,则提示数据录入重复并取消录入; (2)统计本班学生总人数及男女生人数。 (3)分别按照学号

1***9 7年前 上传3878   0

数据结构实习报告

数据结构实习报告  一、需求分析1、  程序所实现的功能;2、  程序的输入,包含输入的数据格式和说明;3、  程序的输出,程序输出的形式;4、  测试数据,如果程序输入的数据量比较大,需要给出测试数据;5、  合作人及其分工二、设计说明1、  主要的数据结构设计说明;2、  程序的主要流程图;3、  程序的主要模块,要求对主要流程图中出现的模块进行说明4、  程序的主要函数及其伪代码说明

s***n 8年前 上传1049   0

数据结构课程设计报告多关键字排序高考排序

XX工 学 院 计算机工程学院课程设计报告设计名称: 数据结构课程设计 选题名称: 多关键字排序 姓 名: 学 号: 专业班级: 网络工程 系 (院): 计算机工程学院

文***享 6个月前 上传190   0

算法与数据结构的商品货架管理课程设计报告(还有程序源代码)

课程设计课 程: 算法与数据结构 题 目: 商品货架管理 专 业: 计算机类 班 级: 座 号: 姓 名: 2012年 X月 X 日一、要解决的问题商店货架以栈

文***品 1年前 上传323   0

高校教材管理系统数据结构课程设计

数据结构课程设计题 目: 高校教材管理系统 课 程 设 计 任 务 书一、课程设计题目: 高校教材管理系统 二、课程设计应解决的主要问题: (1) 实现出版社、教材类型等的管理

文***品 3年前 上传780   0

设计散列表实现电话号码查找系统数据结构课程设计

XX学院课程设计报告书专 业:计算机科学与技术 课程设计名称:《数据结构课程设计》题 目:设计散列表实现电话号码查找系统班 级: 学    号: 姓    名: 同 组 人 员: 无指 导 老 师: 完 成 时 间: 摘要电话号码的查找系统软件是现在很实用工具,随着时代的发展,信息化得发

文***品 2年前 上传581   0

数据结构文本编辑器课程设计

数据结构课程设计报告一. 需求分析1.题目及要求名称:简单的文本编辑器内容:输入一页文字,程序可以统计出文字、数字、空格的个数。静态存储一页文章,每行最多不超过80个字符,共N行。要求:(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一字符或者子串,并将后面的字符前移。

文***享 1年前 上传307   0

数据结构课程设计图的建立与输出

数据结构课程设计设计题目:图的建立与输出系 别: 电子与信息工程学院 专 业: 电子信息工程 班 级: 级班 姓 名: 学 号: 指导教师:

文***享 6个月前 上传179   0

关于数据结构课程设计心得体会范文

关于数据结构课程设计心得体会范文   关于数据结构课程设计心得体会(1)   这学期开始两周时间是我们自己选题上机的时间, 这学期开始两周时间是我们自己选题上机的时间,虽然 上机时间只有短短两个星期但从中确实学到了不少知识。 上机时间只有短短两个星期但从中确实学到了不少知识。   数据结构可以说是计算机里一门基础课程, 据结构可以说是计算机里一门基础课程,但我觉得我们一低 计算机里一门

焦***宝 5年前 上传1419   0

数据结构课程设计舞伴配对程序

沈阳航空航天大学课 程 设 计 报 告课程设计名称:数据结构课程设计课程设计题目:舞伴配对程序院(系):计算机学院专 业:计算机科学与技术班 级: 学 号:姓 名:指导教师:完成日期:2014年目 录第1章 概要设计 11.1题目的内容与要求 11.2总体结构 2第2章 详细设计 32.1主函数的流程图 32.

文***享 1年前 上传290   0

分式的化简与求值

给出一定的条件,在此条件下求分式的值称为有条件的分式求值.而分式的化简与求值是紧密相连的,求值之前必须先化简,化简的目的是为了求值,先化简后求值是解有条件的分式的化简与求值的基本策略.

徐***晶 5年前 上传933   0

数据结构实践报告

 数据结构实践报告学 号: 姓 名: 班 级: 班 指导老师: 时 间: 2016-12-21

文***享 1年前 上传595   0

数据结构实验报告

实验报告课程:数据结构 班级:网络工程 学号: 姓名: 实验1 链表的插入和删除一、实验目的 1、 了解单链表、循环链表和双链表的基本知识;2、 掌握算法思想和数据结构的描述;3、 掌握链表的插入、删除的相关语句及基本方法。二、 实验步骤

z***u 2年前 上传334   0

c语言课程设计总结5篇

c语言课程设计总结5篇c语言课程设计总结(一):  c语言课程设计总结心得  经过一个学期的学习,我对C语言有了必须的了解。C语言是学习计算机科学的基础,作为一名计算机专业学生,掌握C语言更是毋庸置疑。在上课之前,就经常听同学说,C语言很难学,确实,刚开始听课时觉得老师不知所云。但是,发现对后续资料的预习后,前面的疑团都迎刃而解,这让我对C语言的学习更有信心。  计算机最重要的就是上机操

四***廷 3年前 上传1294   0

2021年c语言课程设计小结

 2021年c语言课程设计小结撰写人:___________日 期:___________2021年c语言课程设计小结关键词:图书管理系统关系模型功能模块随着社会的进步与发展,资源高效利用提高效率越来越受到人们的___.图书管理也提出这样的要求,因此图书管理的数字化越来越受到大众的青睐.图书管理系统是现代图书管理工具中的重要组成部分。它广泛应用于图书馆管理,力求开发出一套严谨、

x***o 3年前 上传603   0