- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
甘肃政法学院
本科生实验报告
(一)
姓名:马大哈
学院:计算机科学学院专业:计算机科学与技术
班级:2011级计算机科学与技术本科班
实验课程名称:数据结构
实验日期:2012年10月10 日指导教师及职称:陆军老师
实验成绩:
开课时间:2012-2013学年第一学期
甘肃政法学院实验管理中心印制
实验题目姓名
十进制转二进制马大哈 班级
小组合作 无
2011 级计 学 号 201181110100
本
一、实验目的学习栈的用法
二.实验环境
MicrosoftVisualC++6.0
三、实验内容与步骤
由于栈结构具有后进先出的固有特性,致使栈成为程序设计中的有用工具。
十进制数N和其他d进制数的转换是计算机实现计算的基本问题,其解决方法多,其中一个简单算法基于下列原理:
N=(Ndivd)*d+Nmodd(其中:div为整除运算,mod为求余
运算)
假设现要编制一个满足下列要求的程序:对于输入的任意一个非负十进制数,打印输出与其等值的二进制数。由于计算过程是从低位到高位顺序产生二进制数的个数位,而打印输出,一般来说应从高位到低位进行,恰好和计算机过程相反。因此,若将计算过程得到的二进制的各位顺序进栈,则按出栈序列打印输出的即为与输入对应的二
进制数。具体代码如下:
typedefintSElemType;/*定义栈元素类型为整型*/#includec1.h
#includec3-1.h/*采用顺序栈*/
#includebo3-1.c/*利用顺序栈的基本操作*/
voidconversion()
{/*对于输入的任意一个非负10进制整数,打印输出与其等值的2进制数 */
SqStacks;
unsignedn;/*非负整数*/SElemTypee;
InitStack(s);/*初始化栈*/
printf(十进制转二进制:\n请输入要转换的十进制数:);scanf(%u,n);/*输入非负十进制整数n*/
while(n)/*当n不等于0*/
{
Push(s,n%2);/*入栈n除以2的余数(2进制的低位)*/n=n/2;
}
while(!StackEmpty(s))/*当栈不空*/
{
Pop(s,e);/*弹出栈顶元素且赋值给e*/if(e=9)
printf(%d,e);else
printf(%c,e+55);
}
printf(\n);
}
voidmain()
{
conversion();
}
四、实验过程与分析
本实验是利用栈的后进先出的特性最简单的例子,在这个实验中,栈操作的序列是直线式的,即一味地入栈,然后一味地出栈。可以看出栈的引入简化了程序设计的问题,划分了不同的关注层次,是思考范围缩小了。倘若用数组,那就遮掩了问题的本质,还要分散精力去思考数组下标增减等细节问题。
首先申请一个栈,将栈初始化,设置一个变量用来接收输入的数,在进行二进制转换,并将转换后的数依次进栈,最后依次出栈,打印输出。
本实验的实验结果如下:
本实验的实验结果如下:
五、实验总结
在实验中,应注意头文件的加入,本实验共有三个头文件如下:
#includec1.h#includec3-1.h#includebo3-1.c
在所给出的文件中缺少#includec1.h,所以应特别注意。
文档评论(0)