数据结构课程设计 福建农林大学金山学院.doc_第1页
数据结构课程设计 福建农林大学金山学院.doc_第2页
数据结构课程设计 福建农林大学金山学院.doc_第3页
数据结构课程设计 福建农林大学金山学院.doc_第4页
数据结构课程设计 福建农林大学金山学院.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

福建农林大学金山学院课程设计报告课程名称:算法与数据结构课程设计课程设计题目:数制转换姓 名:陈华实系:信息与机电工程系专 业:计算机科学与技术年 级:2009学 号:092231044指导教师:陈小娥职 称:助教2011年 6 月 24 日 8福建农林大学金山学院课程设计结果评定评语:序号评定标准分值评定结果1课程设计报告符合规范,条理清晰,重点突出202程序实现设计方案,软件可靠性好403课程设计有自己的收获、体会、感受,等等154能够按照要求演示课程设计155有一定的创新性,难易程度10合计成绩:指导教师签字:任务下达日期:2010年 月 日评定日期:目 录1设计任务12设计要求13设计方案 14 设计内容 15 实验结果 26总结 37附录 3 数制转换1.设计任务主要利用c+语言设计开发一个数制转换器,至少具有如下功能:输入一种数的数据及数制,输出这个数的其他数制表示,要求包括二、八、十和十六进制。 2.设计要求1、培养学生应用面向对象程序设计设计方法及思想解决实际问题的能力。2、培养学生掌握使用面向对象程序设计语言C+和面向对象开发平台Visual C+。3、培养学生调查研究,查阅技术文献、资料、手册以及编写技术文献的能力。本课程设计要实现的主要功能如下:、对给字一个M进制的数据x,求出此数x的10进制值(用MD表示);、实现对x向任意的一个非M进制的数的转换;、至少用两种方法实现上述要求(用栈解决,用数组解决,其它方法解决)。3.设计方案 算法思想:利用D2M()函数和M2D()函数是实现该问题的主要函数。D2M()函数是实现十进制转换为其它进制的函数,它是将输入的十进制数取首先对需要转换的进制M取余,然后再对其取整,接着通过递归调用D2M()函数依次将得到的整数部分依次先取余后取整,并将所得的余数依次存入一个数组中,然后逆向取出数组中的元素,即得到转换后的结果。而M2D()函数则是实现其他进制M转换为十进制,并将其转换为非M进制的数。M进制转十进制则是从该M进制数的最后一位开始算,依次列为第、位并分别乘以M的、次方,将得到的次方相加便得到对应的十进制数,再调用D2M()函数将其转换为非M进制的数。.4.设计内容模块分化1、SqStack定义栈,说明base为栈底指针,top为栈顶指针,stacksize为栈容量;2、int InitStack(SqStack &S)到int DestroyStack(SqStack &S)六大模块分别表示构造一个空栈、用表示栈元素、插入元素、删除元素、判断栈是否为空以及摧毁栈;3、SqStack S是指定义栈S;4、D2M(int a,int b)的功能是将十进制数转换成M进制的函数;5、 M2D()的功能是M进制转换为十进制的函数;6、void main()是主函数。其功能是输入需要测试的数据以及需要转换的进制,并在特定情形下调用D2M()函数和M2D()函数,而且实现M进制数向任意非M进制数的转换。数据类型定义如下:typedef struct int *base; int *top; int stacksize;SqStack;5.实验结果十进制转换成二进制:十进制转换成八进制:十进制转换成十六进制:二进制转换成十进制和八进制:十六进制转换成十进制和八进制:6.总结通过这次课程设计,我对数据结构有了新的认识,我对C+语言有了更深刻的了解,增强了程序的编写能力,巩固了专业知识,虽然在调试程序遇到了很多的困难,但是都一一去把它解决了。从中也让我知道了要学好这门课程,仅学习书本上的知识是不够的,还要有较强的实践能力。因为我们学习知识就是为了实践。而只有多实践,多编写程序,才能更好的理解与掌握书本上的东西。参考文献1 马石安,魏文平编著, 面向对象程序:C+语言描述 ,北京:清华大学出版社,20072 李宽等编著,零基础学C+,北京:机械工业出版社,2009.12 宁正元等编著,算法与数据结构,北京:清华大学出版社,2006.17.附录#include#include#include#include#define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 int e,m,x,s,t; int r,y,i,n;typedef struct int *base; int *top; int stacksize; SqStack;int InitStack(SqStack &S) S.base=(int *)malloc(STACK_INIT_SIZE *sizeof(int);if(!S.base) exit(0); S.top=S.base;S.stacksize=STACK_INIT_SIZE;return 0;int GetTop(SqStack S, int &e) if(S.top=S.base) return 1;e=*(S.top-1);return 0;int Push(SqStack &S , int e) if(S.top-S.base=S.stacksize) S.base=(int *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(int);if(!S.base) return 1 ; S.top=S.base+S.stacksize;S.stacksize+=STACKINCREMENT;*S.top+=e;return 0;int Pop(SqStack &S, int &e) if(S.top=S.base) return 1;e=*-S.top;return 0;int StackEmpty(SqStack S) if(S.top=S.base)return 1;return 0 ;int DestroyStack(SqStack &S) free(S.base);S.top=NULL; S.base=S.top;return 0 ;SqStack S; D2M(int a,int b) while(a)r=a%b;if(r9)r=r+55;Push(S,r); a/=b; printf(该数转换成%d进制的结果:,b);while(!StackEmpty(S)Pop(S,e); if(e=65)printf(%c,e);elseprintf(%d,e);return 0;M2D() char c1000;printf(请输入需要转换的数的位数:);scanf(%d,&n);printf(请输入需要转换的数的每位并用空格隔开:);for(i=0;in;i+)scanf(%x,&ci);Push(S,ci); i=0;while(!StackEmpty(S)Pop(S,e);y+=(int)pow(m,i)*e;i+;printf(转换成10进制的结果是:);printf(%d,y);return 0;void main()InitStack(S); printf(请输入需要转换的进制:);scanf(%d,&m);if(m=10) printf(请给定一个需要转换的10

温馨提示

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

评论

0/150

提交评论