数据结构设计课题

上传人:xuey****n398 文档编号:166494638 上传时间:2022-11-01 格式:DOC 页数:11 大小:70KB
返回 下载 相关 举报
数据结构设计课题_第1页
第1页 / 共11页
数据结构设计课题_第2页
第2页 / 共11页
数据结构设计课题_第3页
第3页 / 共11页
点击查看更多>>
资源描述
设计课题:猜数字游戏一、问题描述:该游戏可以由程序随机产生或由用户输入四个0到9之间的数字,且不重复。玩游戏者通过游戏提示输入八次来匹配上面所输入的数字。A表示位置正确且数字正确,B表示数字正确而位置不正确。二、功能要求:1、本游戏显示这样的菜单:(1) 随机产生数据(2) 用户输入数据(3) 退出游戏2、游戏成功与否都能返回主菜单三、算法提示:1、 数据结构:数组2、 用简单的程序设计方法四、测试数据:测试数据: 3792第一次输入: 12340A2B第二次输入: 5678 0A1B第三次输入: 0867 0A1B第四次输入: 9786 1A1B第五次输入: 1794 2A0B第六次输入: 2793 2A2B第七次输入: 37924A0B游戏成功!4 猜数字游戏 4.1问题分析 编写一个猜数字游戏,有一定的容错功能,界面友好,功能齐全。游戏规则:a,一个四位数,各位上的数字不重复,从1到9。b,按以下提示猜出这个四位数。c,每次猜测输入的数据给出类似的提示*A*B。d,其中A前的*代表你本次猜对了多少个数字。e,其中B前的*代表你本次猜对的数字并且位置正确的个数。4.2数据结构与算法分析 本程序多次利用到了调用函数参数,for循环等,通过比较输入的四个数字和电脑随机的数字值大小来判断猜对的数字正确与否。函数间的调用关系图如下:输入用户所猜的数函数:Get_b( ) 打印得分函数:Printscore( ) 随机产生4个数函数:Rnd ( )还要不要玩函数:Iswantplay( )主函数;int main()初始化变量函数:Reset( )输出结果函数:Printresult( )电脑判断是否正确函数:Check_ab( ) 图 4-26、流程图 比较输入的数和随机生成的数.给出提示.A、B表示表示数对位置也对,B表示数对位置不对1 Main()输入四位不相同的数字,如果输入的不是数字或者输入的数字有重复,则重新输入退出判断结果还要不要玩名字退出 图 4-34.3核心代码#include #include #include #include #include /选用了以上几个程序为编程服务int Rnd( ) /产生十以内的随机整数。 int Rteger; Rteger=rand( )%10; return Rteger;void Get_b(int b) /得到用户输入的四位数,存储到数组b4中。 int i,j, m,n=10000; cinm; if(m9999|m999) cout输入错误请重新输入:m; for(i=0;i=3;i+) bi=m/(n/10); m=m-bi*(n/10); n=n/10; for(i=0;i=3;i+) for(j=0;j=3;j+) if(bi=bj&i!=j) cout输入重复请重新输入endl; Get_b(b); void Iswantplay(char * wantplay) /判断用户还想不想玩。 coutwantplay;cout=nnn;void Reset(int A,int B,int * score,int * a,int * b) /用来初始化一些变量。 int i=0,t=0,j; (*score)=0; /得分清零。 (*a)=0; (*b)=0; /所猜对的数字的个数的计数器清零for(j=0;j10;j+) Aj=j; /初始化数组,为产生无重复随机数做准备。 while(i4) t=Rnd(); if(At) Bi=At,At=0,i+; /*利用扑克牌中抽牌的思想,来产生无重复随机数,存储到B(在main函数中为b)中。*/ cout输入一个四位数 开始吧! n; cout-n; void Check_ab(int a,int b,int * A,int * B) /此函数用来检查用户所输入的四位数与系 /统产生的四位数的相同情况。 int i,j; for(i=0;i=3;i+) /用两个嵌套的for循环来逐个比较a与b for(j=0;j=3;j+) if(ai=bj) /如果数字相同。 if(i=j) /如果位置也相同。 (*A)+; /A自加。 if(!(i=j) /如果位置不同。 (*B)+; /B自加。 void Welcome() /打印程序的开始界面。cout *n;cout * *n;cout * =猜数字游戏= *n;cout * - *n;cout * programed byzkk *n;cout *nnnn;void Usage() /显示程序的用法。cout=用法= n;cout 1.计算机随机产生一个无重复数字的四位数由你来猜.n;cout 2.若所猜的数位置与数字均正确,会显示一个A,若数字对位置不对,会显示一个B.n;cout=nn;void Printscore(int n) /显示用户的得分。 switch(n) case 0: cout你真是撞大运了! 恭喜! 恭喜! 加十分!n;break; /猜的次数小于3次 case 1: cout恭喜你 !猜对了! 你真是天才! 加九分!n;break; /猜的次数小于6次大于等于3次 case 2: cout不错! 不错! 猜对了! 你真够聪明! 加八分!n;break; /猜的次数小于9次大于等于6次 case 3: cout恭喜! 猜对了! 加七分!n;break; /猜的次数小于12次大于等于9次 case 4: cout猜对了! 及格. 加六分!n; /猜的次数小于15次大于等于12次 default : cout猜对了,但不够快啊,继续努力!n; /猜的次数大于等于15次 cout=nn;void Printresult(int b,int * A,int * B) /显示每次用户所猜的结果,供其思考判断。 int i; cout ; for(i=0;i=3;i+) coutbi; cout ; for(i=0;i(*A);i+) coutA; for(i=0;i(*B);i+) coutB; coutn; void main() system(color 9f); /定义一些最基本的变量,以及调用色彩,使界面变得更为丰富多样化。 int i=0,a4,b4,c10,A=0,B=0,score=0; char wantplay=y; srand(unsigned int)time(NULL); /初始化随机数生成器。 Welcome(); Usage(); while(wantplay=y|wantplay=Y) /如果还想玩。Reset(c,a,&score,&A,&B); /初始化变量。while(A!=4) /只要还没猜对,继续猜。Get_b(b); /输入所猜的数。Check_ab(a,b,&A,&B); /电脑判断。Printresult(b,&A,&B); /输出结果。if(A!=4) A=0,B=0;score+; /累计用户总共猜的次数。Printscore(score/3); /打印得分。Iswantplay(&wantplay); /还要不要玩。4.4运行结果1.运行程序,打开主界面,如图4-1所示。图4-1 主界面2.根据菜单提示,输入四个不重复的数字如图4-2所示,输出猜对是数字结果“A”和“B”。图4-2 猜数字结 论紧张的两周数据结构实训很快过去了,通过这周的学习使我巩固了以前的知识并在此基础上对数据结构的特点和算法有了更深的了解, 数据结构是计算机程序设计的重要理论技术基础,它不仅是计算机科学的核心课程,而且已经成为其他理工专业的热门选修课。在计算机的研究和应用中已展现出强大的生命力,它兼顾了诸多高级语言的特点,是一种典型的结构化程序设计语言,它处理能力强,使用灵活方便,应用面广,具有良好的可移植性,同时这两周的学习也提高了我适应实际,实践编程的能力。首先这两周的学习,使我在巩固了原有的理论知识上,培养了我灵活运用和组合集成所学过知识及技能来分析、解决实际问题的能力,使我体会到自身知识和能力在实际中的应用和发挥。其次,激发了我创新意识,开发创造的能力和培养沟通能力。另外,让我进一步熟悉了数据结构的设计应用。每一处编码都是在反复的熟悉数据结构的结构特性,及其语法、函数和程序设计思想的过程,对我数据结构的学习和提高很有益处,并且使我明白了程序设计过程有如解决一实际问题,从解决实际问题的角度,我们可以这样来看:第一要了解这个问题的基本要求,即输入、输出、完成从输入到输出的要求是什么;第二,从问题的要害入手,从前到后的解决问题的每个方面,即从输入开始入手,着重考虑如何从输入导出输出,在这个过程中,可确定所需的数据结构的基本类型线性表、栈、队列、串、数组、广义表、树和二叉树以及图等,然后确定处理过程算法,可得最后结论。最后,在这次实训过程中,我深刻的认识到了自己在学习方面的不足之处,我知道我还有太多的基本的思想没有真正的理解,当然我不会灰心,我会在以后的日子里努力弥补我的不足。总之,两个礼拜的课程设计让我受益匪浅。要学好一门学科,没有刻苦钻研的精神是不行的,只有在不断的尝试中,不断经历失败,然后又不断的尝试才能获得成功。两个多礼拜中,我有过山穷水尽的困惑;有过柳暗花明的惊喜;有过唇枪舌剑的辩论;有过相互鼓励的安慰。两个礼拜的时间我经历了很多,也收获了很多。与其说它是体力与脑力的作业,不如说它是合作精神和毅力的考验。经过这次课程设计,我不仅学到了很多知识和技能,更重要的是我们学会了如何运用所学知识去解决实际问题。对于我本人来讲这次实训的总体表现,我自己还比较满意,每天做到了按时的出勤,上机遵守机房的管理规定,遵循指导老师的安排并能适时地与老师进行沟通,觉得不足的是不能熟练地掌握C语言的设计技巧使编程的结果缺乏效率,不过我相信这只是我的一个开始,我更应该注重的是这次过程,我坚信我会在以后的学习和训练中不断地弥补自己的不足之处,不断的完善自己的编程能力,因为成功需要一点一点积累。
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 中学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!