骑士游历、骑士巡游(C语言)课程设计

上传人:第** 文档编号:35735313 上传时间:2018-03-19 格式:PDF 页数:13 大小:235.42KB
返回 下载 相关 举报
骑士游历、骑士巡游(C语言)课程设计_第1页
第1页 / 共13页
骑士游历、骑士巡游(C语言)课程设计_第2页
第2页 / 共13页
骑士游历、骑士巡游(C语言)课程设计_第3页
第3页 / 共13页
骑士游历、骑士巡游(C语言)课程设计_第4页
第4页 / 共13页
骑士游历、骑士巡游(C语言)课程设计_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《骑士游历、骑士巡游(C语言)课程设计》由会员分享,可在线阅读,更多相关《骑士游历、骑士巡游(C语言)课程设计(13页珍藏版)》请在金锄头文库上搜索。

1、存档资料成绩:华东交通大学理工学院课 程 设 计 报 告 书所属课程名称数据结构题目骑士游历分院专业班级学号学生姓名黄锦辉指导教师2012 年6 月 15 日目 录第 1 章 课程设计内容及要求 . 1第 2 章 功能的说明与实现. 2 2.1 程序功能模块 . 22.2 程序功能模块图 . 2第 3 章 程序功能的具体实现 . 3 3.1 主函数 main() 的执行流程 . 33.2 系统测试与调试 . 3第 4 章 源代码 . 6 第 5 章 课程设计心得. 9 第 6 章 参考文献 . 10 华东交通大学理工学院第 1 页第 1 章课程设计内容及要求运行程序设置一个8 行 8 列的棋盘

2、,在国际象棋的原则下, 任意的输入一个存在的点,这个被视为骑士(马)的初始位置, 让马通过这个点走完棋盘上的每一个点,并且不重复。在对已经 走过的路线里,采用标志矩阵进行记录。标志矩阵的引入利用了 数据的线性存储。这个称为骑士游历算法。 本课程设计所采用的计算机语言是C 语言,所使用的软件 是使用比较普遍的Microsoft Visual C+ 软件。华东交通大学理工学院第 2 页第 2 章功能的说明与实现2.1 程序功能模块总共分为三个模块,分别是创建棋盘模块,位置设置模块和 显示结果模块1.创建棋盘模块:此时我们使用矩阵设计一个模拟的棋盘。 其关键代码如下: int f1111 ; /*定

3、义一个矩阵来模拟棋盘*/ int adjm121121; /*于上述棋盘,标志矩阵 */ void creatadjm(void) /*创建标志矩阵函数声明 */ void mark(int,int,int,int); /*将标志矩阵相应位置置1*/ void travel(int,int); /*巡游函数声明 */ int n,m; /*定义矩阵大小及标志矩阵的大小*/ 2.位置设置模块:输入任意一个在 8 行 8 列棋盘中的一个点, 其格式表示为: m n (m表示行, n 表示列) 。3.显示结果模块:将起始位置设定好了,将在这个模拟棋盘 中用数字显示马走过的每一步。2.2 程序功能模块

4、图总共有三个模块,如下图所示:图 2.2 1 骑士游历创建棋盘显示结果位置设置创建矩阵进行游历显示结果华东交通大学理工学院第 3 页第 3 章程序功能的具体实现3.1 主函数 main()的执行流程1. 运行了主函数 main() 之后,马上执行了菜单,输入了行列数, 在这里我们采用的是8 行 8 列的棋盘 2. 执行流程图,如下所示图 3.1 13.2 系统测试与调试1. 程序代码的输入和运行新建 C文件并输入代码到工作界面当中,仔细检查,运行 代码,如下图所示,图3.2-1 表示程序的输入和运行,图3.2-2 表示运行出错:是否再是否次运行输 入 模 拟 棋 盘 行 列判断棋盘输入起点位置

5、判断棋子输出结果结束开始华东交通大学理工学院第 4 页图 3.2 1 图 3.2 2 2. 程序代码的调试经过老师和同学的讨论,自己上网查阅资料,修改了程序出错 的地方,是由于自己的粗心,忘记写入标点符号,这才导致了错 误,然后又仔细的检查了一遍程序,程序运行成功, 没有错误了。图 3.2-3 华东交通大学理工学院第 5 页3 程序的显示结果在命令窗口中输入了棋子的不同起点,运行都成功了。如下图所示:图 3.2-4 以( 2,3)为起点图 3.2-5 以( 4,5)为起点图 3.2-6 以( 6,6)为起点华东交通大学理工学院第 6 页第 4 章源代码#include int f1111 ;

6、/*定义一个矩阵来模拟棋盘*/ int adjm121121;/*标志矩阵,即对于上述棋盘,依次进行编号*/ void creatadjm(void); /* 创建标志矩阵函数声明*/ void mark(int,int,int,int); /*将标志矩阵相应位置置1*/ void travel(int,int); /*巡游函数声明*/ int n,m; /* 定义矩阵大小及标志矩阵的大小*/ /*主函数 */ int main() int i,j,k,l; printf(“Please input size of the chessboard: “); /*输入矩阵的大小值*/ scanf(

7、“%d“, m=n*n; creatadjm(); /*创建标志矩阵*/ puts(“The sign matrix is:“); for(i=1;i0)|(j0) /*对骑士位置的判断*/ for(i=1;i=1) mark(i,j,i+2,j-1); 华东交通大学理工学院第 8 页if(i-2=1) if(j+2=1) mark(i,j,i-1,j+2); if(j-2=1) return; /*巡游子函数 */ void travel(int p,int r) int i,j,q; for(i=1;ir) fij=0; /*棋盘矩阵的置r时,置 0*/ r=r+1; /* 跳步计数加 1

8、*/ i=(p-1)/n)+1; /*还原棋盘矩阵的横坐标*/ j=(p-1)%n)+1; /* 还原棋盘矩阵的纵坐标*/ fij=r; /*将fij 做为第 r跳步的目的地 */ for(q=1;q=m;q+) /*从所有可能的情况出发,开始进行试探式巡游*/ i=(q-1)/n)+1; j=(q-1)%n)+1; if(adjmpq=1) /*递归调用自身 */ return; /*赋值子函数 */ void mark(int i1,int j1,int i2,int j2) adjm(i1-1)*n+j1(i2-1)*n+j2=1; adjm(i2-1)*n+j2(i1-1)*n+j1=

9、1; return; 华东交通大学理工学院第 9 页第 5 章课程设计心得通过两个星期对骑士游历这个程序的分析,我对C语言这门 课程有了进一步的巩固, 对我们现在学的 数据结构(C语言版) 的知识有了一个很好的回顾和掌握,我的在这个过程中我也知道 自己能力的不足,在面对问题的时候更应该要请教老师和同学, 自己也可以动手查阅资料。我们不单是要提高自己的理论能力, 还要多去实践,这样我们就能够更好的提高自己。华东交通大学理工学院第 10 页第 6 章参考文献1 谢希仁 . 计算机网络(第五版) M. 北京:电子工业出版社,2008 年 2 月2 胡小强计算机网络 M 北京:北京邮电大学出版社2005 年 1 月3 严蔚敏李冬梅吴伟民数据结构( C语言版) M 人民邮电出版社,2011 年 2 月

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号