目录。1、课程设计的目的1
2、课程设计的要求1
3、课程设计的方案1
4、课程设计的内容1
4.1设计的内容1
4.2算法思路1
4.2.1算法的内容2
4.2.2算法中函数的流程图5
4.3程序调试与测试以及结果的分析6
4.3.1程序调试6
4.3.2程序测试6
4.3.3结果分析7
4.4程序源**7
5、总结11
参考文献11
纸牌游戏。1、课程设计的目的。
1)了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;
2)初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;
3)提高综合运用所学的理论知识和方法独立分析和解决问题的能力;
4) 训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风;
2、课程设计的要求。
1)设计的课题能够体现数据结构和算法的算法分析、设计、算法实现。
2)根据自己对数据结构和算法的基本概念、原理和机制的理解,自拟题目和设计内容,选题尽可能结合实际的应用。
3、课程设计的方案。
纸牌游戏具体内容如下:编号为1-52张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;然后,从第4张开始,以4为基数,是4的倍数的牌翻一次,直到最后一张牌;再依次5的倍数的牌翻一次,6的,7的直到以52为基数的牌翻过,输出,这时正面向上的牌有哪些?运行程序,进入用户选择界面,用户选择1输出52张牌编号和最后正面向上牌的编号;用户选择2输出要求输入牌数,用户输入牌数后,输出所有牌的编号和最后正面向牌的编号;用户选择0退出执行程序;用户输入其他信息时,输出错误信息提示并要求用户重新选择操作。
4、课程设计的内容。
4.1设计的内容。
因为要有编号为1-52张纸牌,则需要先创建链表,运用mallac函数申请内存空间,存储纸牌编号信息;然后设计翻牌程序,利用 j%i==0的思想,使用指针存储最后正面向上的牌编号;最后编写主函数,判断链表建立是否成功,输出全部纸牌编号与程序运行结果,让用户能够直接的看到求解结果。
4.2算法思路。
4.2.1算法的内容。
1)定义node节点,用于存储单张牌的信息。
struct node //定义结点。
int data;
int key;/*标志位*/
struct node *next;
2)创建链表建立creat()函数,用于建立和存储所有纸牌编号,运用malloc函数申请内存空间时若申请失败,输出相应提示信息。
struct node *creat定义链表建立函数creat()
struct node *p,*head,*s其返回值为结构指针。
int i;
head=null; /初始化。
p=(struct node*)malloc(sizeof(*p));
if(p==null)
head=p;
head->key=1;
head->data=1;
head->next=null;
for(i=2;i<=n;i建立n个结点的链表。
p->next=null;
return(head);
3)建立fanpai()函数,利用 j%i==0的思想,使用指针存储最后正面向上的牌编号。
void fanpai(struct node *p)
struct node *p1,*p2;
for(p1=p->next;p1!=null;p1=p1->next)
4)建立obj()函数,用于创建有n张纸牌信息的链表并输出最后正面向上的纸牌编号。
void obj()
struct node *head,*np;
head=creat();
printf("显示全部纸牌编号:")
if(head==null)
printf("creat link error!");
elsefor(np=head;np!=null;np=np->next)
fanpai(head);
printf("最后正面向上的纸牌编号为:");
for(np=head;np!=null;np=np->next)
5)最后编写main()主函数,输出用户选择界面,并对错误输入输出提示信息,完成总的设计任务。
void main()
char ch;
cout<<"n\t\t\t 纸牌游戏"< cout<<"t\t< cout<<"t\t 1 标准52张牌 2 任意输入牌数 0 退出"< cout<<"t\t< cout< cin>>ch;
switch(ch)
4.2.2算法中函数的流程图。
翻牌函数:函数的调用关系图:
4.3程序调试与测试以及结果的分析。
4.3.1程序调试。
在结点定义中没有定义data导致错误,修改后运行正常。
4.3.2程序测试。
1)用户输入1,输出52张纸牌编号和最后正面向上的纸牌编号:
2)用户输入2,提示用户输入纸牌数目,输出任意个数纸牌的编号和最后正面向上的纸牌编号:
3)用户输入0,提示用户是否确定退出,用户输入y后,退出程序执行:
4)用户输入错误字符时,提示输入错误:
4.3.3结果分析。
本程序最后采用比较简单算法实现,时间复杂度仅为o(n)。
4.4源程序**。
*纸牌游戏源程序*/
#include <>
#include <>
#include<>
#include<>
struct node定义结点。
int data;
int key;/*标志位*/
struct node *next;
int n=52;
struct node *creat定义链表建立函数creat()
struct node *p,*head,*s其返回值为结构指针。
int i;
head=null; /初始化。
p=(struct node*)malloc(sizeof(*p));
if(p==null)
head=p;
head->key=1;
head->data=1;
head->next=null;
for(i=2;i<=n;i建立52个结点的链表。
p->next=null;
return(head);
数据结构课程设计
课程设计说明书 题目哈夫曼编码问题的设计和实现。课程名称数据结构课程设计。院 系 部 中心。专业。班级。学生姓名。学号。设计地点。指导教师。设计起止时间 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 初始化时每个方格都是关闭的,一个...