24点扑克牌游戏.pptxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第13章 24点扑克牌游戏 前面学习了C语言各方面的知识,本章通过经典游戏“24点扑克牌”的设计与实现来提高读者的学习兴趣,能够对相关知识有较强的综合运用能力。编写程序实现的“24点扑克牌”游戏,就是利用计算机模拟随机发给用户4个数,用户尽量将这4个数利用加减乘除四则运算最后得到24。 本章讲述的知识点包括: 将中缀表达式转换为后缀表达式的算法的实现。 对后缀表达式的求值算法的实现。 栈的概念及其基本操作。 随机数产生的算法的实现。 13.1 游戏描述 “24点扑克牌游戏”是一个很多人从小到大都在玩的游戏,作为老少皆宜的大众游戏,很多人都将它作为孩子学习数学和开发智力的工具。 最初是几个人使用一副扑克牌来玩此游戏,基本的游戏规则是:随便从一副扑克牌中拿出四张牌,参与游戏的人将这四张扑克牌上的数字(其中J算11、Q算12、K算13)用加、减、乘、除、四则运算(包括括号)将四个数组成一个表达式,使表达式的结果为24。看谁算得最快,谁就赢了。 使用计算机模拟该游戏,就是随机产生4个1~13之间的整数,由用户输入它们组合后的表达式,计算机计算该表达式的值,判断是否为24。 13.2 游戏解析 知道了游戏的基本规则,下面开始分析设计了。大家都知道,我们直接通过键盘输入算术表达式,计算机系统是不会给我们算出表达式的结果的。那么,如何计算出表达式的值呢? 经过分析,实现这个游戏有两个关键点,一个是如何处理用户输入的表达式,以便为计算表达式的值作准备,另外一个就是对表达式如何求值。 13.2.1 处理用户输入得表达式 现在,将我们平时输入的表达式称为中缀表达式,而计算机存储一般都是后缀表达式。所以,我们要将用户输入的中缀表达式转换为后缀表达式后存储。 1.算术表达式的形式 2.将中缀表达式转换为后缀表达式 13.2.2 对后缀表达式求值 由于后缀表达式中没有括号,不需判别优先级,计算严格从左向右进行,故计算一个后缀表达式要比计算机一个中缀表达式简单得多。在我们的程序中就是对转换成的后缀表达式进行计算,这样比较方便。 对后缀表达式进行求值计算的算法思想是: (1)建立一个栈(STACK类型); (2)从左到右读后缀表达式,读到数字就将它转换为数值压入栈中,读到运算符则从栈中依次弹出两个数分别到num2和num1,然后以“num1 运算符 num2”的形式计算出结果,再将结果压加栈中; (3)如果后缀表达式未读完,就重复上面过程(2),直到读到结束符“\0”为止,最后输出栈顶的数值则为最后表达式的结果。 13.3 两个重要函数的实现 通过前面的分析,那么下面如何具体的用C语言实现将中缀表达式转换为后缀表达式的和对后缀表达式进行求值计算的这两个函数呢? 13.4 “24点扑克牌游戏”的实现 两个重要算法实现了,那么“24点扑克牌游戏”的实现基本就没有太大问题了。但是为了更好的体现游戏并实现其功能,还要有几部分辅助的函数。 13.4.1 栈的基本操作函数的实现 在代码13-1和代码13-2中,大量的用到了栈的相关操作,所以还要在程序中编写相应的函数来实现栈的操作。由于栈的操作都是在一端进行,所以本程序实现栈的存储使用了动态存储的链表形式。我们可以将链表的表头作为栈顶,这样不但可以利用链表头指针就可以很方便实现栈的操作,还有利于空间的合理分配。 栈的基本操作主要有判断栈是否为空、入栈、出栈、读取栈顶元素的值和读取栈顶元素的值并出栈。 13.4.2 随机发四张扑克牌函数的实现 游戏的玩法在实际中是随便发四张扑克牌,根据这四张牌上的数进行加减乘除运算结果凑成24。 我们编写的程序要模拟发牌的过程,这如何解决?很简单,只需要要计算机随机产生四个1~13之间(扑克牌上的数是1~13之间)的整数即可。在C语言中,使用random函数就可产生一个随机数。 13.4.3 检查输入表达式的正确性函数的实现 由于对用户输入的表达式有特殊的要求(在每个数字结束后要加一个“.”),也为了程序的完整性和安全性,在程序中编写了检查用户输入的表达式是否符合要求的函数。 13.4.4 main函数的实现 main函数主要完成的事情就是理清思路,将前面分析设计的函数有机的组织在一起,实现真正的“24点扑克牌”游戏。 13.5 小结 本程序中,最主要是实现了中缀表达式转换成后缀表达式和后缀表达式计算的两个算法。在两个算法中,都使用了栈。虽然两个栈的类型一样,但是在中缀表达式转换成后缀表达式算法中,栈是用来存放运算符和左括号的;而在后缀表达式计算的算法中栈是用来存放参与运算的数。

文档评论(0)

tianebandeyazi + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档