数制转换数据结构课程设计报告

发布 2022-10-05 20:22:28 阅读 6342

《数据结构》

课程设计报告书。

题目:数制转换。

系别:计算机科学与应用系

学号。学生姓名。

指导教师。完成日期: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 月。课程设计成绩评定表。一 数据结构课程设计目标。二 问题描述。三 需求分析。四 概要设计。五 详细设计。六 软件说明书 给出软件如何使用,使用...