数据结构课程设计数制转换问题_第1页
数据结构课程设计数制转换问题_第2页
数据结构课程设计数制转换问题_第3页
数据结构课程设计数制转换问题_第4页
数据结构课程设计数制转换问题_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、安徽省巢湖学院计算机与信息工程学院课程设计报告课程名称 数据结构 课题名称 数制转换问题 专业 计算机科学与技术 班级 10计本2班 学号 10012100 姓名 联系方式 指导教师2011年12月28日目 录1、数据结构课程设计任务书1.1、题目1.2、要求2、总体设计2.1、功能模块设计2.2、所有功能模块的流程图3、详细设计3.1、程序中所采用的数据结构及存储结构的说明3.2、算法的设计思想4、调试与测试:4.1、调试方法与步骤:4.2、测试结果的分析与讨论:4.3、测试过程中遇到的主要问题及采取的解决措施:5、时间复杂度的分析:6、源程序清单和执行结果7、c程序设计总结68、致谢69、

2、参考文献61、数据结构课程设计任务书1.1、题目数制转换问题1.2、要求任意给定一个m进制的数x ,请实现如下要求:1) 求出此数x的10进制值(用md表示)2) 实现对x向任意的一个非m进制的数的转换。3) 至少用两种或两种以上的方法实现上述要求(用栈解决,用数组解决,其它方法解决)。2、总体设计在数组和栈实现时,利用for()循环和while()循环以及调用进制间的转换函数和输出函数,使m进制先转换成十进制再转换成非m进制。2.1、功能模块设计根据课程设计题目的功能要求,各个功能模块的组成框图如下:需要转换m进制数模块建立串实现模块栈实现模块10进制值输出模块10进制值输出模块非m进制转换

3、模块1非m进制转换模块2注:重点模块功能描述:1.串实现模块:把m进制数x存入串中。 2.栈实现模块:把m进制数x存入栈中。3.非m进制转换模块1:运用串实现转换。 4.非m进制转换模块2:运用栈实现转换。2.2、所有功能模块的流程图开始串栈输入需要转换的进制和数输入要转换到的进制n10进制值输出转换后输出3、详细设计模块功能说明:如函数功能、入口及出口参数说明,函数调用关系描述等;3.1、程序中所采用的数据结构及存储结构的说明本程序运用串和栈实现数组之间的转换。把m进制的数x的各位分别存入串和链栈中,运用数组的读入读出和栈的出栈和入栈算法,让程序更加人性化的实现任意数制之间的转换,在运用函数

4、调用模块的连接,输出转换成10进制的值和非m进制的值。3.2、算法的设计思想、用串实现该问题:m,n,x是定义的全局变量;loop循环是实现m进制数转换为10进制;trans()是实现10进制数转换为n进制数的函数;(4)void main()是主函数,功能是给出测试的数据,并在特定条件下调用trans()函数。、用栈实现该问题: seqstack定义栈, top为栈顶指针; int initstack(sqstack &s)到void clearstack(sqstack &s)六大模块分别表示构造一个空栈、判断栈是否为空、判断栈是否为满、进栈、出栈、摧毁栈;seqstack s是指定义栈s

5、;for()循环和while()循环的功能是将m进制数转换成10进制数;do.while实现输入转换合理的进制,第二个while()是把之前转换的10进制值压入栈,第三个while()循环是转换后的出栈输出; void main()是主函数。其功能是输入需要测试的数据以及需要转换的进制,实现m进制数向任意非m进制数的转换。4、调试与测试:4.1、调试方法与步骤:第一步:用串实现的测试;第二步:用栈实现的测试。4.2、测试结果的分析与讨论:串转换:栈转换:4.3、测试过程中遇到的主要问题及采取的解决措施:遇到的问题:通常是2、4、8、10、16进制之间的转换。任意进制之间的转换在串和栈的处理时遇

