版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据结构上课时间制定计策进行报告标题:转换数字部门:计算机科学应用系学号:学生姓名:指导教师:完成日期:2013-6-1数字转换1.需求分析m进制x是随机提供的,以实现以下要求1)得到数字x的十进制值(以MD表示)2)实现x到任意非m进制的转换。3)以至少两种方式实施上述要求(通过堆栈解决、通过数组解决、通过其他方式解决)。2.摘要设计流程流可以特性化为以下流程图:使用数组实现b堆栈开始开始建立堆叠建构阵列数值转换函数数值转换函数导出结果导出结果3.详细设计A.使用数组实现此问题D2M()函数和M2D()函数是实现此问题的主要函数。D2M()函数是将十进制数转换为另一个十进制数的函数,该函数获
2、取必须首先转换输入的十进制数x的m,然后对其进行整数,再递归调用D2M()函数以获取得到的整数部分,一次获取一个,然后将剩下的部分依次存入下一个数组,再反向删除数组中的元素,以获得转换结果。M2D()函数将其他二进制m转换为十进制,然后转换为非m进制值。m进制数在相应m进制数的最后一位中进行运算,0、1、2、n位乘以m的0、1、2、 n次幂,以获得相应的十进制数,然后调用D2M()函数将其转换为非m进制数。B.作为堆栈实现栈具有后进先出的性质,具体实现方法的方法和实现排列的方法有很多联系,不再赘述。4.调试分析(1)制作堆栈的方法找到了书,知道了。(2)有关数组的递归调用,请参阅相关书。(3)
3、为了使界面表达更清楚,多次调试改进了界面。5.测试结果以下是我的测试函数和运行结果。A.阵列测试结果b堆栈实现测试结果6.摘要通过数据结构课程设计,我发现数据结构是计算机科学的综合专业基础课程。这次课程设计使我对排列和堆叠有了初步的了解。虽然课程设计不是完美的,但在设计过程中我获得了很多好处,通过数据或网络搜索例子,学到了很多以前不知道的东西,提高了我的分析和问题解决能力,掌握了应用系统设计方法和步骤,让我意识到我学到的东西实际上太少了,只有课本知识是不够的。经过大量的机器调试,才能提高自己。7.附加源代码A.阵列实作#include#include#define N 1000Int i、j、
4、y、n、s;Int m、r、reminderint x;/全局变量默认情况下初始化为0,不再需要指定0D2M(int g,int h) /将小数转换为其他小数int cN;I=0;reminder=g % h;g=g/h;If(reminder9)cI=reminder 55;I;ElsecI=reminder;I;If(g0)D2M(g,h);for(j=I-1;j=0;J-)If(cj=65)Printf(%c ,cj);Elseprintf(“% d”,cj);return 0;M2D(int e) /二进制和八进制数转换为十进制数,并转换为其他小数int aN;请输入Printf (d
5、进制: ,m)。scanf(“% d”,n);Printf(每个输入%d进制数,每个输入: ,m),并用空格分隔。for(I=0);I=0;I-)Y=(int)pow(e,j)* aI;/strong制类型转换以避免数据丢失j;Printf(结果十进制的结果: )。printf(“% d”,y);printf(“ n需要转换的输入m :”);scanf(“% d”,s);Printf(转换为 d进制后的: ,s)。D2M(y,s);return 0;H2D(int f) /将十六进制数转换为十进制数,然后转换为其他小数int bN;请输入Printf (d进制: ,m)。scanf(“% d”
6、,n);Printf(每个输入%d进制数,每个输入: ,m),并用空格分隔。for(I=0);I=0;I-)Y=(int)pow(f,j)* bI;/strong制类型转换以避免数据丢失j;Printf(结果十进制的结果: )。printf(“% d”,y);printf(“ n需要转换的输入m :”);scanf(“% d”,s);Printf(转换为 d进制后的: ,s)。D2M(y,s);return 0;Void main()请指定Printf(要转换的二进制M(2or8or10or16): )scanf(“% d”,m);If(m=2|m=8) /将二进制和八进制转换为十进制M2D(
7、m);Else if(m=16) /将十六进制转换为十进制H2D(m);Else if(m=10) /将十进制数转换为其他小数请输入Printf (d进制: ,m)。scanf(“% d”,x);输入Printf(要转换的二进制M(2or8or16): )。);scanf(“% d”,r);Printf(转换为 d进制数的结果为: ,r)。D2M(x,r);printf(“ n”);B.堆栈实现# include“stdio . h”# include“string . h”# include“math . h”# include“limits . h”# include“stlib . h”
8、# include“malloc . h”#define TRUE 1#define OK 1#define FALSE 0#define ERROR 0#define INFEASIBLE -1Typedef int StatusTypedef int元素;#define STACK_INIT_SIZE 10#define STACKINCREMENT 2Typedef struct SqStackSElement * baseSElement * topInt stacksize SqStackInt InitStack (SqStack *S)(* s)。base=(s element
9、*)malloc(stack _ init _ size * sizeof(s element);If(!(*S)。base)exit(OVERFLOW);S-top=S-base;s-stacksize=STACK _ INIT _ SIZE;Return OKInt DestroyStack (SqStack *S)free(S-base);s-base=NULL;s-top=NULL;s-stacksize=0;Return OKInt ClearStack(SqStack *S)S-top=S-base;Return OK检查int stack empty(sq stack S)/sq
10、 stack是否为空If (S.top=S.base)Return TRUEElseReturn FALSE返回Int StackLength (SqStack S)/s中的元素数,即堆栈的长度return s . top-s . base;Int GetTop(SqStack S,int *e)/如果堆栈不为空,则将S的堆栈顶部元素返回e,然后返回okIf (S.top S.base)* e=*(s . top-1);Return OKElse return ERRORInt Push(SqStack *S,int e)/插入元素e是新的堆叠顶部元素If (S-top-S-base=S-st
11、acksize)s-base=(s element *)realloc(* s)。base,(* s)。stack size stack increment *size of(SElement);If(!S-base)exit(OVERFLOW);S-top=S-base S-stacksize;s-stack size=stack increment;*(S-top)=e;s-top;Return OKInt Pop(SqStack *S,int *e)如果/*堆栈不为空,请删除s的堆栈顶部元素,然后使用e返回其值,OK;否则,ERROR */if(* S)。top=(*S)。base)Re
12、turn ERROR* e=*-(* s)。topReturn OKInt stack traverse (sqstacks,int (* visit) (int)/While (S.top S.base)visit(* s . base);printf(“ n”);Return OKVoid conversion8(SqStack s)unsigned n;int e;init stack(s);/初始化堆栈printf( n(=0)=);Scanf (%u ,n);While (n)/n非零Push (s,n % 8);n=n/8;While(!stack empty(s)/如果堆栈不为空
13、Pop (s,e);printf(“% d”,e);printf(“ n”);Void conversion2(SqStack s)unsigned n;int e;init stack(s);/初始化堆栈printf( n(=0)=);Scanf (%u ,n);While (n)/n非零Push (s,n % 2);n=n/2;While(!stack empty(s)/如果堆栈不为空Pop (s,e);printf(“% d”,e);printf(“ n”);Void conversion16(SqStack s)unsigned n;char d;int e;init stack(s);/初始化堆栈printf( n(=0)=);Scanf (%u ,n);While (n)/n非零Push (s,n % 2);n=n/2;While(!stack empty(s)/如果堆栈不为空Pop (s,e);交换机(e)case 03360 e=0;printf(“% d”,e);Breakcase 13360 e=1;printf(“%
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 八年级物理第五章第四节《密度知识的应用》教案(沪科版)
- 八年级语文《命题作文审题核心技巧》教学设计
- 《金融市场学》本科教学设计:合格境内机构投资者(QDII)制度深度解析
- 初中八年级生物 生物的变异核心知识清单
- 湖北省质量监督检验机构安全管理总结
- 移动脚手架专项施工方案
- 施工现场救援冒顶片帮制度
- XX电气污水处理厂安全生产月活动总结
- 医疗技术临床应用及新技术新项目管理制度考核试题及答案
- 现场标识恢复安全技术交底
- 2026山东城市建设职业学院招聘58人笔试参考题库及答案详解
- 2026年中国光大证券招聘笔试模拟题
- 肺结节精准管理专家共识(2026年版)专家共识解读
- 无人机测绘题库及详解
- 2026沪教牛津七下英语U1-8重点语法归纳+练习
- 2026年小学科学六年级试卷及答案
- 《食品添加剂应用技术》课件-10.2 食品被膜剂 被膜剂
- 《宁夏回族自治区安装工程材料价格信息》 (2025版)
- 2026年高考(广东卷)英语试题及答案
- 2026年八年级下期地理生物中考会考重要知识点
- 中建悬挑卸料平台专项施工方案
评论
0/150
提交评论