数据结构课程设计-扑克牌的排序.doc

上传人:小小飞 文档编号:3277360 上传时间:2019-08-07 格式:DOC 页数:22 大小:414.51KB
返回 下载 相关 举报
数据结构课程设计-扑克牌的排序.doc_第1页
第1页 / 共22页
数据结构课程设计-扑克牌的排序.doc_第2页
第2页 / 共22页
数据结构课程设计-扑克牌的排序.doc_第3页
第3页 / 共22页
数据结构课程设计-扑克牌的排序.doc_第4页
第4页 / 共22页
数据结构课程设计-扑克牌的排序.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《数据结构课程设计-扑克牌的排序.doc》由会员分享,可在线阅读,更多相关《数据结构课程设计-扑克牌的排序.doc(22页珍藏版)》请在三一文库上搜索。

1、课课 程程 设设 计计 报报 告告 课程设计名称:数据结构课程设计数据结构课程设计 课程设计题目:扑克牌的排序扑克牌的排序 I 目目 录录 1 课程设计介绍课程设计介绍.1 1.1 课程设计内容.1 1.2 课程设计要求.1 2 课程设计原理课程设计原理.2 2.1 课设题目粗略分析.2 2.2 原理图介绍.2 2.2.1 功能模块图2 2.2.2 流程图分析3 3 数据结构分析数据结构分析.6 3.1 存储结构.6 3.2 算法描述.6 4 调试与分析调试与分析.12 4.1 调试过程.12 4.2 程序执行过程.12 参考文献参考文献.15 附附 录(关键部分程序清单)录(关键部分程序清单

2、).16 1 1 课程设计介绍课程设计介绍 1.1 课程设计内容课程设计内容 编写算法能够用基数排序算法对扑克牌进行排序。应能够选择按花色优 先或按面值优先,初始扑克牌牌序要求能自动生成(随机生成) 。 1.2 课程设计要求课程设计要求 1花色的符号可自定,输出要求给出初始牌序和结果牌序。 2参考相应资料,独立完成课程设计任务。 3交规范课程设计报告和软件代码。 2 2 课程设计原理课程设计原理 2.1 课设题目粗略分析课设题目粗略分析 根据课设题目要求,拟将整体程序分为三大模块。此三个模块相互独立, 没有嵌套调用的情况,以下是三个模块的大体分析: 1建立一个结构体数组存放整副扑克。 2根据要

3、求的扑克数及生成的随机数建立一个结构体数组存放需要排序 的扑克。 3用基数排序的方法对随机生成的扑克进行相应要求的排序 2.2 原理图介绍原理图介绍 2.2.1 功能模块图功能模块图 随机生成需排序的扑克 对扑克按花色优先排序 并输出 对扑克按面值优先排序并 输出 图 2. 1 功能模块图 初始化生成整副扑克 3 2.2.2 流程图分析流程图分析 1随机生成需排序的扑克函数流程图,如图 2.2 所示: Y Y 图 2.2 生成随机扑克的流程图 开始 i+ i=1 i=0 调用 distribute()、 collect() 函数 i- i!=0 输出人 ri.huase ri.value 结束

4、 i=r0.next I Y Y N Y N 6 对长为 n 的数组 R,利用 next 域建成静态链表,进行关键字先 key0 (花色)后 key1(面值)的基数排序,排序后的数组按关键字 key1(面值) 优先的顺序存放,利用静态链表依次将其输出。 3 数据结构分析数据结构分析 3.1 存储结构存储结构 typedef struct int value ; / 扑克面值 char huase; / 扑克花色 int num; / 控制面值输出形式 int order; / 在同一花色扑克的位置 int key2; / 排序用的关键字 int next; / 下一个扑克的位置 apoker;

5、 / 定义一个结构体表示一张扑克 apoker poker52; / 定义一个大小为 52 的结构体数,组存放整副扑克 apoker unsortpokermax ; / 定义一个足够大的结构体数组,存放需排序的扑 克 typedef int tempradix; / 大小为关键字的基数的整形数组,用于基数排 序的分配、收集 3.2 算法描述算法描述 1初始化建立扑克的算法描述说明如下: 结构体名定义为 apoker,poker52,unsortpokermax是 apoker 类型,对 其赋上每个结点的名字,每个名字对应自己的一个 num,以控制面值的输出 形式,value 对应扑克的面值,

6、huase 对应扑克的花色。 for(i=0;i=0;i-) /*从最低位关键字开始,进行分配收集*/ 11 distribute(r,i,head,tail); collect(r,head,tail); printf(“按花色排序后的扑克:n“); for(i=r0.next;i!=0;i=ri.next) k=(ri.num+2)%13; /*用 num 控制 value 输出形式*/ if(k=0|k=1|k=11|k=12) printf (“%c%c “,ri.huase,ri.value); else printf (“%c%d “,ri.huase,ri.value); 12

