c语言编程--猜数字游戏

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

电热水器加热时间-旗手

2021年1月1日发(作者:卜韫蕙)




计算机实习报告

面向过程编程
用C语言求解实际问题


















一、问题描述
游戏类第15个任务——猜数字游戏

任务描述:
计算机从0~9这10个数字中任意选择n个不重复数字(n≤10)组成一个5 位数(0
不出现在首位),然后让玩家猜该数。若玩家猜对该数,游戏则结束;若玩家猜得不对,则计算机告知玩家,数字猜对了且位置也正确的数字有几个;数字猜对了但位置不正确的数字
有几个, 然后让玩家继续猜。对每个数玩家最多有m(m>0)次猜的机会。
功能要求:
玩家可自行设置被猜数的位数n和最多猜测机会数m。
玩家可用键盘输入其所猜数,也可通过鼠标点选数字给出其所猜数。
当玩家没有猜对时, 用不同颜色的文字显示数字猜对了且位置也正确的数字个数和数
字猜对了但位置不正确的数字个数,且显 示文字要直观、易理解。例如,正确答案为52467,
玩家所猜为53269,则有2个数字(即5和 6)数字对位置也对;有1个数字(即2)数字
对但位置对。
玩家猜测m次后仍未猜对,则 向玩家公布答案,并询问玩家是否继续进行新游戏。
此时玩家可以选择继续进行新游戏或退出游戏。 < br>当玩家猜对时,输出“恭喜你猜对了”,并询问玩家是否继续进行新游戏。此时玩家
可以选择继 续进行新游戏或退出游戏。
玩家可以在游戏进行过程中选择放弃继续猜数。玩家放弃继续猜数后,询 问玩家是否
继续进行新游戏。此时玩家可以选择继续进行新游戏或退出游戏。
若玩家猜对数 字后选择退出游戏时,询问玩家是否记录其成绩,如果选择记录,则进
一步要求玩家输入用户名;否则, 直接退出。
游戏维护一个排行榜,按照猜对一个5位数所用猜测次数由少到多的顺序排序,并在记录完玩家成绩后显示给玩家。
二、需求分析
1)猜数字游戏软件的功能有:
进入主菜单,输入挑战的次数,输入猜测的数字,若在此次数之内没有猜对,则提示挑
战失败,是否继 续挑战。
若挑战过程中途放弃,则提示是否继续挑战。


若挑战成功,则提示 是否记录成绩,输入用户名,计入排行榜。排行榜会按照猜测次数
由小到大进行排序。
在猜数 字的过程中,每猜一个数字都会提示,数字正确且位置正确的个数是,数字正确
但位置不正确的个数是, 提示用户继续输入。
2)输入要求:
应用程序运行后,在屏幕上显示一个菜单。用户可以根 据需要,选定相应的操作项目。
进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。
3) 输出要求:
(1)应用程序运行后,在屏幕上显示一个菜单。
(2)要求用 户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式
及结束方式等。

三、程序设计
针对需要做如下设计:
(1)数据结构设计
1、定义一个结构体数组,储存用户名。
struct paihang
{
char name[N];*用户名*
}s[N],s1,s2;
2、第一一个全局变量的数组,存储用户输入与系统随机数比较中相同的数字
int w[N];
int q=0;
(2)模块设计
本模块主要实现功能的选择
1. 定义一个主函数菜单,选择开始游戏,退出,进入排行榜。
2. 比较用户输入的 数与系统随机数是否相同,利用取余的方法,用用户输入的个位数与系
统随机数的个位相比,十位与十位 相比,以此类推,相同记录加一,得到数字相同,位置也
相同的个数。

利用取余的方 法,用用户输入的个位数与系统随机数的每一位比较,相同加一,并将相
同的数字存储到数组中方便查询 。然后,比较输入的数字的每一位,利用取余的方法,用个


