数据结构课程设计之任意进制转换.docx

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
##大学 数据结构课程设计报告 题目: 数值转换 院(系): 学生姓名 : 班级: 起迄日期 : 指导教师 :  计算机工程学院 学号 : 6月16号到 6月30号 20XX— 20XX年度 第 2 学期 一、需求分析 问题描述 : 任意给定一个 M 进制的数 x ,请实现如下要求 求出此数 x 的 10 进制值(用 MD 表示) 实现对 x 向任意的一个非 M 进制的数的转换。 至少用两种或两种以上的方法实现上述要求(用栈解决,用数组解决,其它方法解 决)。 基本功能 本程序用 三种方法,实现把一个 M 进制数 x 转换成其他进制数,分别是数组,递归, 栈。 1.把其他进制数转换成十进制包含在一个函数中: 2.把十进制转换成其他进制数用了三种方法( N)。递归 : void prind_d(int n,int c) 。  int getdex() ; 数组 ,递归,栈),数组:  void array(int 栈:  void initstack(stacks)  , void push(stack s,char e)  , void pop(stack s)  。 3.实现把一个  M 进制数  x 转换成其他进制数:  先把  M 进制数转换成十进制数,再把十进制 数转换成其他进制数 。封装在三个函数中: void Array() , void Stack() , void Prind() 。 输入输出 输入要求其他进制数为字符型数据包括在 1 到 9,和 A到 F 这些字符中,输出也是包含在这些字符中。如果输入超过这些范围进行容错处理。 二、 概要设计 设计思路: 把 M进制数转换成其他进制数,可以先把 M进制数转换成十进制数,调用 int getdex() ; 再把十进制数转换成其他进制数(三种方法:数组,递归,栈);最后把这两个步骤结合在 一起。封装在三个函数中:: void Array() ,void Stack() ,void Prind() ;通过 switch 语句进行选择采用哪种方法转换。 2. 数据结构设计: 抽象数据类型栈: ADT Stack { 数据对象: D = { ai | ai ∈ ElemSet, i=1,2,...,n, n ≥ 0 } 数据关系: R1 = { ai-1, ai | ai-1, ai ∈D, i=2,...,n } 约定 an 端为栈顶, a1 端为栈底。 }ADT Stack  ; 基本操作: InitStack(S) 操作结果:构造一个空栈  S 。 Push(S, e) 初始条件:栈 S 已存在。 操作结果:插入元素 e 为新的栈顶元素。 Pop(S, e) 初始条件:栈 操作结果:删除  S 已存在且非空。 S 的栈顶元素,并用  e 返回其值。 3. 软件结构设计: 三、 详细设计 定义程序中所有用到的数据及其数据结构,及其基本操作的实现; 用到的数据 char 类型 M进制数, typedef struct{ int *base; int *top; int stacksize; }stack; 基本操作: void array(int N) 初始条件:已知一个十进制数 操作结果:转换成其他进制数 y。 int getdex() 初始条件:已知一个 M进制数 操作结果:转换成十进制数。 void prind_d(int n,int c) 基本操作: 初始条件:已知一个十进制数 操作结果:转换成其他进制数 y。 InitStack(S) 操作结果:构造一个空栈 S 。 Push(S, e) 初始条件:栈 S 已存在。 操作结果:插入元素 e 为新的栈顶元素。 Pop(S, e) 初始条件:栈 S 已存在且非空。 操作结果:删除 S 的栈顶元素,并用 e 返回其值。 2.主函数和其他函数的伪码算法; 算法设计说明,存储结构的说明。 1.int getdex() ;把其他进制数转化为十进制数, 算法步骤:( 1 )定义一个字符型的数组 char a 【 50】,用 gets ()函数输入字符串。把 M 进制数保存在一个字符串 数组 当中,例如 16 进制数 2A , (2 )用 for 循环的嵌套实现转换。从 i=n-1 开始,执行语句:判断 a【 i】是否大于 57(整 数大小的比较),( a[i]=57 , a【 i】减去 48 ,a[i]57 那么 a[i]-55 ,因为 1 到 9 和 A,B,C 的 Aske 码有差别。) 从而实现字符向整数的转变。 (3 )通过 for 循环把 M 进制数的每一位取出来用 t 保存,倒序取出的先取得 A,再取 2。 (4 ) P

文档评论(0)

wumanduo11 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档