数据结构课程设计报告进制转换Word文件下载.doc

上传人:b****1 文档编号:13114839 上传时间:2022-10-05 格式:DOC 页数:11 大小:52KB
下载 相关 举报
数据结构课程设计报告进制转换Word文件下载.doc_第1页
第1页 / 共11页
数据结构课程设计报告进制转换Word文件下载.doc_第2页
第2页 / 共11页
数据结构课程设计报告进制转换Word文件下载.doc_第3页
第3页 / 共11页
数据结构课程设计报告进制转换Word文件下载.doc_第4页
第4页 / 共11页
数据结构课程设计报告进制转换Word文件下载.doc_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

数据结构课程设计报告进制转换Word文件下载.doc

《数据结构课程设计报告进制转换Word文件下载.doc》由会员分享,可在线阅读,更多相关《数据结构课程设计报告进制转换Word文件下载.doc(11页珍藏版)》请在冰豆网上搜索。

数据结构课程设计报告进制转换Word文件下载.doc

硬件:

普通个人pc机

VC++6.0编程软件

三、解决办法:

1、用数组实现该问题:

  ten_else()函数是实现十进制转换为其它进制的函数,先设置一个while循环,当十进制数g等于零时停止,再将输入的十进制数x取首先对需要转换的进制M取余,然后再对其取整,并将所得的余数依次存入一个数组中,然后逆向取出数组中的元素,即得到转换后的结果。

将其他进制M转换为十进制,并将其转换为非M进制数是在主函数中实现的。

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

实际上十进制起到了一个桥梁作用。

2、用栈实现该问题:

  与数组方法核心思想相同,stack定义栈,初始化一个空栈,然后判断是否为空,接着是去栈顶元素(用z表示栈顶元素),数据入栈,出栈的操作。

栈具有后进先出的性质,故其用s.pop()取数较数组的逆向取数较为方便,体现了栈的优越性。

四、设计和编码的回顾讨论和分析

(1)函数ten_else()的作用体现在将任意10进制数转换为非10进制数,程序能实现1~16进制的相互转换。

在10进制以上的数需要用字母表示,由此设计了switch函数,当出现余数大与10的情况可以调用相应的字母。

考虑到最终结果是所求余数的倒序,添加新的整型变量j,通过一个for循环实现倒序。

(2)编程初期设计了else_ten函数,后几经修改将其融入main函数中较为直观。

(3)当输入10进制以下的数向10进制转换时候较为简单,程序中设计char型数组s[maxnum]来统计所输入数据的位数,不需要用户输入。

在求10进制的时候通过for循环求一个累和即可。

(4)当输入10进制以上的数设计字母较为复杂,通过对ASCⅡ表的理解设计程序。

(5)在用栈法实现非10进制向10进制转换的时候遇到了些麻烦,当输入8A的时候程序将8当成字符类型,将其编译为数字56,导致最终转换结果出现错误。

于是通过查阅ASCⅡ表对程序做出了修正,设计了条件语句if(z<

=57)z-=48;

if(z>

=65){z-=65;

z+=10;

}

五、程序框图

开始

输入要输入数的进制M及输入要转换的数

先转换成十进制数X

输出转换结果MD

输入要转换的进制类型

转换后的10进制取余

余数进栈(存入数组)

商为0

输出栈(数组)及转换结果

六、经验和体会

(1)我们在写程序的时候要多角度考虑问题,比如题目中要求栈法与数组方法同时去实现进制转换问题。

在编译过程中我们可以将特殊的问题逐渐的化为一般问题,比如10进制转换到16进制是,我举的例子是200转换为C8。

(2)通过此次课程设计的考验,让我们回顾了算法与数据结构这门课的主要容。

掌握了如何分别用数组和栈来实现数据存储与转换,加深了对栈的掌握和操作,以及栈先进后出的特点。

(3)在程序的调试初期,我们遇到了许多问题,暴露了对编译软件不熟悉的弊端,如设置断点和单步调试,让我们意识到要想学好编程,就得多上机调试。

一个星期时间自己用vc++实现了进制转换问题,收获很时在编写代码过程中也出现了很多的问题,最大的问题就是对程序设计框架结构的不了解,在实现代码与功能的连接时经常会出现各种不同的错误,在实现一些功能时系统常常会报错,许多错误不知从哪修改。

课程设计中,回顾了很多以前的东西,收获很大。

(4)每一次的课程设计,都是让我们对原有的知识从了解表面到深入本质,从个体学习到整体把握的跳跃,对新知识的汲取,更是把课本的知识应用到实际中,让我们了解了我们的学习有什么用,能够解决什么样的问题,增加了自信和学习的动力。

总之,我们收获匪浅首先由衷感老师提供这样一个锻炼自己的机会,感受到学来的知识不只是用来完成试卷的。

一向惯于独立思考的自己学会了积极的同同学、朋友交流,取长补短,共同进步。

课程设计使自己发现考试并不是最重要,最重要的是能运用所学的知识。

在整个课程设计的学习过程中,不再是用学到的知识解题,而是在实际运用时遇到什么学什么,重在把知识应用于实际。

五、附录

代码框架

//实现1~16进制之间的相互转化(数组方法)

#include<

iostream.h>

math.h>

//#include<

stdio.h>

#defineN100

#define max_num10

inty,n,s;

intm,r,x;

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

{

intc[N],mod;

inti=0,j;

while(g!

=0)

{

mod=g%h;

g=g/h;

c[i]=mod;

i++;

}

for(j=i-1;

j>

=0;

j--)

switch(c[j])

case10:

cout<

<

"

A"

;

break;

case11:

B"

case12:

C"

case13:

D"

case14:

E"

case15:

F"

default:

c[j];

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

if(c[j]<

=9)

cout<

else

printf("

%c"

('

A'

+(c[j]-10)));

//cout<

('

+(c[j]-9));

*/

voidmain()

cout<

请输入任意进制M:

cin>

>

m;

if(m<

10)//2~9进制转换成10进制

chars[max_num];

int k,z=0,j=0;

//z存储十进制数,j表示输入m进制数的位数。

for(inti=0;

i<

max_num;

i++)

s[i]='

u'

cout<

请输入一个"

m<

进制数:

cin>

s;

for(i=1;

i++)

if(s[i]!

='

)j++;

k=j;

//保存输入位数

for(i=0;

j;

i++)

z=z+(s[i]-'

0'

)*(pow(m,--k));

转换后的10进制数MD为:

z<

endl;

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

r;

输出转换成"

r<

进制的结果:

ten_else(z,r);

elseif(m<

=16&

&

m>

=11)//11~16进制转换成10进制

//z存储十进制数,j表示输入16进制数的位数。

{

if(s[i]>

s[i]<

F'

z=z+(s[i]-'

+10)*(pow(m,--k));

if(s[i]>

a'

f'

9'

}

转换后的10进制数为:

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

intx;

请输入一个10进制数:

x;

if(r<

=10)

{

ten_else(x,r);

}

}

//实现1~16进制之间的相互转化(堆栈方法)

#include<

enumerror_code{success,overflow,underflow};

constmaxlen=100;

inta,n,h;

classstack

public:

stack();

boolempty()const;

boolfull()const;

error_codeget_top(int&

x)const;

error_codepush(intx);

error_codepop();

intseesize(){returncount;

private:

intcount;

intdata[maxlen];

};

//初始化链栈

stack:

:

stack()

count=0;

boolstack:

empty()const//判断栈是否为空

if(count==0)returntrue;

return

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

当前位置:首页 > 人文社科 > 教育学心理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1