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


    
    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第二章 运动会分数统...

    3年前   
    641    0

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

    2011 至2012 学年第 一 学期教  案课程名称 数据结构 使用教材《数据结构(C语言版)》教学时数 56    课程性质 必修    任课班级(人数)信管(53人)   信息 系(部)...

    3年前   
    653    0

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

    数据结构(C语言版)(第2版) 课后习题答案 目 录第1章 绪论 1第2章 线性表 5第3章 栈和队列 13第4章 串、数组和广义表 26第5章 树和二叉树 33第6章 图 43第...

    2年前   
    667    0

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

    XX大学课程设计课程名称: 数 据 结 构 与 算 法院(部)名 称: 信息与计算科学学院组长姓名学号 同组人员姓名指导教师姓名: 设 计 时 间: 2010.6.7-...

    11个月前   
    380    0

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

    计算机科学与技术系课程设计报告 2014-2015学年第二学期课程数据结构课程设计名称Kruskal算法求最小生成树学生姓名 学号 专业班级 软件工程指导教师 2014年X月题目:设计...

    1年前   
    206    0

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

    课程设计报告 课设课题: 课程设计——图书管理系统 学 院: 电 子 信 息 学 院 专 业: 网 络 工 程 ...

    3年前   
    681    0

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

    数据结构课程设计报告设计题目:哈夫曼树应用 专 业 : 软件工程 班 级 : 软件 学 生 : ...

    2年前   
    470    0

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

    XX 学 院 计算机工程学院课程设计报告设计名称: 数据结构课程设计 选题名称: 车牌号管理系统 ...

    3年前   
    429    0

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

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

    4年前   
    710    0

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

    c++超市管理系统课程设计报告第1章 任务描述本次C++实践课题为“超市管理系统”。要求功能有A、添加商品信息,有商品编号、商品名、供应商代号、进货价、售出价、存货数等。进货:若商品已存在...

    2年前   
    550    0

    C课程设计题目及要求

    课程设计题目 选题一: 学生信息管理系统设计 学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。(测试数据不少5个人,可以用本班同学的具体数据为背景) 软件由下...

    7年前   
    3876    0

    数据结构实习报告

    数据结构实习报告  一、需求分析1、  程序所实现的功能;2、  程序的输入,包含输入的数据格式和说明;3、  程序的输出,程序输出的形式;4、  测试数据,如果程序输入的数据量比较大,需要给...

    8年前   
    1047    0

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

    课程设计课 程: 算法与数据结构 题 目: 商品货架管理 专 业: 计算机类 班 级: ...

    1年前   
    322    0

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

    XX工 学 院 计算机工程学院课程设计报告设计名称: 数据结构课程设计 选题名称: 多关键字排序 姓 ...

    6个月前   
    187    0

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

    数据结构课程设计题 目: 高校教材管理系统 课 程 设 计 任 务 书一、课程设计题目: 高校教材管理系统...

    3年前   
    779    0

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

    XX学院课程设计报告书专 业:计算机科学与技术 课程设计名称:《数据结构课程设计》题 目:设计散列表实现电话号码查找系统班 级: 学    号: 姓 ...

    2年前   
    580    0

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

    数据结构课程设计报告一. 需求分析1.题目及要求名称:简单的文本编辑器内容:输入一页文字,程序可以统计出文字、数字、空格的个数。静态存储一页文章,每行最多不超过80个字符,共N行。要求:(1)...

    1年前   
    303    0

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

    关于数据结构课程设计心得体会范文   关于数据结构课程设计心得体会(1)   这学期开始两周时间是我们自己选题上机的时间, 这学期开始两周时间是我们自己选题上机的时间,虽然 上机时间只...

    5年前   
    1417    0

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

    数据结构课程设计设计题目:图的建立与输出系 别: 电子与信息工程学院 专 业: 电子信息工程 班 级: 级班 ...

    6个月前   
    176    0

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

    沈阳航空航天大学课 程 设 计 报 告课程设计名称:数据结构课程设计课程设计题目:舞伴配对程序院(系):计算机学院专 业:计算机科学与技术班 级: 学 号:姓 名:指导...

    1年前   
    287    0

    文档贡献者

    文***享

    贡献于2020-12-22

    下载需要 2 香币 [香币充值 ]
    亲,您也可以通过 分享原创文档 来获得香币奖励!
    下载文档

    该用户的其他文档