专业基础综合课程设计--进制转换的实现_第1页
专业基础综合课程设计--进制转换的实现_第2页
专业基础综合课程设计--进制转换的实现_第3页
专业基础综合课程设计--进制转换的实现_第4页
专业基础综合课程设计--进制转换的实现_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、专业基础综合课程设计设计说明书进制转换的实现学生姓名 学号 班级 成绩 指导教师数学与计算机科学学院2012年6月29日数据结构课程设计评阅书题目进制转换的实现学生姓名学号指导教师评语及成绩成绩:教师签名:年 月曰答辩教师评语及成绩成绩:教师签名:年 月曰教研室意见总成绩:室主任签名:年 月曰注:指导教师成绩60%,答辩成绩40%,总成绩合成后按五级制记入。陝筋寒工摩整课程设计任务书2011 2012学年第二学期专业:计算机应用技术学号:姓名: 课程设计名称:数据结构课程设计设计题口:进制转换的实现完成期限:自2012 年6月18 h至 2012 年6月 29日共 2周设讣依据、要求及主要内容

2、(可另加附页):计算机中数据的存储形式是0,1代码,也就是以二进制的形式进行存储,运川c或vc+结合数据结构等皋 础知识,按以下耍求实现各种进制的转换。任务要求:1)阐述设计思想,画出流程图;2)能完成用户输入的十进制数转换为二进制、八进制、十六 进制及其他进制数,以及将其他任懑进制数转换成十进制的功能;3)除十进制以为的其他进制之间的相互 转换功能的实现;4)将用户的输入及要求的结果能对应打印输出;5)应用较好的界面设计,说明程序测 试方法;6)按照格式耍求完成课设说明书。设计要求:1)问题分析和任务定义:根据设计题目的要求,充分地分析和理解问题,明确问题耍求做什么?(而 不是怎么做?)限制

3、条件是什么?确定问题的输入数据集合。2)逻辑设计:对问题描述小涉及的操作对彖定义相应的数据类型,并按照以数据结构为中心的原则划 分模块,定义主程序模块和各抽彖数据类型。逻辑设计的结果应写出每个抽彖数据类型的定义(包括数据 结构的描述和每个基本操作的功能说明),各个主耍模块的算法,并画出模块z间的调用关系图;3)详细设计:定义相应的存储结构并写岀各函数的伪码算法。在这个过程中,耍综合考虑系统功能, 使得系统结构清晰、合理、简单和易于调试,抽象数据类型的实现尽可能做到数据封装,基木操作的规格 说明尽可能明确具体。详细设计的结果是对数据结构和基本操作做出进-步的求粘,写出数据存储结构的 类型定义,写

4、出函数形式的算法框架;4)程序编码:把详细设计的结果进一步求精为程序设计语言程序。同时加入一些注解和断言,使程序 中逻辑概念清楚;5)程序调试与测试:采用h底向上,分模块进行,即先调试低层函数。能够熟练掌握调试工具的各种 功能,设计测试数拥确处疑点,通过修改程序来证实它或绕过它。调试正确后,认真整理源程序及其注释, 形成格式和风格良好的源程序淸单和结果;6)结果分析:程序运行结果包括正确的输入及其输出结果和含有错谋的输入及其输出结果。算法的时 间、空间复杂性分析;7)编写课程设计报告;以上要求中前三个阶段的任务完成后,先将设计说明数的草稿交指导老师而审,审查合格后方可进入后续 阶段的工作。设计

5、工作结束后,经指导老师验收合格后将设计说明书打印装订,并进行答辩。指导教师(签字): 教研室主任(签字):批准日期:年月日摘要.朵次课程设计设计了一个任意进制z间转换的软件程序系统,开发木系统,解决任意 进制z间的相互转换,系统主要冇以下儿个模块:任意进制转换为i进制、十进制转换为任 意进制以及两者组合实现任意进制间的相互转换。木软件程序系统在windows 2000/xp系统 下,以microsoft visual c+ 6. 0为运行软件环境,采用c/c+语言进行编写,操作简单 明了,实际解决各进制数之间的转换。目录1课题描述12问题分析和任务定义23逻辑设计34详细设计75程序调试与测试

