1、设计题目:猜数字游戏 目目 录录 目录目录 目 录. - 1 - 1 程序分析与设计 2 1.1 功能分析与任务分配 2 功能分析 2 1.2 流程图. 2 1.3 数据结构 4 2 详细设计 4 3 参考文献 5 4 附录 5 5 总结 . 错误错误! !未定义书签。未定义书签。 C 程序设计课程设计实验报告 1 程序分析与设计 1.1 功能分析与任务分配 功能分析 此游戏程序通过不断输入以及逐渐数位对应的方法,一步步的缩小猜测范 围,最终猜出机内已存储数字,达到健脑益智的效果。 此数字游戏没有设置猜测次数的上限. 简单策略 这种策略非常直接每次都猜可能答案中的第一个。例如,首先猜测 123
2、4,如果得到的反馈是 2A2B,那可能的答案包括 1256,1257,5236, 等等。根据简单策略,下一次就猜 1256,因为 1256 是所有可能答案中最小 的数字。 简单策略的优点是速度非常快,缺点是所需猜测次数很多。 启发式策略 这类策略是猜数字游戏最常用的解法。其算法步骤如下: a. 首先猜 1234,得到第一个反馈(xAyB) 。 b. 从所有数字中,筛选出满足已知反馈的所有可能数字,称之为“可能 集”。 c. 对于所有数字(而不仅限于筛选出来的可能集) ,逐一评估每个数字 的“好坏”,并给其打分。选取得分最高的那个数字猜。如果有多个数 字的评分一样高,则优先选取可能集中的数字。
3、d. 重复步骤 b-c,直到猜出 4A4B 为止。 (2)任务分配 李晓飞和谭程方同学:实现猜测数据后的*A*B 编写功能,即规则 c. 王璐和王爽同学 :实现统计每次猜对数字个数的功能,即规则 d. 王鹏宇同学 : 实现统计每次猜对的数字并且位置也对的数字个数, 即规则 e. (备注:在实际操作中由于每位同学所用变量习惯以及掌握程度不同,所 以此程序任务分配可能会部分的与上不符,最后还要对任课老师魏玉芬以 及指导老师丁艳清表示衷心的感谢,感谢两位老师给予我们的帮助! ) 1.2 流程图 C 程序设计课程设计实验报告 Y N N N Y Y N Y 开始 i4 j4 xi=yi j4 输入 y
4、j xi=yj 输出 n1 输出 n2 n2=4 输入非 0 数字 输入 0 输出“恭喜你答对了” 输出 “正确答案是 2569” 结束 n1An2B C 程序设计课程设计实验报告 1.3 数据结构 k 猜测的次数 b 一次猜测后用来判断是否继续进行新的猜测 n1 猜对的数字数 n2 猜对并且位置也对的数字数 i、j 用来表示两个数组的对应数位数 x4=2,5,6,9 定义将要被猜测的数字为 2569 y4 从键盘输入的四位数 2 2 详细设计详细设计 通过逐步减少范围来猜测正确结果 C 程序设计课程设计实验报告 3 3 参考文献参考文献 1谭浩强著C 语言程序设计北京:清华大学出版社 2005 2百度知道 4 4 附录附录 #include void main() int k,n1,n2,b,x4=2,5,6,9,y4; /定义将要被猜测的数字为 2569/ int i=0,j=0; for(k=1;k+) /只要不放弃,就可以使猜测无数次的进行下去/