《数据结构》
课程设计报告书。
题目:数制转换。
系别:计算机科学与应用系
学号。学生姓名。
指导教师。完成日期:2013—6—1
数制转换。1. 需求分析。
任意给定一个m进制的数x ,实现如下要求。
1)求出此数x的10进制值(用md表示)
2)实现对x向任意的一个非m进制的数的转换。
3)至少用两种或两种以上的方法实现上述要求(用栈解决,用数组解决,其它方法解决)。
2. 概要设计。
程序流程可以用以下流程图来刻画:
a用数组实现b用栈实现。
3. 详细设计。
a.用数组实现该问题。
d2m()函数和m2d()函数是实现该问题的主要函数。d2m()函数是实现十进制转换为其他进制的函数,它是将输入的十进制数x首先对需要转换的进制m取余,然后在对其取整,接着通过递归调用d2m()函数一次将得到的整数部分一次先取余后取整,并将所得的余数依次存入下一数组,然后逆向去除数组中的元素,即得到转换后的结果。而m2d()函数是实现其他进制m转换为十进制,并将其转换为非m进制。
m进制转十进制则是从该m 进制数的最后一位开始运算,依次列为第、…n位并分别乘以m的、…n次方,将得到的次方相加便得到对应的十进制数,再调用d2m()函数将其转换为非m进制的数。
b.用栈实现。
栈具有后进先出的性质,具体实现方法和数组的方法有很大联系,不再过多解释。
4. 调试分析。
1) 构造栈的方法通过查阅书籍知道了。
2) 数组的递归调用查阅相关书籍了解了。
3) 为了让界面表达更清晰,多次调试完善了界面。
5. 测试结果。
下面是我的测试函数及运行结果:
a.数组测试结果。
b栈实现测试结果。
6. 总结。
通过《数据结构》课程设计,我了解到数据结构是计算机科学中一门综合性的专业基础课。这次的课程设计使我对数组及栈有了初步的认识,虽然课程设计的不完善,但是在设计过程中我受益匪浅,通过查资料、网上搜索例子,让我学到了很多以前不知道的东西,提高我的分析和解决问题的能力,进一部掌握了应用系统设计的方法和不步骤,,也让我意识到自己所掌握的实在是太少了,只靠课本知识是不够的,应该多多上机调试,这样才能提高自己。
7. 附源程序。
a. 数组实现。
#include<>
#include<>
#define n 1000
int i,j,y,n,s;
int m,r,reminder;
int x全局变量默认初始化为0,不必再赋0了。
d2m(int g,int h) /十进制数转换为其他进制数
else
if(g>0)
d2m(g,h);
for(j=i-1;j>=0;j--)
if(c[j]>=65)
printf("%c",c[j]);
else printf("%d",c[j]);
return 0;
m2d(int e二进制和八进制数转换为十进制数,并这转换为其他进制数
int a[n];
printf("请输入%d进制位数:",m);
scanf("%d",&n);
printf("请输入%d进制的每位并使每位用空格隔开:",m);
for(i=0;i scanf("%d",&a[i]);
for(i=n-1;i>=0;i--)
printf("请输出所得的10进制的结果: "
printf("%d",y);
printf("需要转换的进制m:")
scanf("%d",&s);
printf("请输出转换成%d进制的结果:",s);
d2m(y,s);
return 0;
h2d(int f十六进制数转换为十进制数,并转换为其他进制数
int b[n];
printf("请输入%d进制位数:",m);
scanf("%d",&n);
printf("请输入%d进制的每位并使每位用空格隔开:",m);
for(i=0;i scanf("%x",&b[i]);
for(i=n-1;i>=0;i--)
y+=(int)pow(f,j)*b[i强制类型转换,以免造成数据丢失 j++;
printf("请输出所得的10进制的结果: "
printf("%d",y);
printf("需要转换的进制m:")
scanf("%d",&s);
printf("请输出转换成%d进制的结果:",s);
d2m(y,s);
return 0;
void main()
printf("请给定一个需转换的进制m(2or8or10or16):"
scanf("%d",&m);
if(m==2||m==8二进制和八进制转换成十进制
m2d(m);
else if(m==16十六进制转换成十进制
h2d(m);
else if(m==10十进制转换成其它进制
printf("");
b. 栈实现。
#include ""
#include ""
#include ""
#include ""
#include ""
#include ""
#define true 1
#define ok 1
#define false 0
#define error 0
#define infeasible -1
typedef int status;
typedef int selement;
#define stack_init_size 10
#define stackincrement 2
typedef struct sqstack
selement *base ; selement *top ;
int stacksize ;
sqstack;
int initstack (sqstack *s)
(*s).base = selement *)malloc(stack_init_size * sizeof (selement))
if (!s).base)
exit (overflow);
s->top=s->base;
s->stacksize= stack_init_size;
return ok;
int destroystack (sqstack *s)
free (s->base);
s->base = null;
s->top = null;
s->stacksize = 0;
return ok;
int clearstack(sqstack *s)
s->top = s->base;
return ok;
int stackempty(sqstack s)//判断sqstack 是否为空
if ( return true;
else return false;
int stacklength (sqstack s)//返回s的元素个数,即栈的长度。
return ;
int gettop(sqstack s,int *e)//若栈不为空,用e返回s的栈顶元素,返回ok
if (
else return error;
int push(sqstack *s,int e)//插入元素e为新的栈顶元素
if (s->top - s->base >=s->stacksize)
*(s->top) =e;
s->top ++
return ok;
int pop(sqstack *s,int *e)
int stacktr**erse (sqstack s ,int (*visit)(int ))
while (
数据结构课程设计报告
东莞理工学院城市学院。题目 二叉排序树 专业 计算机科学与技术 本 年级 2010级计算机科学与技术专业 1 班。个人姓名 何振江。指导教师 张娟老师 时间 2010至2011第二学期第18周 地点 实验楼615机房 东莞理工学院城市学院计算机与信息科学系制。2011年 6月。实习报告的内容。一 问...
数据结构课程设计报告
设计一个校园导游程序,为来访的客人提供信息查询服务。1 设计学校的校园平面图。选取若干个有代表性的景点抽象成一个无向带权图 无向网 以图中顶点表示校内各景点,边上的权值表示两景点之间的距离。2 存放景点代号 名称 简介等信息供用户查询。3 为来访客人提供图中任意景点相关信息的查询。4 为来访客人提供...
数据结构课程设计报告
河北科技大学。课程设计报告。学生姓名学号。专业班级。课程名称数据结构。学年学期 2 012 2 013学年第 2 学期指导教师 黄春茹。2 0 13年 6 月。课程设计成绩评定表。一 数据结构课程设计目标。二 问题描述。三 需求分析。四 概要设计。五 详细设计。六 软件说明书 给出软件如何使用,使用...