进制转换的实现Word_文档

上传人:积*** 文档编号:125609515 上传时间:2022-07-27 格式:DOC 页数:29 大小:1.09MB
收藏 版权申诉 举报 下载
进制转换的实现Word_文档_第1页
第1页 / 共29页
进制转换的实现Word_文档_第2页
第2页 / 共29页
进制转换的实现Word_文档_第3页
第3页 / 共29页
资源描述:

《进制转换的实现Word_文档》由会员分享,可在线阅读,更多相关《进制转换的实现Word_文档(29页珍藏版)》请在装配图网上搜索。

1、专业基本综合课程设计设计阐明书进制转换的实现学生姓名赵玲学号班级计专101班成绩指引教师余冬梅数学与计算机科学学院6月29日 专业基本综合设计 课程设计评阅书题目进制转换的实现学生姓名赵玲学号指引教师评语及成绩指引教师签名: 年 月 日答辩评语及成绩 答辩教师签名: 年 月 日教研室意见总成绩: 室主任签名: 年 月 日课程设计任务书第2学期专业:计算机科学与技术 学号: 姓名: 赵玲 课程设计名称:数据构造课程设计 设计题目: 进制转换的实现 完毕期限:自 年 6月 18日至 年 6 月 29 日共 2 周设计根据、规定及重要内容(可另加附页):计算机中数据的存储形式是0,1代码,也就是以二

2、进制的形式进行存储.运用C或VC+结合数据构造等基本知识,按如下规定编程实现多种进制的转换。任务规定:1)论述设计思想,画出流程图;2)能完毕顾客输入的十进制数转换为二进制、八进制、十六进制及其她进制数,以及将任意的进制数转换为十进制的功能; 3)除十进制以外的其她进制间的互相转换功能的实现;4)将顾客的输入及规定的成果能相应打印输出;5)应有较好的界面设计,阐明程序测试措施;6)按照格式规定完毕课程设计阐明书。设计规定:1)问题分析和任务定义:根据设计题目的规定,充足地分析和理解问题,明确问题规定做什么?(而不是怎么做?)限制条件是什么?拟定问题的输入数据集合。2)逻辑设计:对问题描述中波及

3、的操作对象定义相应的数据类型,并按照以数据构造为中心的原则划分模块,定义主程序模块和各抽象数据类型。逻辑设计的成果应写出每个抽象数据类型的定义(涉及数据构造的描述和每个基本操作的功能阐明),各个重要模块的算法,并画出模块之间的调用关系图;3)具体设计:定义相应的存储构造并写出各函数的伪码算法。在这个过程中,要综合考虑系统功能,使得系统构造清晰、合理、简朴和易于调试,抽象数据类型的实现尽量做到数据封装,基本操作的规格阐明尽量明确具体。具体设计的成果是对数据构造和基本操作做出进一步的求精,写出数据存储构造的类型定义,写出函数形式的算法框架;4)程序编码:把具体设计的成果进一步求精为程序设计语言程序

4、。同步加入某些注解和断言,使程序中逻辑概念清晰;5)程序调试与测试:可以纯熟掌握调试工具的多种功能,设计测试数据保证程序对的。调试对的后,认真整顿源程序及其注释,形成格式和风格良好的源程序清单和成果;6)成果分析:程序运营成果涉及对的的输入及其输出成果和具有错误的输入及其输出成果。算法的时间、空间复杂性分析;7)编写课程设计报告;以上规定中前三个阶段的任务完毕后,先将设计阐明书的草稿交指引教师面审,审查合格后方可进入后续阶段的工作。设计工作结束后,经指引教师验收合格后将设计阐明书打印装订,并进行答辩。指引教师(签字): 教研室主任(签字): 批准日期: 年 月 日摘要本次课程设计设计了一种任意

5、进制之间转换的软件程序系统,根据对计算机的发展规定,常用的二进制、八进制、十进制及十六进制数也相应得到广泛使用,从最基本十进制向各个转换以及各进制内部转换相相应用较多,随后浮现多种进制数,针对此现实,开发本系统,解决任意进制之间的互相转换,系统重要有如下几种模块:任意进制转换为十进制、十进制转换为任意进制以及两者组合实现任意进制间的互相转换。本软件程序系统在windows /XP系统下,以Microsoft Visual C+ 6.0为运营软件环境,采用C/C+语言进行编写,操作简朴明了,实际解决各进制数之间的转换。核心词:二进制;进制数;任意进制;互相转换目 录1 课题描述72问题分析和任务

6、定义83 逻辑设计8 程序流程图9 3.1主函数main()11 3.2主菜单list2()11 3.3常用进制转换菜单list1()12 3.4十进制转换为任意进制函数ten_ANY ()13 3.5任意进制转换为十进制函数ANY _ten()14 3.6任意进制转换为任意进制函数ANY _ch()154 具体设计164.1 任意进制转十进制函数164.2 十进制转任意进制函数165 程序编码186程序测试和运营成果23总结25参照文献251 课题描述使用计算机的人每时每刻都在与数打交道,在计算机内部,数是以二进制表达的,而我们习惯上使用的是十进制数,因此计算机从我们这里接受到十进制数后,要