6、105.1 i-进制转换为任意进制105. 2任意进制转化为十进制115. 3任意进制间的转换12总结18参考文献191课题描述在计算机内部,数据是以二进制表示的,而人们习惯上使用的是十进制数,所以 计算机从我们这里接收到十进制数后,要经过翻译,把十进制数转换为二进制数才能 进行处理,该系统能够根据用户的要求,用c语言来编写这个程序,实现二进制、八 进制、十进制、十六进制z间的相互转化,以及任意进制间的相互转换。系统开发基于windows2000/xp平台,以visual c+6. 0等作为开发工具。2问题分析和任务定义数制转换程序是要求任意两种数间的相互转化,本次课程设计以任意进制间转换 为

7、屮心实现二进制、八进制、十进制、十六进制、十八进制之间的相互转化。具转换 方式大致相同,从低进制数向高进制数转换进行乘数累加,反之则逐步求余,最终进 行分布计算得到想要的结果。本次系统程序,主要有两人模块组成,即任意进制转换为十进制、十进制转换为 任意进制,这两部分共同组成了对任意进制数的转换的实现,通过菜单选择,让川户 实现口己想耍的结果。最后打印输出结果。3逻辑设计数值转换转换系统,包括八个子函数模块,具屮菜单函数模块定义为整型,其余 字符转换两数处理模块都根据函数所需定义数据类型。数制转换处理系统屮川栈來储 存处十进制以外的数,将一个指定进制的数,从低到高一位一位取出,并计算出每位 的十

8、进制值,然后乘以其数基的特定幕指数,得出这一位数的十进制值,将所有各位 的十进制值相加得出这个数的十进制值,然后再将该十进制数转换为指定数制的数, 此过程采用求余法进行,用这个十进制数作为被除数,用指定的数基作除数,连续求 余,得出的余数依由个位到十位等的顺序组成新数,即得指定数制的数。逻辑设计如图3.1所示。图3.1设计思想流程图3. 1程序流程图(1)主函数main()流程图,如图3.2所示图3. 2 main函数流程图(2) |进制转换为任意进制流程图,如图3.3所示图33为i 进制到任意进制转换流程图(3)任意进制到十进制的转换,如图3.4所示图3.4为任意进制到十进制转换流程图4详细

9、设计#include<stdio.h> #include<stdlib.h> #include<math.h> #include<ctype.h> #include<process h> #include<malloc. h> #include<string h>#define #defi ne define #defineok 1error 0stack_init_size 100stackincrement 10typedef char status;typedef structint *base;int

10、*top;int stacksize;当前己分配的存储空间,以元素为单元sqstack; char si20; char s210;int initstack(sqstack &s)/构造一个空栈s. base=(int*)malloc(stack 1n1t size*sizeof(int); if (!s. base) /空栈的标志return(error);s. top二s. base;s. stacksize二stack_init_size;return ok;status clearstack(sqstack &s)/清空栈s top=s base;return ok;

11、status push(sqstack &s, int e) /压栈(插入元素e为新的栈顶元素)if (s. top-s. base二 s. st acksize)s. base=(int*)realloc(s. base, (s. stacksize+stackincrement)*sizeof (int); if (!s. base) return (overflow);存储分配失败s. top 二 s. base +s. st acksize ;s. stacksize+=stackincrement; s. top二s. base;s. top+;先插入数据元素,再移动栈顶指针

12、*s. top二e;return ok;char stackempty(sqstack *s)/判断栈是否为空if(s->top=s->base)return ok;elsereturn error;int any_ten(int n)/任意进制转化为十进制int i=0, j=0, y, d, c二t ;int v二0, r二0, sum二0;char t 20;printfc请输入您要转化的数:);scanf ("%s", &t);printf("n");fflush(stdin);while(tj != 0')j+;fo

13、r (i=0; t i!二'0' ; i+) if(int) (ti)> 二 48&&(int) (ti)<=57| | (ti)>='a' &&(int) (t i)二'j');else printf c输入有误!请输入数字:n");printfc请输入您要转化的数:);scanf (“s", &t);c+;y=j-i-l;if(tiw);elsed二ti;ti二d-7;r=(int) (ti-48)*pow( n, y);sum=sum+r;return sum;v

