数制转换数据结构课程设计Word文档格式.doc

上传人:wj 文档编号:6974510 上传时间:2023-05-07 格式:DOC 页数:22 大小:364KB
下载 相关 举报
数制转换数据结构课程设计Word文档格式.doc_第1页
第1页 / 共22页
数制转换数据结构课程设计Word文档格式.doc_第2页
第2页 / 共22页
数制转换数据结构课程设计Word文档格式.doc_第3页
第3页 / 共22页
数制转换数据结构课程设计Word文档格式.doc_第4页
第4页 / 共22页
数制转换数据结构课程设计Word文档格式.doc_第5页
第5页 / 共22页
数制转换数据结构课程设计Word文档格式.doc_第6页
第6页 / 共22页
数制转换数据结构课程设计Word文档格式.doc_第7页
第7页 / 共22页
数制转换数据结构课程设计Word文档格式.doc_第8页
第8页 / 共22页
数制转换数据结构课程设计Word文档格式.doc_第9页
第9页 / 共22页
数制转换数据结构课程设计Word文档格式.doc_第10页
第10页 / 共22页
数制转换数据结构课程设计Word文档格式.doc_第11页
第11页 / 共22页
数制转换数据结构课程设计Word文档格式.doc_第12页
第12页 / 共22页
数制转换数据结构课程设计Word文档格式.doc_第13页
第13页 / 共22页
数制转换数据结构课程设计Word文档格式.doc_第14页
第14页 / 共22页
数制转换数据结构课程设计Word文档格式.doc_第15页
第15页 / 共22页
数制转换数据结构课程设计Word文档格式.doc_第16页
第16页 / 共22页
数制转换数据结构课程设计Word文档格式.doc_第17页
第17页 / 共22页
数制转换数据结构课程设计Word文档格式.doc_第18页
第18页 / 共22页
数制转换数据结构课程设计Word文档格式.doc_第19页
第19页 / 共22页
数制转换数据结构课程设计Word文档格式.doc_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

数制转换数据结构课程设计Word文档格式.doc

《数制转换数据结构课程设计Word文档格式.doc》由会员分享,可在线阅读,更多相关《数制转换数据结构课程设计Word文档格式.doc(22页珍藏版)》请在冰点文库上搜索。

数制转换数据结构课程设计Word文档格式.doc

B.用栈实现

栈具有后进先出的性质,具体实现方法和数组的方法有很大联系,不再过多解释。

4.调试分析

(1)构造栈的方法通过查阅书籍知道了。

(2)数组的递归调用查阅相关书籍了解了。

(3)为了让界面表达更清晰,多次调试完善了界面。

5.测试结果

下面是我的测试函数及运行结果:

A.数组测试结果

B栈实现测试结果

6.总结

通过《数据结构》课程设计,我了解到数据结构是计算机科学中一门综合性的专业基础课。

这次的课程设计使我对数组及栈有了初步的认识,虽然课程设计的不完善,但是在设计过程中我受益匪浅,通过查资料、网上搜索例子,让我学到了很多以前不知道的东西,提高我的分析和解决问题的能力,进一部掌握了应用系统设计的方法和不步骤,,也让我意识到自己所掌握的实在是太少了,只靠课本知识是不够的,应该多多上机调试,这样才能提高自己。

7.附源程序

A.数组实现

#include<

stdio.h>

math.h>

#defineN1000

inti,j,y,n,s;

intm,r,reminder;

intx;

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

D2M(intg,inth)//十进制数转换为其他进制数

{

intc[N];

i=0;

reminder=g%h;

g=g/h;

if(reminder>

9)

{

c[i]=reminder+55;

i++;

}

else

{

c[i]=reminder;

i++;

}

if(g>

0)

D2M(g,h);

for(j=i-1;

j>

=0;

j--)

if(c[j]>

=65)

printf("

%c"

c[j]);

else

%d"

return0;

}

M2D(inte)//二进制和八进制数转换为十进制数,并这转换为其他进制数

{

inta[N];

printf("

请输入%d进制位数:

"

m);

scanf("

&

n);

printf("

请输入%d进制的每位并使每位用空格隔开:

for(i=0;

i<

n;

i++)

scanf("

a[i]);

for(i=n-1;

i>

i--)

y+=(int)pow(e,j)*a[i];

//强制类型转换,以免造成数据丢失

j++;

}

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

"

);

y);

\n需要转换的进制M:

s);

