数制转换问题(完整)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构课程设计

题目名称:数制转换问题

课程名称:数据结构

学生姓名:

学号:

学院名称:

指导教师:

目录

一.需求分析………………………………………………………二.概要设计………………………………………………………三.详细设计………………………………………………………四.调试测试………………………………………………………五.总结……………………………………………………………

一.需求分析

应用环境设定:生活中我们需要将M进制的数转换为我们所需要

的进制,从键盘任意输入一个M进制的数,对其

进行转换成其他三种进制的数,然后再从电脑中

显示出来,最终得到我们的结果。

用户界面:命令行界面,根据自己的要求,对界面的提示进行操作,正确输入我们需要的数据。

输入方式:首先输入将转换的进制数,回车确认;然后输入确定的数据,回车确认;接着选择要转换为的进制数,回车确

认。

输出方式:界面直接输出,启动程序后,按照界面提示,输入数据,直接回车确认,显示屏即输出我们的数据结果。

数据储存方式:全部在内存存放,不使用硬盘上的文件或其他数据

源,程序执行过程中和结束后不保存数据。

程序功能:1.根据界面提示输入M进制数据。

2.对任意M进制数据实行非M进制的转换。

二.概要设计

在此说明数据结构设计和关键的算法设计思想

1.用数组实现该问题

D2M()函数和M2D()函数是实现该问题的主要函数。D2M()函数是实现十进制转换为其它进制的函数,它是将输入的十进制数x取首先对需要转换的进制M取余,然后再对其取整,接着通过递归调用D2M()函数依次将得到的整数部分依次先取余后取整,并将所得的余

数依次存入一个数组中,然后逆向取出数组中的元素,即得到转换后的结果。而M2D()函数则是实现其他进制M转换为十进制,并将其转换为非M进制的数。M进制转十进制则是从该M进制数的最后一位开始算,依次列为第0、1、2…n位并分别乘以M的0、1、2…n次方,将得到的次方相加便得到对应的十进制数,再调用D2M()函数将其转换为非M进制的数。

⑴i,j,y,n,s,m,r,reminder,x是定义的全局变量,初始值都为0;

⑵D2M(int g,int h)是实现十进制数转换为M进制数的函数;

⑶M2D(int e)是实现M(仅指二进制数和八进制数)进制数转

换为十进制数的函数,并在其中调用D2M(int g,int h)

实现向非M进制数的转换;

⑷H2D(int f)是实现十六进制数转换为十进制数的函数,并

在其中调用D2M(int g,int h)实现向非十六进制数的转

换;

⑸void main()是主函数,功能是给出测试的数据,并在特

定条件下调用D2M()函数和M2D()函数。

使用简单一维数组int a[N],int b[N],int c[N]。

2.用栈实现该问题

同样是利用D2M()和M2D()两个函数实现。两个函数的思想同

利用数组实现时相同。只是栈具有后进先出的性质,故其用Pop()取数较数组的逆向取数方便些。

⑴SqStack定义栈,说明base为栈底指针,top为栈顶指针,

stacksize为栈容量;

⑵int InitStack(SqStack &S)到int DestroyStack(SqStack &S)

六大模块分别表示构造一个空栈、用e表示栈元素、插

入元素、删除元素、判断栈是否为空以及摧毁栈;

⑶SqStack S是指定义栈S;

⑷D2M(int a,int b)的功能是将十进制数转换成M进制的函数;

⑸M2D()的功能是M进制转换为十进制的函数;

⑹void main()是主函数。其功能是输入需要测试的数据以及需

要转换的进制,并在特定情形下调用D2M()函数和M2D()

函数,而且实现M进制数向任意非M进制数的转换。

数据类型定义如下:

typedef struct{

int *base; 栈底

int *top; 栈顶

int stacksize;栈容量

}SqStack;

int InitStack(SqStack &S)构造一个个空栈

int GetTop(SqStack S, int &e) 若栈不为空,则用e返回S的栈顶元素,并返回0,否则返回1

int Push(SqStack &S , int e) 插入元素e为新的栈顶元素

int Pop(SqStack &S, int &e) 若栈不空,则删除S的栈顶元素,用e返回其值,并返回0,否则返回1。

1.程序流程图

2.程序源代码

A.用数组实现(文件名shuzu.cpp)

#include

#include

#define N 1000

int i,j,y,n,s;

int m,r,reminder;

int x; //全局变量默认初始化为0,不必再赋0了

D2M(int g,int h) //十进制数转换为其他进制数

{

int c[N];

i=0;

reminder=g%h;

g=g/h;

if(reminder>9)

{

c[i]=reminder+55;

i++;

}

else

相关文档
最新文档