附件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 初始化时每个方格都是关闭的,一个...