资源描述:
《数据结构实验报告数值转换》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、忻州师范学院计算机科学与技术系实验报告实验名称进制数转换专业班级计算机科学与技术1102姓名高海珍学号201108111084指导教师胡志军成绩日期2012-10-12一、实验目的1.理解栈的定义、特点,逻辑结构和存储结构,熟练掌握顺序栈的实现方法。2.熟练掌握简单的演示菜单与人机交互设计方法。二、实验内容1.实现栈的如下基本操作:init,push,pop,empty,full。2.利用栈的基本操作实现数制转换,能把任意输入的十进制整数按用户要求转化为2进制或8进制或16进制形式表示。三、实验要求1.试描
2、述栈ADT。2.用顺序存储结构实现栈的基本操作:init,push,pop,empty,full。3.利用栈的基本操作完成题2,要能向用户提供选择界面(选择要转换成哪种进制数的界面)。四、实验步骤1.需求分析本演示程序用C语言编写,制作一个数值转换器用来实现十六进制,八进制,二进制的转换。(1)输入的形式和输入值的范围:提供菜单选择操作项目数字编号,从键盘输入待操作的编号。(2)输出的形式和输出值的范围:按选择在显示器上输出转换后的数。(3)测试数据及预期结果:输入一个数67,进行十六进制转换后为43;输入
3、一个数56,进行八进制转换后为70;输入一个数8,进行八进制转换后为1000;2.概要设计为了实现上述程序功能,需要定义线性表的抽象数据类型:ADTstack{数据对象:D={D={ai
4、ai∈ElemSet,i=0,1,2,…,n,n≥0}数据关系:R1={
5、ai-1,ai∈D,i=2,...,n}利用voidinit(Stack*s)Empty(stack*s)Push(stack*s)Pop(stack*s)这些栈的基本操作实现对十六进制,八进制,二进制的转换。3.详细设计voidi
6、nit(structstack*s){s->top=-1;}intempty(structstack*s){if(s->top==-1)return1;elsereturn0;}voidpush(structstack*s,inti){if(s->top==MAXSIZE-1){printf("Stackisfull");return;}s->top++;s->data[s->top]=i;}intpop(structstack*s){if(empty(s)){printf("stackisempty"
7、);return-1;}return(s->data[s->top--]);}voidtrans();Voideight();Voidtwo();Intscan主函数通过对这几个子函数的调用实现对输入数的进制转换。此程序包含8个函数1.栈的初始化;2.判断站是否为空;3.元素的进栈;4.元素的出栈;5.十六进制的转换;6.八进制的转换;7.二进制的转换;8.菜单显示。4.调试分析(要写出以下四点,重点是第3点)1)分析算法的总体结构,分清程序中各部分应实现的功能;2)调试方法通常有二种:总体调试、分块调试。
8、你主要采用哪种调试方法?总体调试:把算法组装成单个程序,按C程序结构标准分层检查调试;分块调试:把算法分拆成几个功能模块,按C程序结构标准分模块调试;3)错误跟踪有两种方法:错误信息排查法、执行路线跟踪法。错误信息排查法:根据错误信息进行分类排查,要求分析者对C的错误代码要有足够的了解和认识,有经验的程序员多用此法。执行路线跟踪法:变量分析法(跟踪变量的值)、插入标签法(插入输出标签),这种方法适合初学者。4)调试分析不宜面面俱到,具体写出关键问题就行。5.使用说明程序名为进制的转换。环境为c++,通过菜单
9、显示进行操作:6.测试结果菜单显示:按1进行十六进制的转换;按2进行八进制的转换;按3进行二进制的转换;如下显示:五、实验总结(调试和运行程序过程中产生的问题及采取的措施;对算法的程序的讨论、分析,改进设想以及其它经验教训;对实验方式、组织、设备、题目的意见和建议等)1.通过此次实验更加熟练的掌握了对栈的基本操作,更好的将数进行了十六进制,八进制,二进制的转化。2.要好好的学习c语言。3.调试的时候要分块调试,效果比较好。附源程序: