骑士游历骑士巡游C语言课程设计Word格式.docx

上传人:b****6 文档编号:18608561 上传时间:2022-12-29 格式:DOCX 页数:10 大小:86.71KB
下载 相关 举报
骑士游历骑士巡游C语言课程设计Word格式.docx_第1页
第1页 / 共10页
骑士游历骑士巡游C语言课程设计Word格式.docx_第2页
第2页 / 共10页
骑士游历骑士巡游C语言课程设计Word格式.docx_第3页
第3页 / 共10页
骑士游历骑士巡游C语言课程设计Word格式.docx_第4页
第4页 / 共10页
骑士游历骑士巡游C语言课程设计Word格式.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

骑士游历骑士巡游C语言课程设计Word格式.docx

《骑士游历骑士巡游C语言课程设计Word格式.docx》由会员分享,可在线阅读,更多相关《骑士游历骑士巡游C语言课程设计Word格式.docx(10页珍藏版)》请在冰豆网上搜索。

骑士游历骑士巡游C语言课程设计Word格式.docx

3.2系统测试与调试3

第4章源代码6

第5章课程设计心得9

第6章参考文献10

第1章课程设计内容及要求

运行程序设置一个8行8列的棋盘,在国际象棋的原则下,任意的输入一个存在的点,这个被视为骑士(马)的初始位置,让马通过这个点走完棋盘上的每一个点,并且不重复。

在对已经走过的路线里,采用标志矩阵进行记录。

标志矩阵的引入利用了数据的线性存储。

这个称为骑士游历算法。

本课程设计所采用的计算机语言是C语言,所使用的软件是使用比较普遍的MicrosoftVisualC++软件。

第2章功能的说明与实现

2.1程序功能模块

总共分为三个模块,分别是创建棋盘模块,位置设置模块和显示结果模块

1.创建棋盘模块:

此时我们使用矩阵设计一个模拟的棋盘。

其关键代码如下:

intf[11][11];

/*定义一个矩阵来模拟棋盘*/

intadjm[121][121];

/*于上述棋盘,标志矩阵*/

voidcreatadjm(void)/*创建标志矩阵函数声明*/

voidmark(int,int,int,int);

/*将标志矩阵相应位置置1*/

voidtravel(int,int);

/*巡游函数声明*/

intn,m;

/*定义矩阵大小及标志矩阵的大小*/

2.位置设置模块:

输入任意一个在8行8列棋盘中的一个点,其格式表示为:

mn(m表示行,n表示列)。

3.显示结果模块:

将起始位置设定好了,将在这个模拟棋盘中用数字显示马走过的每一步。

2.2程序功能模块图

总共有三个模块,如下图所示:

图2.2—1

第3章程序功能的具体实现

3.1主函数main()的执行流程

1.运行了主函数main()之后,马上执行了菜单,输入了行列数,在这里我们采用的是8行8列的棋盘

2.执行流程图,如下所示

是否

再是否

图3.1—1

3.2系统测试与调试

1.程序代码的输入和运行

新建C文件并输入代码到工作界面当中,仔细检查,运行代码,如下图所示,图3.2-1表示程序的输入和运行,图3.2-2表示运行出错:

图3.2—1

图3.2—2

2.程序代码的调试

经过老师和同学的讨论,自己上网查阅资料,修改了程序出错的地方,是由于自己的粗心,忘记写入标点符号,这才导致了错误,然后又仔细的检查了一遍程序,程序运行成功,没有错误了。

图3.2-3

3程序的显示结果

在命令窗口中输入了棋子的不同起点,运行都成功了。

如下图所示:

图3.2-4以(2,3)为起点

图3.2-5以(4,5)为起点

图3.2-6以(6,6)为起点

第4章源代码

#include<

stdio.h>

/*定义一个矩阵来模拟棋盘*/

/*标志矩阵,即对于上述棋盘,依次进行编号*/

voidcreatadjm(void);

/*创建标志矩阵函数声明*/

/***********主函数********************/

