c语言编程--猜数字游戏 联系客服

发布时间 : 星期六 文章c语言编程--猜数字游戏更新完毕开始阅读08716f8680eb6294dd886cbd

计算机实习报告

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

一、问题描述

游戏类第15个任务——猜数字游戏

任务描述:

计算机从0~9这10个数字中任意选择n个不重复数字(n≤10)组成一个5位数(0不出现在首位),然后让玩家猜该数。若玩家猜对该数,游戏则结束;若玩家猜得不对,则计算机告知玩家,数字猜对了且位置也正确的数字有几个;数字猜对了但位置不正确的数字有几个,然后让玩家继续猜。对每个数玩家最多有m(m>0)次猜的机会。

功能要求:

?玩家可自行设置被猜数的位数n和最多猜测机会数m。

?玩家可用键盘输入其所猜数,也可通过鼠标点选数字给出其所猜数。

?当玩家没有猜对时,用不同颜色的文字显示数字猜对了且位置也正确的数字个数和数字猜对了但位置不正确的数字个数,且显示文字要直观、易理解。例如,正确答案为52467,玩家所猜为53269,则有2个数字(即5和6)数字对位置也对;有1个数字(即2)数字对但位置对。

?玩家猜测m次后仍未猜对,则向玩家公布答案,并询问玩家是否继续进行新游戏。此时玩家可以选择继续进行新游戏或退出游戏。

?当玩家猜对时,输出“恭喜你猜对了”,并询问玩家是否继续进行新游戏。此时玩家可以选择继续进行新游戏或退出游戏。

?玩家可以在游戏进行过程中选择放弃继续猜数。玩家放弃继续猜数后,询问玩家是否继续进行新游戏。此时玩家可以选择继续进行新游戏或退出游戏。

?若玩家猜对数字后选择退出游戏时,询问玩家是否记录其成绩,如果选择记录,则进一步要求玩家输入用户名;否则,直接退出。

?游戏维护一个排行榜,按照猜对一个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()结束游戏函数 提示‘谢谢您的参与,再见!!’