猜数字游戏 流程图+源代码

萌到你眼炸
707次浏览
2021年01月01日 02:42
最佳经验
本文由作者推荐

千与千寻宫崎骏-简单的道理

2021年1月1日发(作者:吴学谦)


1、问题描述:
该游戏可以由程序随机产生或由用户输入四个0到9之间的数字,且不 重复。
玩游戏者通过游戏提示输入八次来匹配上面所输入的数字。A表示位置正确且数字
正确, B表示数字正确而位置不正确。如果4A0B,表示游戏成功。每次猜错都会
有提示,如果八次都未猜对 ,游戏失败,显示正确答案。按任意键可以返回主菜
单。主要应运数组和循环实现改功能。(对该系统有 兴趣的同学可以在实现系统
基本功能后,完善系统的其它功能,如:破记录功能,若你所匹配的次数小于 纪
录保持者,则为破纪录。)
2、功能要求:
本游戏显示这样的菜单:
(1) 随机产生数据
(2) 用户输入数据
(3) 退出游戏
(4)游戏成功与否都能返回主菜单
测试数据:
测试数据:
第一次输入:
3792
1234
0A2B
第二次输入: 5678
0A1B
第三次输入: 0867
0A1B
第四次输入: 9786
1A1B
第五次输入: 1794
2A0B
第六次输入: 2793
2A2B
第七次输入: 3792
4A0B
游戏成功!!!


3.解题分析
利用主函数调 用子函数来实现模块化程序设计。将游戏的每一个功能设计
成一个子函数,通过函数调用完成游戏。主要 分为两大模块:随机模式和用户模
式。
猜数字游戏的主要功能,由系统自动产生4个随机排列 的整数,或者由用户
输入4个不同的整数,并给用户8次机会猜测数字的数值和排列顺序。如果用户在8次之内没有猜出正确的结果,则提示用户游戏失败,否则提示用户猜数字成
功。
4. 系统总体框图





























退



开始
功能菜单显示









5.函数名称及功能
Int main() 主函数


void begin(void) 初始页函数
void c_input(char *str)输入并判断函数
void c_game(char *temp) 游戏实现函数
void c_rand() 随机模式函数
void c_printf() 用户模式函数
int judgeA(char *a,char *b) 获取A函数
int judgeB(char *a,char *b) 获取B 函数

1. 函数间调用关系


















void

c_game(char

*temp)



void c_printf()

void
begin(void)

void c_rand()

主函数;
int main()












int judgeB(char
*a,char *b)

voidc_input(char
*str)

int judgeA(char
*a,char *b)

7.流程图
(1) void c_rand() 随机模式函数流程图

(2) void c_printf() 用户模式函数流程图



(3)主函数流程图


开始
int a=1
srand(time(NULL))
system(“cls”)
begin()
输出:选择
1

2

3

default



c_rand() break
c_printf()
break
a=0 break
while(a=0)
结束



8.运行结果


(1)起始页

(2)随机模式

(3)用户输入模式







综合题源程序
#include 预处理指令
#include stdlib.h里面定义了五种类型、一些宏和通用工具函数
#include 定义数据输入、输出的函数,主要是用户通过按键盘操作,
如getch()函数
#include 定义字符处理函数的头文件
#include 包含系统时间函数的头文件

void begin(void);初始页
void c_game(char *temp);
void c_rand();
int judgeA(char *a,char *b);获取A
int judgeB(char *a,char *b);获取B
char x[4],y[4];y[4]是用户输入的数字,x[4]是系统随机产生的数字
void c_input(char *str)输入函数
{
int i,j;定义两个变量
input:gets(str);输入一个字符串


putchar('n');格式控制
for(i=0;i<4;i++)循环输入
{
if(str[i]<'0'||str[i]>'9')判断输入是否合法
{
printf(无效输入,请重新输入:
goto input;无条件转移语句
}
for(j=0;j {
if(str[i]==str[j])
{
printf(无效输入,请重新输入:
goto input;
}
}
}
}

void c_game(char *temp)游戏实现函数
{
int a,b,i;
for(i=0;i<8;i++)for循环实现八次输入
{
printf(第 %d 次输入:
c_input(y);
a=judgeA(temp,y);获取a
b=judgeB(temp,y);获取b
if(a==4)游戏成功条件
{
printf(游戏成功,按下任意键返回主菜单。。
getch();
return;
}
else printf(
}
printf(游戏失败,正确答案是:%sn按下任意键返回主菜单。
getch();
}

void c_rand()随机模式函数
{
int i,j;
char data[]=初始化一维数组


system(系统调用cls指令,清除屏幕
printf(随机模式**nn
for(i=0;i<4;i++)
{
j=rand()%(10-i);rand()产生随机数的随机函数,产生的是一个很 大的数,
对其求余限定范围
x[i]=data[j];
data[j]=data[10-i-1];
}
c_game(x);
system(
}

void c_printf()用户模式函数
{

system(
printf(用户输入模式**nn
printf(请输入测试数据:
c_input(x);
system(
printf(用户输入模式**nn
c_game(x);
system(

}
int judgeA(char *a,char *b)获取A函数
{
int i,n=0;
for(i=0;i<4;i++)
if(a[i]==b[i])获取A条件
n++;
return n;
}
int judgeB(char *a,char *b)获取B 函数
{
int n=0;
if(b[0]==a[1]||b[0]==a[2]||b[0]==a[3])n++;
if(b[1]==a[0]||b[1]==a[2]||b[1]==a[3])n++;
if(b[2]==a[0]||b[2]==a[1]||b[2]==a[3])n++;
if(b[3]==a[0]||b[3]==a[1]||b[3]==a[2])n++;
return n;
}


void begin(void)初始页和帮助
{
printf(

printf(
*****n
printf( 猜数字游戏n
printf(游戏帮助:n
printf( 每局游戏,计算机将随机产生一个四位整数,这个整数各个位
上的数字都n
pri ntf(不重复,且首位可以为0。玩家有八次机会来猜这个数,每猜一次,
计算机将告n
printf(玩家:有几个数大小位置都对了,用A表示;有几个数大小对了
但位置错了,用n
printf(表示。八次机会用光后,游戏结束。n
printf( (1) 随机产生数据 (2) 用户输入数据 (3) 退
出游戏 n

printf(
*****n
}

void main()主函数
{
int a=1;
srand(time(NULL));设置随机数种子,一个种子对应一个随机数
while(a!=0)
{
system(
begin();
printf(
switch(getch())switch实现多分支选择结构
{
case '1':c_rand();break;
case '2':c_printf();break;
case '3':a=0;break;
default:printf(
}
}
}

yundonghui-人来人往歌词


offer模板-节日问候短信


个性名字-雀巢咖啡广告语


英语四六级口语考试-初中数学复习


青岛旅游景点图片-三年级作文补习


加州旅馆尾奏吉他谱-招聘驾驶员


蔷薇花枝与灰烬-哥要搞蝴蝶谷


圣诞节礼物-观后感大全