实验报告-马踏棋盘.docx

实验报告-马踏棋盘.docx

ID:55232510

大小:72.43 KB

页数:13页

时间:2020-05-06

实验报告-马踏棋盘.docx_第1页
实验报告-马踏棋盘.docx_第2页
实验报告-马踏棋盘.docx_第3页
实验报告-马踏棋盘.docx_第4页
实验报告-马踏棋盘.docx_第5页
资源描述:

《实验报告-马踏棋盘.docx》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、2.4题马踏棋盘题目:设计一个国际象棋的马踏棋盘的演示程序班级:姓名:学号:完成日期:一.需求分析(1) 输入的形式和输入值的范围:输入马的初始行坐标X和列坐标Y,X和Y的范围都是[1,8]。 (2) 输出形式: 以数组下表的形式输入,i为行标,j为列标,用空格符号隔开。 以棋盘形式输出,每一格打印马走的步数,这种方式比较直观 (3) 程序所能达到的功能:让马从任意起点出发都能够遍历整个8*8的棋盘。 (4) 测试数据,包括正确输入及输出结果和含有错误的输入及其输出结果。数据可以任定,只要1<=x,y<=8就可以了。 正确的输出结果为一个二维

2、数组,每个元素的值表示马行走的第几步,若输入有错,则程序会显示:“输入有误!请重新输入……”并且要求用户重新输入数据,直至输入正确为止。二.概要设计(1)、位置的存储表示方式(2) typedef struct      {         int x;     int y;         int from; }Point;  (2)、栈的存储方式 #define STACKSIZE 70 #define STACKINCREASE 10 typedef struct Stack {        Point *top;    Point 

3、*base;        int stacksize; };(1)、设定栈的抽象数据类型定义:  ADT Stack {      数据对象:D={ai 

4、 ai∈ElemSet,i=1,2,„,n,n≥0}      数据关系:R1={

5、ai-1, ai∈D,i=2,„,n}                约定an端为栈顶,ai端为栈顶。      基本操作:      InitStack(&s)     操作结果:构造一个空栈s,          DestroyStack(&s)          初始条件:栈s

6、已存在。          操作结果:栈s被销毁。            ClearStack(&s)          初始条件:栈s已存在。          操作结果:栈s清为空栈。              StackEmpty(&s)          初始条件:栈s已存在。    操作结果:若栈s为空栈,则返回TRUE,否则返回FALSE。              StackLength(s);          初始条件:栈s存在。          操作结果:返回s的元素个数,即栈的长度。             GetTo

7、p (s,&e);          初始条件:栈s已存在且非空。          操作结果:用e返回s的栈顶元素。              Push(&s,e) 初始条件:栈s已存在。         操作结果:插入元素e为新的栈顶元素。          Pop(&s,&e)         初始条件:栈s存在且非空。         操作结果:删除栈顶元素,并用e返回。             stackTraverse(s,visit())        初始条件:栈s存在且非空。        操作结果:从栈底到栈顶依次对s的每

8、个元素调用visit()。一旦visit()失败,则操作失败。 }ADT Stack本程序包含模块: 1、主程序模块:void main(){定义变量;接受命令;处理命令;退出;}2、起始坐标函数模块——马儿在棋盘上的起始位置; 3、探寻路径函数模块——马儿每个方向进行尝试,直到试完整个棋盘;4、输出路径函数模块——输出马儿行走的路径;  三.详细设计1.函数声明 VoidInitLocation(intxi,int yi); //马儿在棋盘上的起始位置标 int TryPath(int i,int j);          //马儿每个方向

9、进行尝试,直到试完整个棋盘 void Display();                    //输出马儿行走的路径 2. 起始坐标函数模块 void InitLocation(int xi,int yi) {  int x,y;                //定义棋盘的横纵坐标变量 top++;                  //栈指针指向第一个栈首  stack[top].i=xi;        //将起始位置的横坐标进栈  stack[top].j=yi;        //将起始位置的纵坐标进栈  stack[top].

10、director=-1; //将起始位置的尝试方向赋初值  board[xi][yi]=top+1;    //标记棋盘  x=stack[top].i;     

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。