数据结构课程设计

发布 2022-10-05 02:01:28 阅读 4167

附件23

信息与电气工程学院。

课程设计说明书。

2012 /2013 学年第二学期)

课程名称 : 数据结构。

题目 : 数制转换。

专业班级 : 计算机1101班。

学生姓名。学号: 11021012x

指导教师。设计周数 : 17~19周。

设计成绩。年月日。

1、设计目的。

1.1、问题描述。

任意给定一个m进制的数x,转换为其它任意进制的数据。

1.2、基本要求。

、对给字一个m进制的数据x,求出此数x的10进制值(用md表示);

、实现对x向任意的一个非m进制的数的转换;

、至少用两种方法实现上述要求(用栈解决,用数组解决,其它方法解决)。

2、设计正文。

2.1、系统分析。

2.1.1、用数组实现该问题:

dtom()函数和mtod()函数是实现该问题的主要函数。 dtom()函数是实现十进制转换为其它进制的函数,它是将输入的十进制数x取首先对需要转换的进制m取余,然后再对其取整,接着通过递归调用dtom()函数依次将得到的整数部分依次先取余后取整,并将所得的余数依次存入一个数组中,然后逆向取出数组中的元素,即得到转换后的结果。而mtod()函数则是实现其他进制m转换为十进制,并将其转换为非m进制的数。

m进制转十进制则是从该m进制数的最后一位开始算,依次列为第…n位并分别乘以m的…n次方,将得到的次方相加便得到对应的十进制数,再调用dtom()函数将其转换为非m进制的数。2.1.

2用栈实现该问题:

同样是利用dtom()和mtod()两个函数实现。两个函数的思想同利用数组实现时相同。只是栈具有后进先出的性质,故其用pop()取数较数组的逆向取数方便些。

2.2、模块划分。

2.2.1、用数组实现该问题:

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

dtom(int g,int h)是实现十进制数转换为m进制数的函数;

mtod()是实现m(仅指二进制数和八进制数)进制数转换为十进制数的函数,并在其中调用d2m(int g,int h)实现向非m进制数的转换;

htod(int f)是实现十六进制数转换为十进制数的函数,并在其中调用d2m(int g,int h)实现向非十六进制数的转换;

void main()是主函数,功能是给出测试的数据,并在特定条件下调用d2m()函数和m2d()函数。

2.2.2、用栈实现该问题:

sqstack定义栈,说明base为栈底指针,top为栈顶指针,stacksize为栈容量;

int initstack(sqstack &s)到int destroystack(sqstack &s)六大模块分别表示构造一个空栈、用e表示栈元素、插入元素、删除元素、判断栈是否为空以及摧毁栈;

sqstack s是指定义栈s;

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

mtod()的功能是m进制转换为十进制的函数;

void main()是主函数。其功能是输入需要测试的数据以及需要转换的进制,并在特定情形下调用dtom()函数和mtod()函数,而且实现m进制数向任意非m进制数的转换。

2.3流程图。

2.3.1数组流程图。

2.3.2、栈流程图。

2.4、源程序。

源程序有两个,是用数组实现该问题的程序,而是用栈实现该问题的程序。

文件。#include<>

#include<>

#include<>

#include<>

#define n 1000

/ 以下为dtom(int g,int h)是实现十进制数转换为m进制数的函数,dtom(int g,int h)

int c[n];

int i=0;int j;

int reminder;

reminder=g%h;

g=g/h;

if(reminder>9)

elseif(g>0)

dtom(g,h);

for(j=i-1;j>=0;j--)

if(c[j]>=65)

printf("%c",c[j]);

elseprintf("%d",c[j]);

/以下mtod()是实现m(仅指二进制数和八进制数)进制数转换为十进制数的函数,并在其中调用d2m(int g,int h)实现向非m进制数的转换。

mtod(int e二进制和八进制数转换为十进制数,并这转换为其他进制数。

int n,i,y=0,j,s;

int a[n];

printf("请输入%d进制位数:",e);

scanf("%d",&n);

j=0;printf("请输入%d进制的每位并使每位用空格隔开:",e);

for(i=n-1;i>=0;i--)

scanf("%d",&a[i]);

for(i=0;i

printf("所得的10进制的结果:%d ",y);

printf("需要转换的进制m:")

scanf("%d",&s);

printf("请输出转换成%d进制的结果:",s);

dtom(y,s);

return 0;

/以下为htod(int f)是实现十六进制数转换为十进制数的函数,并在其中调用d2m(int g,int h)实现向非十六进制数的转换。

htod(int f十六进制数转换为十进制数,并转换为其他进制数。

int n,j=0,y=0,i,s;

int b[n];

printf("请输入%d进制位数:",f);

scanf("%d",&n);

printf("请输入%d进制的每位并使每位用空格隔开:",f);

for(i=0;i scanf("%x",&b[i]);

for(i=n-1;i>=0;i--)

printf("请输出所得的10进制的结果: "

printf("%d",y);

printf("需要转换的进制m:")

scanf("%d",&s);

printf("请输出转换成%d进制的结果:",s);

dtom(y,s);

return 0;

/ void main()是主函数,功能是给出测试的数据,并在特定条件下调用d2m()函数和m2d()函数。

void main()

int m,r,x,t;

for(;;

case 2: exit(0);

default:

printf("");

文件。#include<>

#include<>

#include<>

#include<>

#define stack_init_size 100 //存储空间初始分配量。

#define stackincrement 10 //存储空间分配增量。

int e,m,x,s,t; /x为要转换的十进制数,e 为临时用的的int型变量。

int r,y,i,n;

typedef struct

int *base栈底。

int *top栈顶。

数据结构课程设计

课程设计说明书 题目哈夫曼编码问题的设计和实现。课程名称数据结构课程设计。院 系 部 中心。专业。班级。学生姓名。学号。设计地点。指导教师。设计起止时间 2008 年6月 2日至 2008 年 6月 6 日。目录。1 问题描述 2 1.1 题目内容 2 1.2 基本要求 2 1.3 测试数据 2 2...

数据结构课程设计

数据结构 课程设计。实验报告。学院 信息工程学院。班级 姓名 学号 指导老师 题目2 一元多项式的计算。1 实验目的。1 掌握链表的灵活运用 2 学习链表初始化和建立一个新的链表 3 知道怎样去实现链表删除结点操作与插入结点 4 理解链表的基本操作 包括数据域数据的相加 并能灵活运用。2 实验内容。...

数据结构课程设计

班级 信计 1102 姓名 李娜娜。学号 1108060209 设计日期 2013.07.15 西安科技大学计算机学院 1.实验题目 编制一个演绎扫雷游戏的程序。2.问题描述。做一个n x m的扫雷游戏,每个方格包含两种状态 关闭 closed 和打开 opened 初始化时每个方格都是关闭的,一个...