7、通过翻译,把十进制数转换为二进制数才干进行解决,这个过程是由计算机自动完毕的。但是对程序员来说,有时需要把十进制数转换为二进制数、十六进制数和八进制数,或者把十六进制数转换为十进制数等,这都不是一件轻松的工作,为了使这项工作变得轻松快乐目前我们用C语言来编写这个程序,该系统可以根据顾客的规定,实现二进制、八进制、十进制、十六进制之间的互相转化,以及任意进制间的互相转换。系统开发基于Windows/Xp平台,以Visual C+6.0等作为开发工具。2问题分析和任务定义数制转换器程序是规定任意两种数间的互相转化,本次课程设计以任意进制间转换为中心实现二进制、八进制、十进制、十六进制、十八进制之间

8、的互相转化。对输入的任意进制的数字进行转换,实现常用进制间的转换以及顾客自定义需要转换的目的进制数,这样大大提高了本程序的用途。常用的二进制、八进制、十进制、十六进制、十六进制之间的固定转换,其转黄方式大同小异,从低进制数向高进制数转换进行乘数累加,反之则逐渐求余,最后进行分布计算得到想要的成果,对以上思想进行扩展,使其不仅仅局限于那些常用进制间的转换,更多的应用到任意进制之间的转换。本次系统程序,重要有两大模块构成,即任意进制转换为十进制、十进制转换为任意进制,这两部分共同构成了对任意进制数的转换的实现,通过菜单选择,让顾客实现自己想要的成果,同步也在程序的简洁上有所压减,达到简洁的应用程序

9、实现相对较复杂的功能。最后打印输出成果,清屏执行下次任务。3 逻辑设计竖直转换器系统,涉及七个子函数模块,其中菜单函数模块定义为整型,其他字符转换函数解决模块都根据函数所需定义数据类型。数制转换器解决系统中用数组来储存处十进制以外的数,将一种指定进制的数,从低到低高一位一位取出,并计算出每位的十进制值,然后乘以其数基的特定幂指数,得出这一位数的十进制值,将所有各位的十进制值相加得出这个数的十进制值,然后再将该十进制数转换为指定数制的数,此过程采用求余法进行,用这个十进制数作为被除数,用指定的数基作除数,持续求余,得出的余数依次由个位到十位等的顺序构成新数,即得指定数制的数。逻辑设计如图所示。

10、图3.1 系统模块图图 系统模块图程序流程图3,1主函数main()该功能设计思想是:调用一种函数list2()实现该模块功能。流程图如图4.1所示:图4.1 main()函数流程图3.2主菜单list2()该功能设计思想是:为了打印出可供客户选择的主菜单,以及客户自主选择模式,运用了do-while语句及switch语句,最后实现该模块功能流程图如图4.2所示:图4.2 list2()函数流程图3.3常用进制转换菜单list1()该功能设计思想是:打印出几种常用的进制之间固定转换的菜单,客户从中自主选择模式,该模块运用了for ,if-else语句,switch语句以及do-while语句等

11、。函数流程图如图4.3所示:图4.3常用进制转换菜单list1()函数流程图3.4十进制转换为任意进制函数ten_ANY ()该功能设计思想是:该模块中先对十进制求余,再把超过9的数字转化成大写字母,这两个过程中都运用了for语句及if语句。函数流程图如图4.4所示:图 4.4 十进制转换为任意进制函数ten_ANY ()函数流程图3.5任意进制转换为十进制函数ANY _ten()该功能设计思想是:模块运用for语句及if-else语句,最后实现任意进制数转化成十进制的功能,。函数流程图,如图4.5所示:图4.5任意进制转换为十进制函数ANY_ten ()函数流程图3.6任意进制转换为任意进制

12、函数ANY _ch()该功能设计思想是:调用ANY-ten(),将输入的进制数转化成十进制,在选择与否继续转化,若是,则运用swich语句将目的进制数输出。函数流程图,如图4.6所示:图4.6任意进制数之间的转换ANY_ch()函数流程图4 具体设计4.1 任意进制转十进制函数十进制整数num转换为任意(x)进制整数采用除x取余,逆序排列法。具体做法是:用x清除十进制整数,可以得到一种商和余数;再用x清除商,又会得到一种商和余数,如此进行,直到商为一时为止,然后把先得到的余数作为x进制数的低位有效位,后得到的余数作为x进制数的高位有效位。int ANY_ten(int x,int num) i