6、到了大于10的数的处理难题,同时在栈的处理时如何处理把m进制准换成10进制在转换成n进制时简单方法时,特别是数字的长度处理上,也遇到了一定的难题。问题的解决:运用网络解决了串的中数组大于10的处理方法,同时利用数组自行解决数字长度的求解并压入栈,实现向10进制的转换,并以10进制值为中间点顺利利用栈向非m进制的转换。5、时间复杂度的分析:串转换:任一数转换为十进制时间复杂度为o(n)十进制转换为其他进制时间复杂度为o(n*n)栈转换:任一数转换为十进制时间复杂度为o(n)十进制转换为其他进制时间复杂度为o(n)6、源程序清单和执行结果串转换:#include #include /输入十进制数n

7、和转化的进制数mvoid trans(int n,int m) char str100; int i;for(i=0;n0;i+) if (n%m0;n-)printf(%c,strn-1); void main() int m,n,x; char ch; printf(gei ding jing zhi m:); scanf(%d,&m); loop:printf(gei ding yi ge %d jin zhi de shu x:,m); fflush(stdin); /一个m进制的数x转10进制 for(x=0;) ch=getchar(); if(ch=0 & ch=a & ch=a

8、 & ch=m)goto loop; x=x*m+n; printf(zhuan hua cheng 10 jin zhi de shu wei:%dn,x); printf(gei ding yao zhuan hua cheng de jin zhi n:); scanf(%d,&m); printf(zhuan hua cheng %d jin zhi hou de jie guo:,m); trans(x,m); printf(n); 栈转换:#include #include #define stack_size 20typedef int elemtype;/顺序栈存储类型type

9、def structelemtype elemstack_size;int top; seqstack;/初始化:为未初始化的顺序栈s设置栈顶指针void initstack(seqstack *s)s-top=-1; printf( kong zhan s=( )n);/判空栈:判断栈s是否为空栈int isempty(seqstack *s)if(s-top=-1) return 1;else return 0;/判栈满:判断栈s是否为满栈int isfull(seqstack *s)if(s-top=stack_size-1) return 1;else return 0;/进栈:向s栈

10、顶压入一个数据元素int push(seqstack *s,elemtype x)if(isfull(s) return 0;s-top+;s-elems-top=x;return 1;/出栈:弹出s的栈顶元素,并用x返回int pop(seqstack *s,elemtype *x) if(isempty(s) return 0; *x=s-elems-top;s-top-; return 1;/销毁栈svoid clearstack(seqstack *s)free(s);printf(zhan xiao hui n);void main()char x20;int mx;int m; i

11、nt m;int x=0;int t;int i,length; seqstack *s=(seqstack *)malloc(sizeof(seqstack); initstack(s); printf(qing shu ru jin zhi he shu : ); scanf(%d,%s,&mx,x); t=1; length=strlen(x); for(i=0;i=a&xi=z) push(s,xi-a+10); else push(s,xi-0); while(!isempty(s) /求十进制数 pop(s,&m);x+=m*t;t*=mx; printf(shi jin zhi

12、shu=%dn,x); doprintf(zhuan huan de jin zhi : ); scanf(%d,&m);while(m16|m=mx); while(x!=0) /用上步求的十进制数来转换成其他进制数 m=x%m;push(s,m);x=x/m; printf(%d jinzhi zhuan huan cheng %d zhi de zhi : ,mx,m); while(!isempty(s) pop(s,&m); if(m=10)printf(%c,a+m-10); else printf(%d,m); printf(n);clearstack(s);7、c程序设计总结本程序在刚开始调试时有许多错误,但在我的努力及同学的帮助下都被一一克服,现在在操作本程序时可根据提示进行相关操作,能正确输出结果。在刚开始的几次调试中曾经出现过不能运行、不能产生产生真确结果的问题。在这次设计过程中,不仅复习课本上所学知识,还通过查资料、问同学学到了课本上没有的知识。从而启发我,要想写好程序,在写好课本知识的同时还需要多读和专业有关的一些书籍,同时还需要多动脑子,尽量把所学的知识综合起来应用,力争写出完美的程序。除此之外

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论