位与十位相比,若 相同,则比较数组中是否含有这个数,含有则减一,跳出循环,由十位与
百位相比,不含有则继续,以此 类推,得到数字相同的个数,用数字相同的个数减去数字相
同位置不同的数字个数。
3. 建立一个排行榜,将猜对的次数进行保存,并按由小到大的次数进行排行。

(3)主程序设计
调用一个菜单函数,显示开始进入游戏,排行榜,退出游戏,排除非法输入。

四、程序实现
(这一部分主要是说子程序的实现,以及引用的语言资源。具体来说,就是给出 程序模块
的实现)
(1)程序总体思路:
进入主页面菜单,选择管理员模式或用户 模式。管理员模式要输入密码,方可进入。选
择录入,修改和删除歌曲信息。用户模式中,包含各种查询 功能,按编号,属性,歌曲
名笔画,歌手名字的字典顺序,作者名字的字典顺序进行查询,点播。
(2)各模块函数的实现
1. void menu()主菜单信息函数
进入主菜单,输入挑战的次数,排除非法输入。
2. void cai()实现猜数字功能函数
输入一个五位数,排除非法输入,当玩家没有猜对时,用不同颜色的 文字显示数字猜对
了且位置也正确的数字个数和数字猜对了但位置不正确的数字个数。
当玩家 猜对时,输出“恭喜你猜对了”,并询问玩家是否继续进行新游戏。此时玩家可
以选择继续进行新游戏或 退出游戏。
玩家可以在游戏进行过程中选择放弃继续猜数。玩家放弃继续猜数后,询问玩家是否继续进行新游戏。此时玩家可以选择继续进行新游戏或退出游戏。
若玩家猜对数字后选择退出游戏时 ,询问玩家是否记录其成绩,如果选择记录,则进一
步要求玩家输入用户名;否则,直接退出。
3. void amenu()排行榜功能函数
按照猜对一个5位数所用猜测次数由少到多的顺序排序。
4. void jieshu()结束游戏函数
提示‘谢谢您的参与,再见!!’


(3)菜单的实现
程序主菜单在主程序中,实现伪代码是:
先输出菜单的基本信息,再进行选择:
int number,ret;
printf(

























printf(欢迎进入 猜数字游戏******************nn
printf(开始游戏 printf(结束游戏nn
printf(排行榜
printf(
do{









do{







printf(请选择选项(1-3):
ret=scanf(
if(ret!=1)
{


}
printf(输入错误,请重新输入
fflush(stdin);
}while(ret!=1);
}while(number>3);
switch(number)
{
case 1: system(开始游戏
case 2: system(排行榜
case 3: system(结束游戏


开始
用户输入,开始游戏
输入挑战次数
输入一个五位数
判断是否与随机数相同

相同

进行下一次判断
结束


五、程序测试
猜数字游戏主菜单




游戏中








退出游戏

六、设计小结
本程序完成了猜数字游戏的功能,可 以实现每猜一次数字,都提示数字与位置都相同
和数字相同但位置不同的个数,以及记录成绩,实现排行 榜等。


优点是,用不同颜色的文字显示数字猜对了且位置也正确的数字个数和数字猜对 了但
位置不正确的数字个数,且显示文字要直观、易理解。

七、使用说明
本程序提交的是for DOS源代码,所以用VC打开该程序,再经过编译、连
接,将简单抓 图1中的主菜单,以后根据屏幕上的提示操作就可以进行猜数字游戏了。
八、附录
程序源代码参见C语言程序文件。其中有详细的注释解释了各模块的功能及主要
语句的作用。

脖子后面有痣代表什么-万里长征人未还的上一句


朋友的朋友歌词-如果我变成回忆歌词


6字网名-得过且过的近义词


中秋月饼图片-医学伦理学


如何治理雾霾-人物描写精彩片段


网络推广宣传-70个图片猜地名


100米跑步技巧-中专毕业生自我鉴定


企鹅是鸟类吗-兴致勃勃的意思