请输出转换成%d进制的结果:

s);

D2M(y,s);

H2D(intf)//十六进制数转换为十进制数,并转换为其他进制数

intb[N];

scanf("

%x"

b[i]);

i--)

y+=(int)pow(f,j)*b[i];

//强制类型转换,以免造成数据丢失

j++;

voidmain()

请给定一个需转换的进制M(2or8or10or16):

m);

if(m==2||m==8)//二进制和八进制转换成十进制

M2D(m);

elseif(m==16)//十六进制转换成十进制

H2D(m);

elseif(m==10)//十进制转换成其它进制

{

printf("

请输入一个%d进制数:

scanf("

x);

请输入需要转换成的进制M(2or8or16):

r);

r);

D2M(x,r);

\n"

}

B.栈实现

#include"

stdio.h"

#include"

string.h"

math.h"

limits.h"

stdlib.h"

malloc.h"

#defineTRUE1

#defineOK1

#defineFALSE0

#defineERROR0

#defineINFEASIBLE-1

typedefintStatus;

typedefintSElement;

#defineSTACK_INIT_SIZE10

#defineSTACKINCREMENT2

typedefstructSqStack

{

SElement*base;

SElement*top;

intstacksize;

}SqStack;

intInitStack(SqStack*S)

(*S).base=(SElement*)malloc(STACK_INIT_SIZE*sizeof(SElement));

if(!

(*S).base)

exit(OVERFLOW);

S->

top=S->

base;

stacksize=STACK_INIT_SIZE;

returnOK;

intDestroyStack(SqStack*S)

free(S->

base);

S->

base=NULL;

top=NULL;

stacksize=0;

intClearStack(SqStack*S)

top=S->

intStackEmpty(SqStackS)//判断sqstack是否为空

if(S.top==S.base)

returnTRUE;

else

returnFALSE;

intStackLength(SqStackS)//返回s的元素个数,即栈的长度

returnS.top-S.base;

}

intGetTop(SqStackS,int*e)//若栈不为空,用e返回s的栈顶元素,返回ok

if(S.top>

S.base)

*e=*(S.top-1);

returnOK;

elsereturnERROR;

intPush(SqStack*S,inte)//插入元素e为新的栈顶元素

if(S->

top-S->

base>

=S->

stacksize)

base=(SElement*)realloc((*S).base,((*S).stacksize+STACKINCREMENT*

sizeof(SElement)));

if(!

S->

base)

exit(OVERFLOW);

base+S->

stacksize;

stacksize+=STACKINCREMENT;

*(S->

top)=e;

top++;

intPop(SqStack*S,int*e)

{/*若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;

否则返回ERROR*/

if((*S).top==(*S).base)

returnERROR;

*e=*--(*S).top;

returnOK;

intStackTraverse(SqStackS,int(*visit)(int))//

while(S.top>

visit(*S.base++);

printf("

voidconversion8(SqStacks)

{

unsignedn;

inte;

InitStack(&

//初始化栈

n(>

=0)="

scanf("

%u"

while(n)//当n不为0

Push(&

s,n%8);

n=n/8;

while(!

StackEmpty(s))//当栈不为空

Pop(&

s,&

e);

printf("

e);

voidconversion2(SqStacks)

unsignedn;

s,n%2);

n=n/2;

voidconversion16(SqStacks)

chard;

InitStack(&

switch(e)

case0:

e=0;

printf("

break;

case1:

e=1;

case2:

e=2;

case3:

e=3;

case4:

e=4;

case5:

e=5;

case6:

e=6;

case7:

e=7;

case8:

e=8;

case9:

e=9;

case10:

d='

a'

;

d);

case11:

b'

case12:

c'

case13:

d'

case14:

e'

case15:

f'

}

//选择

intchoose()

intd;

请选择你要进行的进制的转换:

如果是十进制转换为八进制请选择1\n"

如果是十进制转换为二进制请选择2\n"

如果是十进制转换为十六进制请选择3\n"

如果您想全部转换请选择9\n"

如果想退出请选择0\n"

d);

returnd;

intf=0;

SqStacks;

while(!

f)

switch(choose())

conversion8(s);

conversion2(s);

conversion16(s);

conversion2(s);

conversion16(s);

break;

f=-1;

default:

f=1;

system("

pause"

system("

cls"

}

指导教师评语:

程序成绩:

报告成绩:

综合成绩:

指导教师姓名:

批改日期:

年月日

22

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2