14、oid ten_any (sqstack &s, int a, int m )/十进制转换为任意进制int q, i二0, b, c二0, n二0;b=(int)a;if(isdigit (b)printf cz输入错误n);else while(b>0)i+;n+;q=b%m;if(q>9)q= toupper(q+55);elseq二q+48;push(s, q);b=b/m;si i=*s. top;printfc最终转换结果为:);for(i=n;i>0;i)printf ("%c", si i);int any_any(sqstack &

15、amp;s)任意进制间的转换int m, z, n, sum;printf ("请输入源进制和目标进制(2, 8, 10, 16):”);scanf("%d", &n);scanf ("%d", &m);printf("n");printf ("将%d进制转换为%d进制",n, m); printf("n");printf(n);sum二any ten(n);tnitstack (s);ten_any ( s, sum, m); return(ok);int menu

16、select()printf("n"); printf("tt printf printf("tt printf (z/tt fflush(stdin);int c; do2、8、10、16进制间的互相转换tnnn");1.进制转换tnn");0.谢谢使用tnn");请输入你需要进行的操作l/0:nnn );scanf&c); while(c<0|c>l); return (c);void main()jisqstack s; int n, m; float a;for (;)1switch(me nu

17、_select ()icase 1:printf cttt 进制转换nrt);any_any(s);break;case 0:printf (/zttt 谢谢使用!再见! : n"); printf("ttt");exit (0);5程序调试与测试在vc+6. 0运行界面如图5. 1所示:数制转换两数调试结果截图2、8、10、16进制间的互相转换 丄进制转换0 退岀请输入你需要进行的操作图5.1为数制转换程序运行界面5.1十进制转换为任意进制,结果如图5. 25. 5所示:(1) 输入合法数据:请输入需要转换的两位进制2,8,10.16:10 2 将値进制转换为2

18、进制请输入您要转化的数:43最终转换结果为:1010h.图5. 2为十进制到二进制的转换请输入需要转换的两位迸制2,8,10,16:10 8編10进制转换为8进制请输入您要转化的数詔4最终转换结果为:42.图5. 3为十进制到八进制的转换请输入需要转换的两位迸制2,8,10,16:10 16将佃进制转换为16进制请输入您要转化的数活?最终转换结果为:43图5. 4为十进制到十六进制的转换(2) 输入非法数据:请输入源迸制和目标迸制2,8,10,16:2 8备2进制转换为8进制请输入您要转化的数次巳图5. 5输入非法数据5. 2任意进制转化为进制,结果如图5. 6一5. 9所示: (1)输入合法

19、数据:请输入需要转换的两位进制2,8.10.16:2 10世2进制转换为個进制请输入您要转化的数= 1011101最终转换结果为:93.图5. 6为二进制到十进制的转换请输入需要转换的两位进制2,8,10,16:8 10将8进制转换为佃进制请输入您要转化的数:43最终转换结果为:35图5. 7为八进制到|进制的转换请输入需要转换的两位迸制2,8,10,16:16 10将16进制转换为佃进制请输入您要转化的数詔?最终转换结果为:55.图5. 8为十六进制到十进制的转换(2)输入非法数据:”青输入源进制和目标进制2,8,10,16:10 2 将10进制转换为2进制”输入您要转化的数= 12.34图

20、5. 9对小数不能正确转换5. 3任意进制间的转换,结果如图5. 105. 13所示:(1)输入合法数据:请输入需要转换的两位进制2,8,10,16:2 8将2进制转换为8进制请输入您要转化的数=101010最终转换结果为:52图5. 10为二进制到八进制的转换请输入需要转换的两位进制2,8,10,16:8 16将8进制转换为16进制请输入您要转化的数:65最终转换结果为:35.图5. 11为八进制到十六进制的转换请输入需要转换的两位进制2,8,10.16:16 2 将16进制转换为2进制请输入您要转化的数:62i最终转换结果为:"001"图5. 12为十六进制到二进制的转换(2)输入非法数据:请输入源进制

温馨提示

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

评论

0/150

提交评论