数据结构课程设计—数制转换.doc

数据结构课程设计—数制转换.doc

ID:56098374

大小:74.50 KB

页数:9页

时间:2020-03-16

数据结构课程设计—数制转换.doc_第1页
数据结构课程设计—数制转换.doc_第2页
数据结构课程设计—数制转换.doc_第3页
数据结构课程设计—数制转换.doc_第4页
数据结构课程设计—数制转换.doc_第5页
资源描述:

《数据结构课程设计—数制转换.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、安徽农业大学经济技术学院课程设计题目名称数制转换课程名称数据结构学生姓名张东升学号10538022系、专业计算机科学与技术指导教师涂力静二0一一年十二月十七日数制转换问题一、问题描述任意给定一个M进制的数x,转换为其它任意进制的数据。二、基本要求1、对给字一个M进制的数据x,求出此数x的10进制值(用MD表示);2、实现对x向任意的一个非M进制的数的转换;3、至少用两种方法实现上述要求(用栈解决,用数组解决,其它方法解决)。三、测试数据初始输入的数据有:十进制数527和十六进制数1A2C9四、算法思想1、用数组实现该问题:  D2M()函

2、数和M2D()函数是实现该问题的主要函数。 D2M()函数是实现十进制转换为其它进制的函数,它是将输入的十进制数x取首先对需要转换的进制M取余,然后再对其取整,接着通过递归调用D2M()函数依次将得到的整数部分依次先取余后取整,并将所得的余数依次存入一个数组中,然后逆向取出数组中的元素,即得到转换后的结果。而M2D()函数则是实现其他进制M转换为十进制,并将其转换为非M进制的数。M进制转十进制则是从该M进制数的最后一位开始算,依次列为第0、1、2…n位并分别乘以M的0、1、2…n次方,将得到的次方相加便得到对应的十进制数,再调用D2M()

3、函数将其转换为非M进制的数。2、用栈实现该问题:  同样是利用D2M()和M2D()两个函数实现。两个函数的思想同利用数组实现时相同。只是栈具有后进先出的性质,故其用Pop()取数较数组的逆向取数方便些。五、模块划分1、用数组实现该问题: ⑴ i,j,y,n,s,m,r,reminder,x是定义的全局变量,初始值都为0;⑵ D2M(intg,inth)是实现十进制数转换为M进制数的函数;⑶ M2D()是实现M(仅指二进制数和八进制数)进制数转换为十进制数的函数,并在其中调用D2M(intg,inth)实现向非M进制数的转换;⑷ H2D(

4、intf)是实现十六进制数转换为十进制数的函数,并在其中调用D2M(intg,inth)实现向非十六进制数的转换;⑸ voidmain()是主函数,功能是给出测试的数据,并在特定条件下调用D2M()函数和M2D()函数。2、用栈实现该问题:  ⑴ SqStack定义栈,说明base为栈底指针,top为栈顶指针,stacksize为栈容量;  ⑵ intInitStack(SqStack&S)到intDestroyStack(SqStack&S)六大模块分别表示构造一个空栈、用e表示栈元素、插入元素、删除元素、判断栈是否为空以及摧毁栈;  

5、⑶ SqStackS是指定义栈S;  ⑷ D2M(inta,intb)的功能是将十进制数转换成M进制的函数;  ⑸ M2D()的功能是M进制转换为十进制的函数;  ⑹ voidmain()是主函数。其功能是输入需要测试的数据以及需要转换的进制,并在特定情形下调用D2M()函数和M2D()函数,而且实现M进制数向任意非M进制数的转换。六、数据结构1、用数组实现该问题:使用简单一维数组inta[N],intb[N],intc[N]。2、用栈实现该问题:  数据类型定义如下:  typedefstruct{int*base;int*top;in

6、tstacksize;}SqStack;七、源程序源程序有两个,zhshuzu.cpp是用数组实现该问题的程序,而zhstack.cpp是用栈实现该问题的程序:[文件zhshuzu.cpp]#include#include#defineN1000inti,j,y,n,s;intm,r,reminder;intx;  //全局变量默认初始化为0,不必再赋0了D2M(intg,inth) //十进制数转换为其他进制数{intc[N];i=0;reminder=g%h;g=g/h;if(reminder>9){

7、c[i]=reminder+55;i++;}else{c[i]=reminder;i++;}if(g>0)D2M(g,h);for(j=i-1;j>=0;j--)if(c[j]>=65)printf("%c",c[j]);elseprintf("%d",c[j]);return0;}M2D(inte)//二进制和八进制数转换为十进制数,并这转换为其他进制数{inta[N];printf("请输入%d进制位数:",m);scanf("%d",&n);printf("请输入%d进制的每位并使每位用空格隔开:",m);for(i=0;i

8、++)scanf("%d",&a[i]);for(i=n-1;i>=0;i--){y+=(int)pow(e,j)*a[i];//强制类型转换,以免造成数据丢失j++;}printf("请输出

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。