数据结构课程设计纸牌游戏.docx
- 文档编号:20133499
- 上传时间:2023-04-25
- 格式:DOCX
- 页数:17
- 大小:123.50KB
数据结构课程设计纸牌游戏.docx
《数据结构课程设计纸牌游戏.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计纸牌游戏.docx(17页珍藏版)》请在冰豆网上搜索。
数据结构课程设计纸牌游戏
攀枝花学院
学生课程设计(论文)
题目:
纸牌游戏
学生姓名:
李珑学号:
************
所在院(系):
计算机学院
专业:
计算机科学与技术
班级:
08级2班
指导教师:
李艳华职称:
助教
2010年12月27日
攀枝花学院教务处制
攀枝花学院本科学生课程设计任务书
题 目
纸牌游戏
1、课程设计的目的
1)使学生进一步理解和掌握课堂上所学各种基本抽象数据类型的逻辑结构、存储结构和操作实现算法,以及它们在程序中的使用方法。
2)使学生掌握软件设计的基本内容和设计方法,并培养学生进行规范化软件设计的能力。
3)使学生掌握使用各种计算机资料和有关参考资料,提高学生进行程序设计的基本能力。
2、课程设计的内容和要求(包括原始数据、技术要求、工作要求等)
一、基本要求
任务:
编号为1-52张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;然后…从第4张开始,以4为基数,是4的倍数的牌翻一次,直到最后一张牌;...再依次5的倍数的牌翻一次,6的,7的直到以52为基数的翻过,输出:
这时正面向上的牌有哪些?
要求:
1)界面友好,函数功能要划分好
2)总体设计应画一流程图
3)程序要加必要的注释
4)要提供程序测试方案
5)程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。
二、撰写课程设计报告或课程设计总结课程设计报告要求:
总结报告包括需求分析、总体设计、详细设计、编码(详细写出编程步骤)、测试的步骤和内容、课程设计总结、参考资料等,不符合以上要求者,则本次设计以不及格记。
3、主要参考文献
[1]《C语言程序设计教程》,谭浩强,清华大学出版社
[2]《数据结构课程实验》,徐孝凯,清华大学出版社,2001
[3]《数据结构(C语言版)》,严蔚敏等,清华大学出版社,2001
[4]《数据结构(C语言版)例题详解与课程设计指导》,秦锋等,中国科学技术大学出版社
[5]《数据结构(C语言版)》,秦锋,中国科学技术大学出版社
4、课程设计工作进度计划
时间(天)内容安排
1分析设计准备
3编程调试阶段
1编写课程设计报告
指导教师(签字)
日期
年月日
教研室意见:
年月日
学生(签字):
接受任务时间:
年月日
课程设计(论文)指导教师成绩评定表
题目名称
纸牌游戏
评分项目
分值
得分
评价内涵
工作
表现
20%
01
学习态度
6
遵守各项纪律,工作刻苦努力,具有良好的科学工作态度。
02
科学实践、调研
7
通过实验、试验、查阅文献、深入生产实践等渠道获取与课程设计有关的材料。
03
课题工作量
7
按期圆满完成规定的任务,工作量饱满。
能力
水平
35%
04
综合运用知识的能力
10
能运用所学知识和技能去发现与解决实际问题,能正确处理实验数据,能对课题进行理论分析,得出有价值的结论。
05
应用文献的能力
5
能独立查阅相关文献和从事其他调研;能提出并较好地论述课题的实施方案;有收集、加工各种信息及获取新知识的能力。
06
设计(实验)能力,方案的设计能力
5
能正确设计实验方案,独立进行装置安装、调试、操作等实验工作,数据正确、可靠;研究思路清晰、完整。
07
计算及计算机应用能力
5
具有较强的数据运算与处理能力;能运用计算机进行资料搜集、加工、处理和辅助设计等。
08
对计算或实验结果的分析能力(综合分析能力、技术经济分析能力)
10
具有较强的数据收集、分析、处理、综合的能力。
成果
质量
45%
09
插图(或图纸)质量、篇幅、设计(论文)规范化程度
5
符合本专业相关规范或规定要求;规范化符合本文件第五条要求。
10
设计说明书(论文)质量
30
综述简练完整,有见解;立论正确,论述充分,结论严谨合理;实验正确,分析处理科学。
11
创新
10
对前人工作有改进或突破,或有独特见解。
成绩
指导教师评语
指导教师签名:
年 月 日
摘要
数据结构课程是计算机专业中必修的核心课程之一,也是一门理论性很强的一门课程,同时也是一门锻炼程序涉及能力的实践课程,此次课程设计从数据结构的基本特点出发,结合数据结构中经常涉及到的指针、数组以及链表循环结构等。
纸牌游戏课程设计包括纸牌信息的建立、了解其翻拍的原理、并简明阐述翻牌的具体步骤与流程、最后输出与打印翻牌结果,整个过程使学生进一步理解和掌握课堂上所学各种基本抽象数据类型的逻辑结构、存储结构和操作实现算法,以及它们在程序中的使用方法。
掌握一般软件设计的基本内容和设计方法,培养学生进行规范化软件设计的能力。
而且使学生掌握使用各种计算机资料和有关参考资料的方法,提高学生进行程序设计的基本能力。
关键词数据结构,纸牌游戏,C语言,代码
摘要……………………………………………………………………………………………Ⅰ
第一章题目与要求……………………………………………………………………………1
1.1问题提出………………………………………………………………………………1
1.2涉及知识点……………………………………………………………………………1
1.3功能要求………………………………………………………………………………1
第二章功能设计………………………………………………………………………………2
2.1算法设计………………………………………………………………………………2
2.2流程图…………………………………………………………………………………3
第三章程序代码设计…………………………………………………………………………4
第四章程序测试与结果分析…………………………………………………………………7
程序调试情况……………………………………………………………………………7
程序结果分析……………………………………………………………………………7
第五章总结……………………………………………………………………………………8
参考文献………………………………………………………………………………………9
附录:
程序清单………………………………………………………………………………10
第一章题目与要求
1.1问题提出
“数据结构”旨在使学生学会分析研究数据对象的特性,学会数据的组织方法,以便选择合适的数据逻辑结构和存储结构,以及相应的运算,把现实世界中的问题转化为计算机内部的表示和处理,这是一个良好的程序设计技能训练的过程。
“数据结构”课程设计不仅可以帮助学生充分理解、巩固所学的基本概念、原理和方法,更重要的是能够针对实际问题来选择数据结构,设计相应的存储结构并加以实现,从而最终解决问题。
结合数据结构所学知识,要求学生用C语言编程实现一个简单的纸牌游戏设计。
纸牌游戏程序通过测试,能够正常运行,任务:
编号为1-52张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;然后…从第4张开始,以4为基数,是4的倍数的牌翻一次,直到最后一张牌;...再依次5的倍数的牌翻一次,6的,7的直到以52为基数的翻过,输出:
这时正面向上的牌有哪些?
输出的纸牌号为:
14916253649
1.2涉及的知识点
结构、数组、循环、函数、分支、指针
1.3功能要求
纸牌游戏基本内容具体要求包扩:
(1)建立纸牌信息完成对编号为1-52张牌编码,假定正面向上;
(2)从第2张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;
(3)然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;
(4)然后从第4张开始,以4为基数,是4的倍数的牌翻一次,直到最后一张牌,再依次5的倍数的牌翻一次,6的,7的直到以52为基数的翻过,
(5)输出。
第二章功能设计
2.1算法设计
1.程序设计内容功能实现分析
当每个号码每次遇到是某个数的倍数时,都会相应的翻一次,这样,每张牌会翻的次数就各不一样,可能很多次,也可能只有一两次,结果就只是要输出在经过各个不同次数的翻牌后,正面向上的牌都有哪几个。
举例说明一下,比如24,第一次它是2的倍数时要从正面翻到背面,当进行到3时,就又要从背面翻回来,而到4时还要在翻,同理呢,到6.8.12…它都要来回的翻。
如果它在多次的翻牌后,正面还向上了,那么它就是要输出的结果之一。
2.程序设计内容功能实现与打印
用#defineOPPOSITE(i)i=i?
0:
1这个宏将牌的状态标志求反,也即为翻牌操作。
将所有的牌建立一个数组,运用for的循环嵌套执行以下操作:
把52张牌初始化成正面朝上、控制基数和翻牌次数,判断最终的纸牌朝向并打印出结果,具体实现算法参看详细设计。
2.2程序流程图
第三章程序代码设计
首先需要宏定义,可以随便修改它的范围,定义可以修改的初始化数组p_int[MAX],用1表示正面向下,0表示反面向下;
voidCscanf(intp_int[MAX])MAX最大取52
{
inti;
printf("初始化数组p_int[MAX],定义1表示正面向上,0表示反面向下\n\n");
for(i=0;i<=MAX;i++)
p_int[i]=1;
}
其次第二部分包扩计算2到52的约数个数,规定奇数为反面向上,偶数位正面向上
voidCdivisor(intp_int[MAX])
{
intflag=0;
inti,j;
for(i=2;i<=MAX;i++,flag=0)
{
for(j=2;j<=i;j++)
if(i%j==0)
flag++;
//printf("%d",flag);
if(flag%2!
=0)
p_int[i]=0;
}
}
输出部分,即奇数位为反面的值为1表示正面向上的牌,并输出其值
voidCprintf(intp_int[MAX])
{
inti;
intflag=0;
printf("正面向上的牌有\n");
for(i=1;i<=MAX;i++)
if(p_int[i]==1)
{
printf("*number");
printf("%d",i);
printf("张牌*\n");
//flag++;
//if(flag%5==0)表示其输出格式
printf("\n");
}
}
主函数部分,首先要有分配内存,函数主体部分调用Cdivisor(p_card);
voidmain()
{
int*p_card;
p_card=(int*)malloc((MAX+1)*sizeof(int));
Cscanf(p_card);
Cdivisor(p_card);
Cprintf(p_card);
printf("\n");
第四章程序测试与结果分析
程序调试情况:
结果分析:
1.这题的时间复杂度是O(52)。
2.虽然本次程序的题目难度与其他问题相比不是很高,但仍有很多问题我们是很容易忽视的,其一:
在理解题目的要求时,注意翻牌的次数可能有多次;其二:
for循环的嵌套使用在书写时很容易漏掉大括弧。
3.运用更多的基础算法,使得程序和算法思想得到更好的表现,可增强算法的可读性
第五章总结
这个学期是我第一次接触《数据结构》,也是我第一次接触“课程设计”,在完成设计的过程中,我遇到了一系列的问题,能明显感觉到自己在很多方面的不足,但另一方面,问题是要分析解决的,找出问题以便为完善学习计划,改变学习内容与方法提供实践依据。
所以在整个过程中,我不断加深了对数据结构的理解与一些程序写书时要注意的事项,体会了《数据结构》这门课程在解决现实生活问题上的可行性,也更进一步地激发了我的学习热情。
做一个课程设计要注意很多方面,无论是格式,还是书写的内容和要表达的思想都得严格要求自己,所以做起来真的不算容易。
本次课程设计涉及了很多知识,由于往日没有学得很扎实,对某些问题仍然比较疑惑,所以要进行充足的补习。
期间,我翻阅了很多书籍,知识总是联系很紧密的,解决完这个问题又发现了新的问题,之后,为了解决新问题又发现了更多的问题,就这样,我得等到一个一个把问题处理完。
问题越多,明白的也就会越来越多,做一次课程设计就像从头到尾做了一次系统的复习,从基础到难点,从轮廓到每个知识点,数据结构的研究内容在我的脑海里就再也不像以前那么模糊了。
设计程序来解决现在存在的问题,把理论知识付诸于实践,对于我们这些计算机专业的本科生来说,实际能力的培养至关重要,而这种实际能力的培养单靠课堂教学是远远不够的,必须从课堂走向实践,这也是我们学习的目的。
做完设计,我已深刻体会到了学习这门课程的重要性与必要性了,同时,它留给我很多思考:
学习是思考一个的过程,我们应该主动去想学习一门知识后怎么去运用,而不是一味地被动地接受。
数据结构及其算法在解决现实生活中的常见问题和书写软件设计方面上都有着重要的意义,我们应该好好掌握它的相关知识,在以后的学习过程中,更多的去学会如何运用知识。
参考文献
[1]《C语言程序设计教程》,谭浩强,清华大学出版社
[2]《数据结构课程实验》,徐孝凯,清华大学出版社,2001
[3]《数据结构(C语言版)》,严蔚敏等,清华大学出版社,2001
[4]《数据结构(C语言版)例题详解与课程设计指导》,秦锋等,中国科学技术大学出版社
[5]《数据结构(C语言版)》,秦锋,中国科学技术大学出版社
附录:
程序清单
内容:
#include
#include
#include
#include
#defineMAX52//宏定义,可以随便修改它的范围
voidCscanf(intp_int[MAX])//初始化数组p_int[MAX],1表示正面向上,0表示反面向上
{
inti;
printf("初始化数组p_int[MAX],定义1表示正面向上,0表示反面向上\n\n");
for(i=0;i<=MAX;i++)
p_int[i]=1;//初识化定义开始时所有牌均正面向上
}
voidCdivisor(intp_int[MAX])//计算2到52的约数个数,奇数为反面向上,偶数位正面向上
{
intflag=0;//奇数个数
inti,j;
for(i=2;i<=MAX;i++,flag=0)//求i的约数个数
{
for(j=2;j<=i;j++)
if(i%j==0)
flag++;
printf("%d",flag);
if(flag%2!
=0)
p_int[i]=0;
}
}
voidCprintf(intp_int[MAX])//输出正面向上的纸牌
{
inti;
intflag=0;
printf("正面向上的牌有\n");
for(i=1;i<=MAX;i++)
if(p_int[i]==1)//1表示正面向上,输出i的值
{
printf("*第");
printf("%d",i);
printf("张牌*");
flag++;
if(flag%5==0)//每输出5个换行
printf("\n");
}
}
voidmain()
{
int*p_card;
p_card=(int*)malloc((MAX+1)*sizeof(int));//分配内存
Cscanf(p_card);
Cdivisor(p_card);//函数调用
Cprintf(p_card);
printf("\n");
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 纸牌 游戏