数据结构教学课程设计之任意进制转换.doc

数据结构教学课程设计之任意进制转换.doc

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
##大学 数据结构课程设计报告 题目: 数值转换 院(系): 计算机工程学院 学生姓名:     班级: 学号:   起迄日期: 6月16号到6月30号 指导教师:    20XX—20XX年度 第 2 学期 一、需求分析 1.问题描述: 任意给定一个M进制的数x ,请实现如下要求 1) 求出此数x的10进制值(用MD表示) 2) 实现对x向任意的一个非M进制的数的转换。 3) 至少用两种或两种以上的方法实现上述要求(用栈解决,用数组解决,其它方法解决)。 算法设计说明存储结构的 画出函数之间的调用关系图。 四、 调试分析 调试分析: 实际完成的情况说明(完成的功能,支持的数据类型等); 可以完成M进制数X到其他进制数的转换 程序的性能分析,包括时空分析; 程序的时间复杂度为o(n),空间复杂度为0(1); 上机过程中出现的问题及其解决方案; 实验过程中要在数组方法中出现问题:保存余数的数组char a[1000]要都赋予值0,否则在 倒序的是否会因为系统自动分配的未知数值出现问题char a[1000]。 本来结果应该是2A结果却是 烫2A。 问题2.在把其他进制数转换成十进制数的时候,1到9的ASCII值(t=a[i]-48)与ABCF字符的ASCII码(t=a[i]-55)的值有区别, 本应该转换成的十进制数是159,但却等于156,所以要分开对待。 程序中可以改进的地方说明; 试验中还是又可以改进的地方的,例如把小数转化的部分加进去。增强程序的容错性主要在输入输出方面 程序中可以扩充的功能及设计实现假想。 可以直接实现把M进制数转换成N进制数,而不是通过十进制这个桥梁。 五、测试结果 栈方法: 递归方法: .用户手册: 用visual C打开源文件,按ctrl+F7,进行编译,再按ctrl+F5运行,会出现 一个界面 再按菜单操作及可 七.体会与自我评价 实验设计中我学到了模块化处理问题,找到问题,并一个个解决,例如把三种方法封装在三个函数中。但在也存在着一些问题主要是16进制上,它包括一些AB等一些字母,所以要进行特别处理。例如在十进制的转化中要分开处理 if(a[i]=57)//比较大小都要换成整型的 t=a[i]-48; else t=a[i]-55; if(i==n-1) } 解决数制转换问题时,如果所给的数值不是用十进制表示的,一般用一个字符型数组来 存放。数组的每个元素分别存储它的一位数字。然后按位转换求和,得到十进制表示;再 十进制表示转换成所求的数制表示。转换的结果也用一个字符型数组表示,每个元素表示 换结果的一位数字。根据数制表示中相邻位的基数关系,可以把不同的数制分成两类。一类数制表示中,相 邻位的基数是等比关系,例如我们熟悉的十进制表示。另一类数制表示中,相邻位的基数 不等比的。例如在时间表示中,从秒到分采用60 进进制;从月到年采用12 进制。把一个数值从数制B 的表示bmbm-1b m-2 ... b1 转换成十进制表示dnd n-1d n-2 ... d1 比较简单。假设数制中,第i 位的基数为basei(1 ? i ? m),直接把basei 与bi 相乘,然后对全部乘积求和。从十进制表示dnd n-1d n-2 ... d1 到bmbm-1b m-2 ... b1 的转换需要分两种情况考虑: 数制 中相邻数字的基数是等比关系,即:basei(m)可以表示成Ci-1,其中C 是 一个常量。将dnd n-1d n-2 ... d1 除以C,余数即为b1;将dnd n-1d n-2 ... d1 和C 相除的结果再除以,余数即为b;… ;直至计算出为bm 止。 数制 中相邻数字的基数不等比。需要先判断dnd n-1d n-2 ... d1 在数制中需要的位数,然后从高位到低位依次计算bm、bm-1、b m-2、...、b1。 #include iostream using namespace std; #includestring #includemalloc.h #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 typedef struct{ int *base; int *top; int stacksize; }stack; //////////////////////////////// int getdex() { char a[50]; int n,j,i,sum=0,t=0,p=1;int x; printf(输入要转化M进制数: ); scanf(%d,x); pri

文档评论(0)

新起点 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档