欢迎来到天天文库
浏览记录
ID:12068829
大小:347.65 KB
页数:27页
时间:2018-07-15
《数制转换-C语言程序设计课程设计报告.docx》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、计算机学院《高级语言程序设计》课程设计报告学号2016-2017学年第二学期《C语言程序设计》课程设计报告题目:数制转换专业:网络工程(对口)班级:姓名:指导教师:成绩:计算机学院2017年4月25日6计算机学院《高级语言程序设计》课程设计报告目录一、转换概述21、需求分析22、概要设计23.详细设计41.十进制转化为任意进制函数:42.任意进制转化十进制函数:53.程序流程图64.运行环境115.开发工具和编程语言12二、数学原理13十进制转二进制:13十进制转八进制:13十进制转十六进制:14二进制转十进制:14二进制转八进制:14二进制转十六进制:15八进制转十进制:15八进制转十
2、六进制:16十六进制转二进制:16十六进制转八进制:16三、附:源代码17测试结果22参考文献25四、小结26致谢266计算机学院《高级语言程序设计》课程设计报告一、转换概述1、需求分析进制数制是人们利用符号进行计数的科学方法。数制有很多种,在计算机中常用的数制有:十进制,二进制、八进制和十六进制。十六进制数有两个基本特点:它由十六个字符0~9以及A,B,C,D,E,F组成(它们分别表示十进制数0~15),十六进制数运算规律是逢十六进一。要求:(1)输入一个十进制数N,将它转换成R进制数输出,并可以进行逆转换。(2)输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(
3、2<=R<=16,R<>10)。(3)为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等)。(4)界面友好。2、概要设计数制转换器程序是要求任意两种数间的相互转化,本次课程设计以任意进制间转换为中心实现二进制、八进制、十进制、十六进制、十八进制之间的相互转化。对输入的任意进制的数字进行转换,实现常见进制间的转换以及用户自定义需要转换的目标进制数,这样大大提高了本程序的用途。常见的二进制、八进制、十进制、十六进制、十六进制之间的固定转换,其转换方式大同小异,从低进制数向高进制数转换进行乘数累加,反之则逐步求余,最终进行分布计
4、算得到想要的结果,对以上思想进行扩展,使其不仅仅局限于那些常见进制间的转换,更多的应用到任意进制之间的转换。本次系统程序,主要有两大模块组成,即任意进制转换为十进制、十进制转换为任意进制,这两部分共同组成了对任意进制数的转换的实现,通过菜单选择,让用户实现自己想要的结果,同时也在程序的简洁6计算机学院《高级语言程序设计》课程设计报告上有所压减,达到简洁的应用程序实现相对较复杂的功能。最后打印输出结果,清屏执行下次任务。该程序包括七个子函数模块,其中菜单函数模块定义为整型,其余字符转换函数处理模块都根据函数所需定义数据类型。数制转换器处理系统中用数组来储存处十进制以外的数,将一个指定进制的
5、数,从低到低高一位一位取出,并计算出每位的十进制值,然后乘以其数基的特定幂指数,得出这一位数的十进制值,将所有各位的十进制值相加得出这个数的十进制值,然后再将该十进制数转换为指定数制的数,此过程采用求余法进行,用这个十进制数作为被除数,用指定的数基作除数,连续求余,得出的余数依由个位到十位等的顺序组成新数,即得指定数制的数。(1)逻辑设计如图所示:图2.16计算机学院《高级语言程序设计》课程设计报告(2)程序中各函数简单说明见如表1、1函数说明所示:表2.1返回值函数名参数表函数说明intmainvoid主函数voidintANY_ten()intx,intnum任意进制转换为十进制vo
6、idIntten_ANY()intnum,inty十进制转换为任意进制voidten_ANY()num,2十进制转换为二进制voidlist1()num进制转换菜单voidlist2()num主菜单voidANY_ch()num,num任意进制间的转换3.详细设计1.十进制转化为任意进制函数:十进制整数num转换为任意(x)进制整数采用"除x取余,逆序排列法。具体做法是:用x去除十进制整数,可以得到一个商和余数;再用x去除商,又会得到一个商和余数,如此进行,直到商为一时为止,然后把先得到的余数作为x进制数的低位有效位,后得到的余数作为x进制数的高位有效位,结构图如图3.4所示:intAN
7、Y_ten(intx,intnum){inti,j=0;ints=0;for(i=1;num!=0;i*=x)6计算机学院《高级语言程序设计》课程设计报告{if(num%10>(x-1)){j=1;break;}else{s+=(num%10)*i;num=num/10;}}if(j==1)printf("原数据出错!请重新输入:");elseprintf("转换为十进制:%d",s);returns;}2.任意进制转化
此文档下载收益归作者所有