欢迎来到天天文库
浏览记录
ID:21951280
大小:97.00 KB
页数:10页
时间:2018-10-25
《数制转换问题》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、桂林理工大学信息学院实验报告课程名:综合软件实习班级:计本11-3班学号:3110717332姓名:莫尚校实习日期:2013.6.21实验序号:七实验题目:数制转换问题问题描述将十进制数N和其它d进制数的转换是计算机实现计算的基本问题,其解决方案很多,其中最简单方法基于下列原理:即除d取余法。例如:(1348)10=(2504)8 N Ndiv8 Nmod8 1348 168 4 168 21 0 21 2 5 2 0 2 从中我们可以看出,最先产生的余数4是转换结果的最低位
2、,这正好符合栈的特性即后进先出的特性。所以可以用顺序栈来模拟这个过程。基本要求对于键盘输入的任意一个非负的十进制整数,打印输出与其等值的八进制数。由于上述的计算过程是从低位到高位顺序产生的八进制数的各个数位,而打印输出,一般来说应从高位到地位进行,恰好和计算过程相反。因此可以先将计算过程中得到的八进制数的各位进栈,待相对应的八进制数的各位均产生以后,再使其按顺序出栈,并打印输出。即得到了与输入的十进制数相对应的八进制数。需求分析应用环境设定:生活中我们需要将M进制的数转换为我们所需要的进制,从键盘任意输入一个M进制的数,对其进行
3、转换成其他三种进制的数,然后再从电脑中显示出来,最终得到我们的结果。用户界面:命令行界面,根据自己的要求,对界面的提示进行操作,正确输入我们需要的数据。输入方式:首先输入将转换的进制数,回车确认;然后输入确定的数据,回车确认;接着选择要转换为的进制数,回车确认。输出方式:界面直接输出,启动程序后,按照界面提示,输入数据,直接回车确认,显示屏即输出我们的数据结果。数据储存方式:全部在内存存放,不使用硬盘上的文件或其他数据源,程序执行过程中和结束后不保存数据。程序功能:1.根据界面提示输入M进制数据。2.对任意M进制数据实行非M进制
4、的转换。概要设计用数组实现该问题 D2M()函数和M2D()函数是实现该问题的主要函数。 D2M()函数是实现十进制转换为其它进制的函数,它是将输入的十进制数x取首先对需要转换的进制M取余,然后再对其取整,接着通过递归调用D2M()函数依次将得到的整数部分依次先取余后取整,并将所得的余数依次存入一个数组中,然后逆向取出数组中的元素,即得到转换后的结果。而M2D()函数则是实现其他进制M转换为十进制,并将其转换为非M进制的数。M进制转十进制则是从该M进制数的最后一位开始算,依次列为第0、1、2…n位并分别乘以M的0、1、2…n次方
5、,将得到的次方相加便得到对应的十进制数,再调用D2M()函数将其转换为非M进制的数。⑴ i,j,y,n,s,m,r,reminder,x是定义的全局变量,初始值都为0;⑵ D2M(intg,inth)是实现十进制数转换为M进制数的函数;⑶ M2D(inte)是实现M(仅指二进制数和八进制数)进制数转换为十进制数的函数,并在其中调用D2M(intg,inth)实现向非M进制数的转换;⑷ H2D(intf)是实现十六进制数转换为十进制数的函数,并在其中调用D2M(intg,inth)实现向非十六进制数的转换;⑸ voidmain()
6、是主函数,功能是给出测试的数据,并在特定条件下调用D2M()函数和M2D()函数。使用简单一维数组inta[N],intb[N],intc[N]。1.用栈实现该问题同样是利用D2M()和M2D()两个函数实现。两个函数的思想同利用数组实现时相同。只是栈具有后进先出的性质,故其用Pop()取数较数组的逆向取数方便些。⑴ SqStack定义栈,说明base为栈底指针,top为栈顶指针,stacksize为栈容量;⑵ intInitStack(SqStack&S)到intDestroyStack(SqStack&S)六大模块分别表示构
7、造一个空栈、用e表示栈元素、插入元素、删除元素、判断栈是否为空以及摧毁栈;⑶ SqStackS是指定义栈S;⑷ D2M(inta,intb)的功能是将十进制数转换成M进制的函数;⑸ M2D()的功能是M进制转换为十进制的函数;⑹ voidmain()是主函数。其功能是输入需要测试的数据以及需要转换的进制,并在特定情形下调用D2M()函数和M2D()函数,而且实现M进制数向任意非M进制数的转换。数据类型定义如下: typedefstruct{int*base;栈底int*top;栈顶intstacksize;栈容量}SqStac
8、k;intInitStack(SqStack&S)构造一个个空栈intGetTop(SqStackS,int&e)若栈不为空,则用e返回S的栈顶元素,并返回0,否则返回1intPush(SqStack&S,inte)插入元素e为新的栈顶元素intPop(SqSt
此文档下载收益归作者所有