- 1、本文档共15页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
最近下载
- 基于核心素养小学数学计算教学研究.doc VIP
- 2024江西赣州市国资委招聘出资监管企业内设监事会人员21人【综合基础知识500题】高频考点模拟试题及参考答案解析.docx VIP
- Shimano禧玛诺渔具 电动轮BeastMaster 2000EJ(04163)说明书.pdf
- 卫生院科室设置及职能范文.docx
- 北京市大兴区2023-2024学年九年级上学期期中数学试题.docx
- 铝合金门窗节能专项施工方案.doc
- 经典成语故事郑人买履.ppt VIP
- 基于核心素养小学数学计算教学研究.doc VIP
- 2024-2030年中国化工仓储行业市场发展趋势与前景展望战略分析报告.docx
- WST 356-2024 参考物质互换性评估指南.pdf
文档评论(0)