课程设计任务书。
题目: 算术表达式求值
学号: 姓名。
专业: 课程:
指导教师。完成时间: 2011-12-20~2011-12-27
课程设计任务书及成绩评定。
1 设计目的 2
2设计任务 2
3设计内容 3
3.1 需求分析 3
3.1.1程序的功能 3
3.1.2基本要求: 3
3.1.3测试数据: 3
3.2总体设计 3
3.2.1程序用到的抽象数据类型 3
3.2.2主程序流程图: 4
3.2.3说明各模块之间的调用关系: 4
3.3详细设计 4
3.3.1程序中用到的抽象数据类型: 4
3.4测试与分析 6
3.4.1测试 6
3.4.2调试分析 8
4.附录 8
5 总结与展望 12
加强我们的实践能力,掌握数据结构的应用,算法的编写,类c语言的算法转换成c程序并上级调试的基本方法。对我们基本的程序设计素养的培养和软件工作者作风的训练,起到显著的促进作用。
设计一个程序,演示用算符优先法对算术表达式求值的过程。
1)完成运算符和运算数的识别处理。
2)在识别出运算数的同时,将字符序列形式转换成整数形式。
3)实现对算数四则混和运算表达式的求值。
1、在本次演示中,要输入以字符序列的形式,语法正确且不含变量的整数表达式然后咦“#”结束。
2、由于算符有优先关系,故用栈来实现。设置运算符栈接收运算符,优先权低的压入栈内,优先权高的进行运算,设置运算数栈,来接收运算数,并存储运行的结果。
3、在读入字符序列的同时,完成运算符合运算数(整数)的识别处理,以及相应的运算,在识别出是运算数的同时,将当前字符序列转换成整数形式。
本程序利用栈的概念,利用栈“先进后出”的原则,利用链表的存储结构,进而设计的。
1) 首先定义一个栈,将字符x入栈定义栈结点,之后x出栈,既得到栈顶元素初始化的一个栈;
2) 对输入的字符判断是否为运算符,并比较其优先级;
3) 在读入字符序列的同时,完成运算符合运算数(整数)的识别处理。
在读入字符序列的同时,完成运算符合运算数(整数)的识别处理在读入字符序列的同时,完成运算符合运算数(整数)的识别处理。
本算法一共进行了两次调用,第一次调用是char eval_exp()对void pushoptr(snode *top,char x)和char popoptr(snode *top)的调用,第二次是主函数对char eval_exp()的调用,完成了运算符的操作,完成字符串对整形的转换。
栈。#include
#include<>
#define null 0
typedef struct nodeelse
return f;
3.3.3画出函数的调用关系图。
各程序模块之间的层次(调用)关系:
算符间优先关系如下表:
给出测试数据,输出测试的结果,测试数据应该完整(覆盖算法各种情况)。
1) 测试8+2-3结果如图4-1所示:
图4-12)测试3*(7-2)结果如图4-2所示:
图4-23)测试8/(4-2)的结果如图4-3所示:
图4-3在设计程序的过程中,出现程序不能运行,发现不能找到表达式结束的标识符,因此,在设计的时候需要认为动态的添加结束标识符‘#’,是程序能够顺利的运行。
#include
#include<>
#define null 0
typedef struct node{
char date;
struct node *next;
snode;
snode *initstack(){
snode *top;//初始化2个top,后面用来保存我们的输入。
top=(snode *)malloc(sizeof(snode));
top->next=null;
return top;
void pushoptr(snode *top,char x){
snode *p;
p=(snode *)malloc(sizeof(snode));
p->date=x;
p->next=top->next;
top->next=p;
char popoptr(snode *top){
snode *p;
char x;
if(top==null)
return null;
p=top->next;
x=p->date;
top->next=p->next;
数据结构课程设计
课程设计说明书 题目哈夫曼编码问题的设计和实现。课程名称数据结构课程设计。院 系 部 中心。专业。班级。学生姓名。学号。设计地点。指导教师。设计起止时间 2008 年6月 2日至 2008 年 6月 6 日。目录。1 问题描述 2 1.1 题目内容 2 1.2 基本要求 2 1.3 测试数据 2 2...
数据结构课程设计
数据结构 课程设计。实验报告。学院 信息工程学院。班级 姓名 学号 指导老师 题目2 一元多项式的计算。1 实验目的。1 掌握链表的灵活运用 2 学习链表初始化和建立一个新的链表 3 知道怎样去实现链表删除结点操作与插入结点 4 理解链表的基本操作 包括数据域数据的相加 并能灵活运用。2 实验内容。...
数据结构课程设计
班级 信计 1102 姓名 李娜娜。学号 1108060209 设计日期 2013.07.15 西安科技大学计算机学院 1.实验题目 编制一个演绎扫雷游戏的程序。2.问题描述。做一个n x m的扫雷游戏,每个方格包含两种状态 关闭 closed 和打开 opened 初始化时每个方格都是关闭的,一个...