《C语言程序设计》课程设计---猜数字游戏

绝世美人儿
889次浏览
2021年01月01日 04:10
最佳经验
本文由作者推荐

林森火小学-写给妈妈的话暖心到哭

2021年1月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 功能分析与任务分配
功能分析
此游戏程序通过不断输入以及逐渐数位对应的方法,一步步的缩小猜测范
围 ,最终猜出机内已存储数字,达到健脑益智的效果。
此数字游戏没有设置猜测次数的上限.
简单策略
这种策略非常直接——每次都猜可能答案中的第一个。例如,首先猜测
1234,如果得到的反馈是 2 A2B,那可能的答案包括1256,1257,5236,
等等。根据简单策略,下一次就猜1256 ,因为1256是所有可能答案中最小
的数字。
简单策略的优点是速度非常快,缺点是所需猜测次数很多。
启发式策略
这类策略是猜数字游戏最常用的解法。其算法步骤如下:
a. 首先猜 1234,得到第一个反馈(xAyB)。
b. 从所有数字中,筛选出满足已知反馈的所有可能数字,称之为“可能
集”。
c. 对于 所有数字(而不仅限于筛选出来的可能集),逐一评估每个数字
的“好坏”,并给其打分。选取得分最高 的那个数字猜。如果有多个数
字的评分一样高,则优先选取可能集中的数字。
d. 重复步骤 b-c,直到猜出 4A4B为止。

(2)任务分配
李晓飞和谭程方同学:实现猜测数据后的*A*B编写功能,即规则c.
王璐和王爽同学 :实现统计每次猜对数字个数的功能,即规则d.
王鹏宇同学 :实现统计每次猜对的数字并且位置也对的数字个数,
即规则e.
(备注:在实际操作中由于 每位同学所用变量习惯以及掌握程度不同,所
以此程序任务分配可能会部分的与上不符,最后还要对任课 老师魏玉芬以
及指导老师丁艳清表示衷心的感谢,感谢两位老师给予我们的帮助!)




1.2流程图


《C程序设计》课程设计实验报告










































开始
j<4
Y
输入y[j]
N
i<4
N
Y N
j<4
Y
x[i]==y[j] x[i]==y[i]
输出n1
输出n2
n1An2B
n2==4
N Y
输出“恭喜你答对了”
输入非0数字 输入0
输出“正确答案是2569”
结束


《C程序设计》课程设计实验报告
1.3 数据结构
k 猜测的次数
b 一次猜测后用来判断是否继续进行新的猜测
n1 猜对的数字数
n2 猜对并且位置也对的数字数
i、j 用来表示两个数组的对应数位数
x[4]={2,5,6,9} 定义将要被猜测的数字为2569
y[4] 从键盘输入的四位数

2 详细设计
通过逐步减少范围来猜测正确结果




《C程序设计》课程设计实验报告
3 参考文献
[1]谭浩强著《C语言程序设计》北京:清华大学出版社 2005
[2]百度知道
4 附录
#include
void main()
{
int k,n1,n2,b,x[4]={2,5,6,9},y[4]; 定义将要被猜测的数字为2569
int i=0,j=0;
for(k=1;;k++) 只要不放弃,就可以使猜测无数次的进行下去
{
n1=0;n2=0; n1用来统计猜对的数字数,n2用来统计猜对并且位置也对的
数字数
printf(请输入四个不同的数字:
for(j=0;j<4;j++)
scanf(用来输入四个不同的数字
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
if(x[i]==y[j]) n1++; 统计n1

}
for(i=0;i<4;i++)
if(y[i]==x[i]) n2++; 统计n2
printf(
printf( 给出本轮猜测的结果
if(n2==4) break;
printf(如果想放弃,请输入0;如果不想放弃,请输入任意非零数字n
scanf(
if(b==0)
printf(正确答案是:2569
else printf(请继续猜测n
}
if(n2==4)
printf(恭喜你答对了!

}


《C程序设计》课程设计实验报告

5总结


C语言是我们在大学学习中接触的第一种计算机语言,将其作为我们学生学
习程序设计技术的入门课程, 我想这与C语言的特点是分不开的。C语言不但可
以编写系统软件,而且可以根据用户的需要编写出满足 用户要求的应用软件,尤
其是C语言具有很好的对计算机的硬件编程能力。同时,C语言具有逻辑性强、
处理问题周密、严谨的特点,是集知识和技能于一体,实践性很强的课程。我们
通过学习C语言 可掌握程序设计的一些基本方法和技巧。然而C语言的数据类型
较多、表达式丰富、语法结构较复杂,使 它成为一门教师难教、学生难学的课程。
就拿这次来说吧,程序是很简单的,但是遇到的困难也不少。下 面我见对我们组
编的这套程序做一下概述:
我们选的是编写一个猜字游戏,要求才一个四位数 字,每次猜完,要有一个
提示“*A*B”其中A前的*代表本次猜对了的数字,B前的*代表本次猜对 了的数
字并且位置正确的个数。
由于程序较小,没有太过困难的地方,所以我们最主要用到的 是for循环语句,
首先,假设这四位数是2569,我们定义n1,n2,让n1代表猜对的数字个数 ,让
n2代表猜对的数字并且位置准确的个数,然后再定义一个k是猜测的次数(这
里为了很好 的显示猜测的过程),接下来开始执行这个语句,也就是我们利用的
for循环语句,for(j=0; j<4;j++)我们先把猜的数用这个循环体执行,进而输入
四个不同的数,for(j=0;j<4 ;j++) if(x[i]==y[j]) n1++;再用一次循环体统计
出n1,这样循环下去 直至正确数字被猜出。同样n2也是如此。在编译过程中发
现利用for循环语句只用一条语句可以了, 相对于do„while更简单一些。
程序大体编完了,但是分配是因为大家思想不同,对于不同的地 方用的语句
不一致,所以在把所有程序整合到一起时,不能正常的运行,做了多处修改,最
后才 能运行的,其次再将语句转为流程图时遇到了不小的麻烦,对一些较为复杂
的程序,转为ns图比较麻烦 ,有次看到我们的弊端,对于这种转化逻辑能力太
差,经过反反复复的修改总算完成。
在这次 实习中我们的程序还有一个遗憾,算是缺陷吧!就是猜数字的数字是
事先用int定义好的,我们本意是 在每次程序运行开始时,产生一个随机四位数,


《C程序设计》课程设计实验报告
这样需引用#include #include 可惜不大会用,最后只能
放弃。这看出我们才学了些皮毛,对于一些高等的函数体 不会引用,
我觉得还是多看些书,多实践,养成良好的编程习惯,在实践的同时多思考
问题, 多看别人优秀的解题思路与方法,多看别人优秀的代码,尝试自己去实现
或者说模仿着去实现,让别人对 你的代码多提意见,探究别人的思维过程,增强
自己的思维能力,尤其像这样的实习,我们应该多交流, 多交换方法,才能进步。

出卖-工程竣工报告


赛马二胡独奏-长隆水上乐园


傲慢与偏见电影-匆匆教学设计


写春景的诗句-聋哑


颠沛流离的意思-小学生暑假总结


王几何-春之怀古


笔记本风扇润滑油-来世


胡萝卜饺子馅的做法-德育工作总结