版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、-作者xxxx-日期xxxx骑士游历、骑士巡游(C语言)课程设计【精品文档】存档资料 成绩: 华东交通大学理工学院课 程 设 计 报 告 书所属课程名称 数据结构 题 目 骑士游历 分 院 专业班级 学号 学生姓名 黄锦辉 指导教师 2012 年 6月 15 日 目 录第1章 课程设计内容及要求1第2章 功能的说明与实现22.1 程序功能模块22.2 程序功能模块图2第3章 程序功能的具体实现33.1 主函数main()的执行流程33.2 系统测试与调试3第4章 源代码6第5章 课程设计心得9第6章 参考文献10【精品文档】第1 章 课程设计内容及要求 运行程序设置一个8行8列的棋盘,在国际象
2、棋的原则下,任意的输入一个存在的点,这个被视为骑士(马)的初始位置,让马通过这个点走完棋盘上的每一个点,并且不重复。在对已经走过的路线里,采用标志矩阵进行记录。标志矩阵的引入利用了数据的线性存储。这个称为骑士游历算法。 本课程设计所采用的计算机语言是C语言,所使用的软件是使用比较普遍的Microsoft Visual C+ 软件。第2章 功能的说明与实现 2.1 程序功能模块 总共分为三个模块,分别是创建棋盘模块,位置设置模块和显示结果模块 1.创建棋盘模块:此时我们使用矩阵设计一个模拟的棋盘。其关键代码如下:int f1111 ; /*定义一个矩阵来模拟棋盘*/int adjm121121;
3、 /*于上述棋盘,标志矩阵*/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、1第3章 程序功能的具体实现3.1 主函数main()的执行流程1.运行了主函数main()之后,马上执行了菜单,输入了行列数, 在这里我们采用的是8行8列的棋盘2.执行流程图,如下所示 是 否 再 是 否 次 运 行 输入模拟棋盘行列数判断棋盘输入起点位置判断棋子输出结果结束开始13.2 系统测试与调试 新建C文件并输入代码到工作界面当中,仔细检查,运行代码,如下图所示,图3.2-1表示程序的输入和运行,图3.2-2表示运行出错:12 经过老师和同学的讨论,自己上网查阅资料,修改了程序出错的地方,是由于自己的粗心,忘记写入标点符号,这才导致了错误,然后又仔细的检查了一遍程序,程序运行成功,没
5、有错误了。3 程序的显示结果 在命令窗口中输入了棋子的不同起点,运行都成功了。如下图所示:图3.2-4 以(2,3)为起点图3.2-5 以(4,5)为起点图3.2-6 以(6,6)为起点第4章 源代码#include <stdio.h>int f1111 ; /*定义一个矩阵来模拟棋盘*/int adjm121121;/*标志矩阵,即对于上述棋盘,依次进行编号*/void creatadjm(void); /*创建标志矩阵函数声明*/void mark(int,int,int,int); /*将标志矩阵相应位置置1*/void travel(int,int); /*巡游函数声明*/
6、int n,m; /*定义矩阵大小及标志矩阵的大小*/*主函数*/int main() int i,j,k,l; printf("Please input size of the chessboard: "); /*输入矩阵的大小值*/scanf("%d",&n); m=n*n; creatadjm(); /*创建标志矩阵*/puts("The sign matrix is:"); for(i=1;i<=m;i+) /*打印输出标志矩阵*/ for(j=1;j<=m;j+) printf("%2d&quo
7、t;,adjmij); printf("n"); printf("Please input the knight's position (i,j): "); /*输入骑士初始位置*/ scanf("%d %d",&i,&j); l=(i-1)*n+j; /*骑士当前位置对应的标志矩阵的横坐标*/ while (i>0)|(j>0) /*对骑士位置的判断*/ for(i=1;i<=n;i+) /*棋盘矩阵初始化*/ for(j=1;j<=n;j+) fij=0; k=0; /*所跳步数计数
8、*/ travel(l,k); /*从i,j出发开始巡游*/ puts("The travel steps are:"); for(i=1;i<=n;i+) /*巡游完成后输出巡游过程*/ for(j=1;j<=n;j+) printf("%4d",fij); printf("n"); printf("Please input the knight's position (i,j): ");/*为再次巡游输入起始位置*/ scanf("%d %d",&i,&j
9、); l=(i-1)*n+j; puts("n Press any key to quit. ");getchar(); return 0;/*创建标志矩阵子函数*/void creatadjm() int i,j; for(i=1;i<=n;i+) /*巡游矩阵初始化*/ for(j=1;j<=n;j+) fij=0; for(i=1;i<=m;i+) /*标志矩阵初始化*/ for(j=1;j<=m;j+) adjmij=0; for(i=1;i<=n;i+) for(j=1;j<=n;j+) if(fij=0) /*对所有符合条件的
10、标志矩阵种元素置1*/ fij=1; if(i+2<=n)&&(j+1<=n) mark(i,j,i+2,j+1); if(i+2<=n)&&(j-1>=1) mark(i,j,i+2,j-1); if(i-2>=1)&&(j+1<=n) mark(i,j,i-2,j+1); if(i-2>=1)&&(j-1>=1) mark(i,j,i-2,j-1); if(j+2<=n)&&(i+1<=n) mark(i,j,i+1,j+2); if(j+2<=
11、n)&&(i-1>=1) mark(i,j,i-1,j+2); if(j-2>=1)&&(i+1<=n) mark(i,j,i+1,j-2); if(j-2>=1)&&(i-1>=1) mark(i,j,i-1,j-2); return;/*巡游子函数*/void travel(int p,int r) int i,j,q; for(i=1;i<=n;i+) for(j=1;j<=n;j+) if(fij>r) fij=0; /*棋盘矩阵的置r时,置0*/ r=r+1; /*跳步计数加1*/ i=(
12、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)&&(fij=0) travel(q,r); /*递归调用自身*/ 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=1; return; 第5章 课程设计心得 通过两个星期对骑士游历这个程序的分析,我对C语言这门课程有了进一步的巩固,对我们现在学的数据结构(C语言版)的知识有了一个很好的回顾和掌握,我的在这个过程中我也知道自
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年规范化工程维修协议样本
- 2024年度防火涂料施工承包协议
- 2024公司股东股权转让协议
- 2024商业合作协议模板
- 2024届安徽省阜阳市第一中学高三高考全真模拟卷(七)数学试题
- 2024年专业建材购销协议格式
- 2023-2024学年重庆一中高三招生统考(二)数学试题模拟试卷
- 2024年幼儿照护服务协议范例
- 2024专业不锈钢定制加工协议范本
- 2024定制大客车租赁业务协议
- 十二指肠溃疡伴穿孔的护理查房
- 市场营销策划(本)-形考任务三(第八~十章)-国开(CQ)-参考资料
- 中信证券测评真题答案大全
- 部编版小学六年级道德与法治上册全册知识点汇编
- 数字时代的数字化政府
- 文旅推广短片策划方案相关7篇
- 2023-2024学年高中主题班会燃激情之烈火拓青春之华章 课件
- 中医药文化进校园-中医药健康伴我行课件
- 市政管道开槽施工-市政排水管道的施工
- 居住建筑户型分析
- 机电一体化职业生涯
评论
0/150
提交评论