13、nt i,j=0;int s=0;for(i=1;num!=0;i*=x)if(num%10(x-1)j=1;break;elses+=(num%10)*i;num=num/10;if(j=1)printf(原数据出错!请重新输入:n);elseprintf(转换为十进制:%dnn,s);return s;4.2 十进制转任意进制函数从最后一位开始算,依次列为第0、1、2.位第n位的数乘以任意进制数y的n次方得到的成果相加。void ten_ANY(int num,int y)int i;int arr30;for(i=0;i+)arri=num%y;num=num/y;if(num=0)br

14、eak;printf(转换为 %d 进制:,y);for(;i=0;i-)if(arri=10) printf(%c,arri+55);else printf(%d,arri);printf(nn);5 程序编码#include#include#includelist2();int ANY_ten(int x,int num) int i,j=0;int s=0;for(i=1;num!=0;i*=x)if(num%10(x-1)j=1;break;elses+=(num%10)*i;num=num/10;if(j=1)printf(原数据出错!请重新输入:n);elseprintf(转换为十

15、进制:%dnn,s);return s;void ten_ANY(int num,int y)int i;int arr30;for(i=0;i+)arri=num%y;num=num/y;if(num=0)break;printf(转换为 %d 进制:,y);for(;i=0;i-)if(arri=10) printf(%c,arri+55);else printf(%d,arri);printf(nn);void list1()int i,a,m,num;char ch100;FILE *f;dogetchar();system(cls);printf( *n);printf( * *n)

16、;printf( * 数制转换器 *n);printf( * *n);printf( * 1 - 十进制转二进制 *n);printf( * 2 - 十进制转八进制 *n);printf( * 3 - 十进制转十六进制 *n);printf( * 4 - 二进制转十进制 *n);printf( * 5 - 八进制转十进制 *n);printf( * 6 - 十六进制转十进制 *n);printf( * 7 - 二进制转八进制 *n);printf( * 8 - 二进制转十六进制 *n);printf( * 0 - 返回 *n);printf( * *n);printf( *n);loop:pr

17、intf(请输入你所选择的序号: ); scanf(%d,&a); if(a!=0&a9) st:printf(n输入要转换的数: ); scanf(%s,&ch); f=fopen(num.txt,w); for(i=0;i=(int)strlen(ch);i+) fputc(chi,f); fclose(f); for(i=0;i=48&(int)(chi)=A&(int)(chi)0);void ANY_ch()int a,m,x,y,num;printf(请输入进制数: );scanf(%d,&x);printf(输入该 %d 进制数:,x);scanf(%d,&num);m=ANY_

18、ten(x,num);printf( 与否将目前十进制数进一步转换: 1.是 2.否n); printf( 请选择: );loop2:scanf(%d,&a); switch(a) case 1:printf(转换的目的进制数为: ); scanf(%d,&y); ten_ANY(m,y);break; case 2:printf(t转换结束!);break; default:printf(选择有误! 请重选: );goto loop2;break; getchar();int list2()int b;doprintf( *n);printf( * 欢迎访问: 二十进制内任意进制转换! *n

19、);printf( *n);printf(tt按Enter进入主菜单!);getchar();system(cls);printf( *n);printf( * 【主菜单】 *n);printf( * *n);printf( * 模式选择 *n);printf( * *n);printf( * 1 - 常用进制转换 *n);printf( * 2 - 自定义进制数转换 *n);printf( * 0 - 退出 *n);printf( * *n);printf( *n);loop1:printf( 请选择要执行的模式: ); scanf(%d,&b); switch(b) case 1: lis

20、t1();break; /*常用进制转换菜单*/ case 2: ANY_ch();break; /*任意进制数之间转换*/ case 0: exit(0);break; default: printf(n您的输入有误,请重新选择!nn);goto loop1;break; getchar();while(b0);return 0;void main()list2();6程序测试和运营成果图6.1数制转换器函数调试成果按Enter键进入主菜单,如图6.2所示:图6.2主菜单选择1,进入常用进制转换菜单,如图6.3所示:图6.3常用进制转换菜单任选一项,例如选择3,十进制转换为十六进制函数,输入

21、59,成果如图6.4所示:图6.4十进制转换为十六进制选择0,返回主菜单如图6.5所示:图6.5返回主菜单选择2,自定义进制转换,输入进制数为2,数字为110101,选择1.是,成果如图6.6所示:图6.6自定义进制转换 输入不合法数值,成果如图6.7所示: 图6.7输入不合法数值总结在本次课程设计中,所完毕的数制转换器系统实现了二进制、八进制、十六进制和十进制之间转换等功能,同步也实现了二十进制内任意进制之间的转化功能。其中有关数字太大无法实现转化的问题,重要是由于数字超过了定义的长度时,无法实现两个数制转化。除此之外不能实现小数的转化等问题。加入了对输入数字的鉴定与否符合规定,对输入不合法

22、字符检查并提示。但愿后来可以实现上述两个问题,一方面是改善程序,是其能实现小数的转化,另一方面改善定义的长度问题,使其可以转化更大的数。这次课程设计使我对C语言知识进行了系统的、有条理的复习,对许多知识点都加强了记忆。在开始编写程序时,我遇到了许多问题,但通过看书、查资料、向教师请教,最后将问题一一化解。同步这次课程设计的制作,将为我毕业设计的制作打下坚定的基本。参照文献1 罗建军,朱丹军,顾刚,C+程序设计教程(第2版).高等教育出版社.2 谭浩强,C程序设计(第三版).北京.清华大学出版社.3 李建忠,大学计算机基本.西安.西北大学出版社.4 谭浩强,C程序设计题解与上机指引(第三版).北京.清华大学出版社.

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!