- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
目 录
1、任务书...............................1
2、需求分析.............................7
2.1程序的功能........................7
2.2输入输出的要求....................7
3、概要设计.............................7
4、详细设计.............................8
4.1各模块的类C码算法................8
4.2流程图.............................9
5、调试分析以及设计体会.................10
5.1调试分析...........................10
5.2心得体会...........................12
6、使用说明.............................13
7、附录.................................14
2、需求分析
2.1程序的功能
程序运行后产生4个扑克牌,对应4个整数,其中每个数字只能使用次;任意使用 + - * / ( ) ,构造出一个表达式,使得最终结果为24,这就是常见的算24点的游戏)
24算法游戏的功能模块不多,也比较容易实现。基本思想就是由程序先随机产生4张扑克牌,每张扑克牌对应一个整数,所以首先要有一个随机产生扑克牌的模块。接下来就是用户用程序产生的扑克牌来算24点了,所以要有一个输入用户去接表达式的模块。用户输入完成后,程序就开始计算表达式了,所以要有一个计算表达式的模块。程序计算完表达式后就要判断用户输入的表达式是不是为24点了,所以还有一个判断表达式正误的模块。这4个模块是逐步递进的,是要前一个模块的功能完成后,才能执行后一个模块,否则程序就将出错。程序所涉及的数据结构主要为整形和字符型,整形数据结构主要是用来计算表达式的,字符型数据结构主要是用来输入表达式的。程序所涉及的数据库结构主要有数组和栈,数组在计算表达式和产生扑克牌是都要用到,栈只是用来计算表达式的。
4、详细设计
4.1各模块的类C码算法
随机产生扑克牌函数
for(循环4次)
{ 随机产生一个1到13之间的数,用switch语句输出产生的数,作为扑克牌的数,再随机产生一个数,也用switch语句输出,作为扑克牌的花色。把产生的数和花色组装成一个扑克牌用图形的方式显示出来;}
将算术表达式转换为后缀表达式
While(从exp读取字符ch,ch!=’\0’)
{ ch为数字:将后续的所有数字均依次存放到postexp中,并以字符“#”标志数值串的结束;
ch为做括号“(”:将次括号进栈道运算式栈op中;
ch为右括号“)”:将运算符栈op中的左括号“(”以前的运算符依次出栈并存放到postexp中,然后将左括号“(”删除;
ch为“+”或“-”:将运算符栈op中的左括号“(”以前的运算符依次出栈并存放到postexp中,然后将“+”或“-”进栈;
ch为“*”或“/”:将运算符栈op中“*”或“/”运算符依次出栈并存放到postexp中,然后将“*”或“/”进栈;}
若字符串exp扫描完毕,则将运算符栈op中的所有运算符依次出栈并存放到postexp中。
计算后缀表达式
While(从postexp读取字符ch,ch!=’\0’)
{ ch为“+”:从栈st中出栈两个数值a和b,计算c=a+b;将c进栈;
ch为“-”:从栈st中出栈两个数值a和b,计算c=b-a;将c进栈;
ch为“*”:从栈st中出栈两个数值a和b,计算c=a*b;将c进栈;
ch为“/”:从栈st中出栈两个数值a和b,若a不为零,计算c=b/a;将c 栈;
ch为数字等:将连续的数字串转换成数值d,将d进栈;}
图 3.2.1
计算后缀表达式的流程图
图 3.2.2
5、调试分析以及设计体会
5.1调试分析
当程序编译没有错误的时候,我觉得我的程序快要成功了。可是在运行的时候老是产生四张一样的扑克牌,但是单步调试的时候又能够产生四张不一样的扑克牌,这个困难难了我好久,直到答辩的时候老师帮我找到了原因所在,解决我这个困难。当程序能够正确运行时,首先进入的是如图5.1.1所示的界面。
图 5.1.1
这时我们就可以输入算24的表达式了,如10/5*4*3就等于24,所以我们就可以计算出正确结果来了,并可以继续游戏,如图5.1.2所示。这时程序又会重新产生四张扑克牌,这次我来测试一下当输入了与所发的扑克牌不一致的牌,看程序能不
文档评论(0)