7、4 调试与分析调试与分析 4.1 调试过程调试过程 在调试过程中,使用函数 rand()时,出现rand : undeclared identifier,意识到 是由于没有添加#includes这个头文件造成的,修改后就可以运行了;还 有一个出现的问题是,在一个 for 循环中将 i 错写为 j,导致程序无法正常运行, 通过单步跟踪,找出问题。在字符 ch 的输入时少写了取地址符,使程序无法运 行,加上后程序运行正常。 4.2 程序执行过程程序执行过程 首先要输入需生成的扑克数,如图 4.1 所示: 图 4.1 进入系统的界面 13 生成需要张数的扑克如图 4.2 所示: 图 4.2 随机生成

8、的扑克 选择按花色优先排序后的扑克,如图 4.3 所示: 图 4.3 按花色优先排序后的扑克 14 选择按面值优先排序后的扑克,如图 4.4 所示: 图 4.4 按面值优先排序后的扑克 直到输入操作选 C 退出系统,算法结束。如图 4.5 所示: 图 4.5 退出系统后的界面 15 参考文献参考文献 1 严蔚敏,吴伟民.数据结构M.北京:清华大学出版社,2007. 2 张长海,陈娟.C 程序设计M.北京:高等教育出版社,2004. 3 谭浩强.C 程序设计M.北京:清华大学出版社,2005. 4 苏士华,黄学俊.数据结构 解析.习题.课程设计M.合肥:中国科学技术大学 出版社,2009. 5

9、张瑞军.数据结构M. 北京:清华大学出版社,2009. 6 刘怀亮. 数据结构 习题解析与实验指导M. 北京:冶金出版社,2009. 16 附附 录(关键部分程序清单)录(关键部分程序清单) 程序代码程序代码 #include #include #include #define radix 13 typedef struct int value ; char huase; int num; int order; int key2; int next; apoker; apoker poker52; typedef int tempradix; apoker *createpoker(apoke

10、r unsortpoker,int t) int i,j,k,m; int n ; for(i=0;i=0;i-) distribute(r,i,head,tail); collect(r,head,tail); printf(“花色优先排序后的扑克:n“); for(i=r0.next;i!=0;i=ri.next) k=(ri.num+2)%13; if(k=0|k=1|k=11|k=12) printf (“%c%c “,ri.huase,ri.value); else printf (“%c%d “,ri.huase,ri.value); void main() int i,N; ch

11、ar ch; apoker unsortpoker100; printf(“说明:花色顺序:%c%c%c%c, 面值顺序% d%d.%c%c%c%c“,3,4,5,6,2,3,74,81,75,65); printf(“n A.花色优先排序 B.面值优先排序 C.退出系统n“); for(i=0;i100;i+) printf(“n 输入扑克张数: n“); scanf(“%d“, createpoker(unsortpoker,N); getchar(); printf(“n 输入要进行的操作:n“); scanf(“%c“, if(ch=A) huasepresort(unsortpoke

12、r,N); else if(ch=B) valuepresort(unsortpoker,N); else if(ch=C) break; else printf(“输入有误请重新输入“); printf(“n“); 沈阳航空航天大学课程设计报告 20 课程设计总结:课程设计总结: 本次课程设计涉及到的范围很广,使我能够比较系统的对 C 语言和数据结 构进行一次整理和复习。同时有了很多的体会和经验。 1. 这次课设使我巩固了以前学过的 C 语言的知识,学习了随机函数 rand(), 熟练使用 VC+的编译环境,也对这两门课程有了新的了解、认识。 2. 对数据结构的理解有所加强,算法方面的知识也得到提高。选择不同的 存储结构,对应不同的算法,所以即使同样的程序,不同的人必然会设计出不 同的方案,在以后的学习生活中,一定要广泛涉猎,掌握更多更好的解决问题 的方法。 3. 此次设计让我意识到程序设计是脑力劳动和体力劳动相结合的,没有平 时基础的训练是不会写出高效的算法。 4. 此次课程设计时间虽短,但却课设的过程是短暂的,但我所收获的是永 恒的。它让我尝到了学习的快乐,成功的喜悦要完成一项任务或把东西学好就 必须有足够的信心,持久的耐心,有面对困难无所畏惧的精神,这对我日后的 学习和生活产生了深远的影响。 指导教师评语: 指导教师(签字): 年 月 日 课程设计成绩

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

当前位置:首页 > 研究报告 > 信息产业


经营许可证编号:宁ICP备18001539号-1