《数据结构》课程设计。
题目:纸牌游戏。
一、概要31 题目。
2 要求。二、分析3
1 总体设计。
2 数据结构的选择。
三、设计31 模块设计。
2 关键算法描述。
3总体流程图。
4 重点模块或算法流程图。
5 详细算法。
四、调试分析和测试结果8
五、心得体会9
六、附录10
一、概要。1 题目:纸牌游戏。
2 要求:编号为1-52张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;然后…从第4张开始,以4为基数,是4的倍数的牌翻一次, 直到最后一张牌;..再依次5的倍数的牌翻一次,6的,7的直到以52为基数的翻过,输出:
这时正面向上的牌有哪些?
二、分析。1 总体设计。
当从第二个编号开始的每张牌每次遇到是其倍数时,都会相应的翻一次,这样,每张牌会翻的次数就各不一样,可能很多次,也可能只有一两次,而结果只是要输出在经过各个不同次数的翻牌后,正面向上的牌都有哪几张。比如24,第一次它是2的倍数时要从正面翻到背面,当进行到3时,就又要从背面翻回来,而到4时还要在翻,同理呢,到6.8.
12…它都要来回的翻。如果它在多次的翻牌后,正面还向上了,那么它就是要输出的结果之一。
2 数据结构的选择。
建立代表52张牌的线性表——调用翻牌算法按照规则翻牌——输出翻牌算法的结果。
三、设计。1 模块设计。
主要有四个模块:
主函数:main()/调用子函数。
子函数:fanpai()/实现翻牌算法。
子函数:prinf()/输出正面朝上的牌。
子函数:vol()/初始化,使每张牌皆正面朝上。
2 关键算法描述。
最为主要的翻牌算法的实现:
void fanpai(sqlist l)//定义函数翻牌。
int i,j;//循环变量。
for(i=2;i<=list_init_length;i++)
return;
3总体流程图
4 重点模块或算法流程图
翻牌算法:5 详细算法。
1、预处理。
#include""
#include ""
#include ""
#define list_init_size 100
#define list_init_length 52
#define listincerment 10
2、数据结构类型定义。
定义一个结构体类型sqlist,结构体中数组指针elem指示线性表的基地址,length指示线性表的当前长度。listsize指示顺序表当前分配的存储空间大小,一旦因插入元素而空间不足时,可进行再分配。
typedef struct
int *elem;//存储空间基址。
int length;//当前长度。
int listsize;//当前分配的空间存储量。
sqlist;
3、主函数功能介绍。
输出正面朝上牌的序号。
void prinf(sqlist l)
int sum=0;
printf("正面朝上的牌是:")
for(int i=0;i
printf("正面朝上的牌有%d张!",sum);
return;
调用函数,按照规则进行翻牌。
void fanpai(sqlist l)
int i,j;//循环变量。
for(i=2;i<=list_init_length;i++)从第i张纸牌开始翻牌,i的倍数。
return;
调用函数vol,确保翻牌前每张牌都是正面向上。
void vol(int array)
int i;
for(i=0;i< list_init_length;i++)52张牌正面朝上,赋值1,否则,赋值0
array[i]=1;
4、主函数。
void main()
sqlist l;
int array[52];/定义数组。
vol(array);
fanpai(l);
prinf(l);
getch();
四、调试分析和测试结果。
最后的输出结果是:
正面朝上的牌是:1 4 9 16 25 36 49
正面朝上的牌有7张!
五、心得体会。
通过这次的数据结构课程设计,我明显感觉到自己在很多方面的不足,但问题总是要解决的,必须找出问题然后将其一一解除。所以在整个过程中,我不断加深了对数据结构的理解与一些程序写书时要注意的事项,也让我对这门课程有了进一步的了解和认识。完成一个课程设计要注意很多方面,无论是格式、书写的内容还是要表达的思想,所以我们必须严格要求自己。
本次课程设计涉及了很多知识,由于往日学得不扎实,对某些问题仍然存在疑惑,我查阅了相关书籍,以便将疑难问题解决,同时更加进一步的掌握相关知识。
此次的课程设计不仅让我深刻体会到了学习这门课程的重要性与必要性,也让我懂得了学习是思考一个的过程,我们应该主动去思考学到的知识以及学到后怎么去运用,而不是一味地被动地接受。数据结构及其算法在解决现实生活中的常见问题和书写软件设计方面上都有着重要的意义,我们应该好好掌握它的相关知识,在以后的学习过程中,更多的去学会如何运用知识。
附录:程序源**:
#include""
#include ""
#include ""
#define list_init_size 100
#define list_init_length 52
#define listincerment 10
typedef struct
int *elem;//空间存储基址。
int length;//当前长度。
int listsize;//当前分配的空间存储量。
sqlist;
/输出正面朝上牌的序号。
void prinf(sqlist l)
int sum=0;
printf("正面朝上的牌是:")
for(int i=0;i
printf("正面朝上的牌有%d张!",sum);
return;
/定义函数,翻牌。
void fanpai(sqlist l)
int i,j;//循环变量。
for(i=2;i<=list_init_length;i++)从第i张纸牌开始翻牌,i的倍数*/
return;
/定义函数vol,确保翻牌前每张牌都是正面向上。
void vol(int array)
int i;
for(i=0;i< list_init_length;i++)52张牌正面朝上,赋值1,否则,赋值0*/
array[i]=1;
/主函数。void main()
sqlist l;
int array[52];
vol(array);
fanpai(l);
prinf(l);
getch();
数据结构课程设计
课程设计说明书 题目哈夫曼编码问题的设计和实现。课程名称数据结构课程设计。院 系 部 中心。专业。班级。学生姓名。学号。设计地点。指导教师。设计起止时间 2008 年6月 2日至 2008 年 6月 6 日。目录。1 问题描述 2 1.1 题目内容 2 1.2 基本要求 2 1.3 测试数据 2 2...
数据结构课程设计
数据结构 课程设计。实验报告。学院 信息工程学院。班级 姓名 学号 指导老师 题目2 一元多项式的计算。1 实验目的。1 掌握链表的灵活运用 2 学习链表初始化和建立一个新的链表 3 知道怎样去实现链表删除结点操作与插入结点 4 理解链表的基本操作 包括数据域数据的相加 并能灵活运用。2 实验内容。...
数据结构课程设计
班级 信计 1102 姓名 李娜娜。学号 1108060209 设计日期 2013.07.15 西安科技大学计算机学院 1.实验题目 编制一个演绎扫雷游戏的程序。2.问题描述。做一个n x m的扫雷游戏,每个方格包含两种状态 关闭 closed 和打开 opened 初始化时每个方格都是关闭的,一个...