intmain()

{

inti,j,k,l;

printf("

Pleaseinputsizeofthechessboard:

"

);

/*输入矩阵的大小值*/

scanf("

%d"

&

n);

m=n*n;

creatadjm();

/*创建标志矩阵*/

puts("

Thesignmatrixis:

"

for(i=1;

i<

=m;

i++)/*打印输出标志矩阵*/

{

for(j=1;

j<

j++)

printf("

%2d"

adjm[i][j]);

\n"

}

Pleaseinputtheknight'

sposition(i,j):

/*输入骑士初始位置*/

%d%d"

i,&

j);

l=(i-1)*n+j;

/*骑士当前位置对应的标志矩阵的横坐标*/

while((i>

0)||(j>

0))/*对骑士位置的判断*/

=n;

i++)/*棋盘矩阵初始化*/

j++)

f[i][j]=0;

k=0;

/*所跳步数计数*/

travel(l,k);

/*从i,j出发开始巡游*/

Thetravelstepsare:

i++)/*巡游完成后输出巡游过程*/

{

%4d"

f[i][j]);

}

/*为再次巡游输入起始位置*/

\nPressanykeytoquit..."

getchar();

return0;

}

/***********创建标志矩阵子函数****************/

voidcreatadjm()

inti,j;

i++)/*巡游矩阵初始化*/

i++)/*标志矩阵初始化*/

adjm[i][j]=0;

i++)

if(f[i][j]==0)/*对所有符合条件的标志矩阵种元素置1*/

{

f[i][j]=1;

if((i+2<

=n)&

&

(j+1<

=n))mark(i,j,i+2,j+1);

(j-1>

=1))mark(i,j,i+2,j-1);

if((i-2>

=1)&

=n))mark(i,j,i-2,j+1);

=1))mark(i,j,i-2,j-1);

if((j+2<

(i+1<

=n))mark(i,j,i+1,j+2);

(i-1>

=1))mark(i,j,i-1,j+2);

if((j-2>

=n))mark(i,j,i+1,j-2);

=1))mark(i,j,i-1,j-2);

}

return;

/*****************巡游子函数****************/

voidtravel(intp,intr)

inti,j,q;

if(f[i][j]>

r)f[i][j]=0;

/*棋盘矩阵的置〉r时,置0*/

r=r+1;

/*跳步计数加1*/

i=((p-1)/n)+1;

/*还原棋盘矩阵的横坐标*/

j=((p-1)%n)+1;

/*还原棋盘矩阵的纵坐标*/

f[i][j]=r;

/*将f[i][j]做为第r跳步的目的地*/

for(q=1;

q<

q++)/*从所有可能的情况出发,开始进行试探式巡游*/

i=((q-1)/n)+1;

j=((q-1)%n)+1;

if((adjm[p][q]==1)&

(f[i][j]==0))

travel(q,r);

/*递归调用自身*/

/***********赋值子函数**********************/

voidmark(inti1,intj1,inti2,intj2)

adjm[(i1-1)*n+j1][(i2-1)*n+j2]=1;

adjm[(i2-1)*n+j2][(i1-1)*n+j1]=1;

第5章课程设计心得

通过两个星期对骑士游历这个程序的分析,我对C语言这门课程有了进一步的巩固,对我们现在学的《数据结构(C语言版)》的知识有了一个很好的回顾和掌握,我的在这个过程中我也知道自己能力的不足,在面对问题的时候更应该要请教老师和同学,自己也可以动手查阅资料。

我们不单是要提高自己的理论能力,还要多去实践,这样我们就能够更好的提高自己。

第6章参考文献

[1]谢希仁.计算机网络(第五版)[M].北京:

电子工业出版社,2008年2月

[2]胡小强计算机网络[M]北京:

北京邮电大学出版社2005年1月

[3]严蔚敏李冬梅吴伟民数据结构(C语言版)[M]人民邮电出版社,2011年2月

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

当前位置:首页 > PPT模板 > 商务科技

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

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