资源描述
**大学
课 程 设 计 说 明 书
学生姓名: 学 号:
学 院: 信息与通信工程学院
题 目: 24点游戏程序设计
指引教师:
职称:
年1 月19 日
**大学
课程设计任务书
14/15 年第 一 学期
学 院: 信息与通信工程学院
专 业: 电子信息科学与技术
学 生 姓 名:
学 号:
题 目: 24点游戏程序设计
起 迄 日 期: 1月12日~01月23日
课程设计地点:
指 导 教 师:
学科部主 任:
下达任务书日期: 年 1 月 12 日
课 程 设 计 任 务 书
1.设计目:
通过设计,明确24点游戏设计思想和设计过程,夯实掌握VC、C++或C语言编程整体框架和环节,使学生具备一定综合分析问题和解决问题能力。
2.设计内容和规定(涉及原始数据、技术参数、条件、设计规定等):
功能阐明:
具备24点游戏各项功能。
设计规定:
课程设计目在于培养学生综合素质,规定学生做到:
(1)依照题目规定查阅关于资料,拟定方案,写出设计方案;
(2)依照对选题理解,消化查阅资料,给出有关设计流程图;
(3) 在C语言、C++或VC环境下,实现各项功能;
(4) 对成果进行分析总结。
3.设计工作任务及工作量规定〔涉及课程设计计算阐明书(论文)、图纸、实物样品等〕:
设计工作任务:
(1) 理解课题背景,掌握基本技术,制定程序设计框架。
(2) 完毕设计内容:涉及程序流程图和完毕实现功能程序代码,写出设计阐明书。
(3) 设计答辩。
工作量规定:
(1) 通过查阅资料理解与24点游戏程序设计有关基本理论、原理以及背景知识,理解选题意义;
(2) 掌握与24点游戏程序有关设计思想、原理、设计框架和环节;
(3) 完毕24点游戏程序功能和程序代码实现;
(4) 通过实验验证程序代码可行性;
(5) 给出设计总结。
课 程 设 计 任 务 书
4.重要参照文献:
Visual C++课程设计案例精编
C++程序设计教材书
C语言程序设计教程
5.设计成果形式及规定:
程序运营成果;
课程设计阐明书。
6.工作筹划及进度:
1月12日 ~ 1月 14 日:查资料
1月15日 ~ 1月 17日:在指引教师指引下设计方案及程序
1月 18日 ~ 1月20日:学生上机调试程序,指引教师辅导
1月 21日~ 1月22日:完毕课程设计阐明书
1月23日:答辩
系主任审查意见:
签字:
年 月 日
目录
一、摘要………………………………………………………6
二、核心词……………………………………………………6
三、设计目、意义…………………………………………7
四、流程图……………………………………………………7
五、设计内容:(正文)……………………………………9
六、成果分析…………………………………………………9
七、设计心得…………………………………………………10
八、参照文献…………………………………………………10
摘要:C++课程设计是学习完《C++程序设计》课程后进行一次全面综合性上机实验。其目在于为学生提供了一种既动手又动脑,独立实践机会,将课本上理论知识和实际有机结合起来,锻炼学生分析解决实际问题能力。提高学生适应实际,实践编程能力。
计算24点:任意输入4位数字,运用+,-,*,/四则运算使之得到成果 24。输出所有不同算法计算表达式,可为运算优先级而使用括号。
核心词:24点、游戏
设计目、意义:通过设计,明确24点游戏设计思想和设计过程,夯实掌握VC、C++或C语言编程整体框架和环节,使学生具备一定综合分析问题和解决问题能力。
设计内容:(正文)
1重要办法为遍历和递归。
2把输入四个数放在一种数组n[4]中,然后任取其中任意两个(不能取同一种--即不能浮现自己和自己运算状况),然后用一种for和一种switch语句来实现这两个数加减乘除运算, 然后把运算成果放到另一种数组b[4]中并记录此运算表达式(放到一种大一点数组tm[4][25]中),同步把其她两个没用到数也放到该数组中,然后重复以上过程(用遍历实现),最后先鉴定是不是最后一层运算,是话在鉴定最后成果是不是等于24,等于24话就把那个纪录运算式数组输出。然后考虑到不能浮现重复(例如:1*2*3*4和2*4*3*1等等)在遍历同步记录了第一次运算成果,第一次运算运算符,第二次运算成果,第二次运算运算符和第三次运算运算符,对输出时候做限定(例如:对运算符全*只输出一遍等等)。
3本次所需函数及语句重要有两个函数,一种主函数,用来输入四个数,并且完毕初始化。尚有一种count(float a[],char tem[][25],int n)函数,用来完毕遍历,递归,与输出,其中a[]中存储要输入4个数,tem[][25]中放计算环节,n是a[]中元素个数。在函数体内还定义了b[4]和tm[4][25]用来完毕递归,函数一开始先鉴定输出条件(与否是第三次运算,成果与否等于24),如果不满足条件就做遍历与递归,遍历用了3个for循环和1个switch语句来完毕,然后为递归准备数据,用sprintf函数将运算式输出到数祖tm[]中,在输入运算式同步把括号输到tm[]中,然后提取第一次运算运算符与运算成果,提取第二次运算运算符与运算成果和提取第三次运算运算符,然后备份没用到数据(为递归之用)。接下来进行递归重复上述过程。
成果分析:
1.全面性:
此问题规定输出成果为24计算表达式,并且规定输出要全面,我考虑用for循环与递归实现遍从来保证输出全面性,考虑到递归‘一归究竟',每一次完整递归都代表一种算法(详情见算法)。
2.输出鉴定和四位数字类型:
在输出时候对最后成果等于24鉴别,由于考虑到有除法,有也许半途成果也许会浮现不能整除状况与小数,因此输出四个数都设为float型,且输出鉴定期候用近似鉴定法,而不直接写让最后成果等于24(详情见算法)。
3.重复性:
如果用循环与递归保证了输出24表达式全面性,但不可避免会浮现重复,才开始我想在遍历与递归时,加某些限定条件来消除重复但是这样做不但会出错,还不能保证它输出全面性。于是我想在输出时候加限定条件,使重复只输出一遍。
但是对于输入那4位数字中如果有重复话,程序成果还是会浮现重复,此问题尚未解决.(详情见算法)。
4.括号问题解决:
对于括号问题,我规定对每一步计算表达式,除了*之外,+,-,\都加上括号,即让程序按自己规定方向执行,输出括号只是让人能看懂,其实在运算时不起作用(详情见算法)。
5.输出:
输出方面我觉得用了遍历因此在每一层遍历都把运算表达式存到一种较大数组中,在输出时候如果满足输出条件(在遍历时纪录每次递归第一次运算成果,第一次运算运算符,第二次运算成果,第二次运算运算符和第三次运算运算符),就直接把那个数组里内容输出,遍历会直接去寻找表达式里表达式(详情见算法)。
设计心得:
本次程序设计我重要在编程上收获诸多,本次程序设计没有用到很难算法,在编写前期只运用了枚举法,然后嵌入使用较为繁琐,而没有浮现编译上问题,我在同窗协助之下进行了完善。 本次程序数据构造重要就是用遍历和递归来实现,独立做完程序,让我对c++有更深一步理解,也有进一步掌握。整个程序像树同样,通过算法等有机结合,其中有着一次次递归。总体来说,就是对这颗树做遍历,找出符合规定运算式。但是本程序尚有局限性之处,咱们对于重复性问题尚未有完全解决,但可以消掉一某些重复。很感谢这次课程设计,它使我更加深刻地体会到多看专业书重要性,只有掌握了一定量专业知识才干得心应手地解决诸多问题;此外,做任何事都要有耐心,不要一遇到困难就退缩;在学习和工作中要时刻谨记“团结”二字,它好比通向成功铺路石,不可或缺。
参照文献:
Visual C++课程设计案例精编
C++程序设计教材书
C语言程序设计教程
展开阅读全文