目录
题目要求
写一个猜数字游戏
1.自动产生一个1 - 100之间的随机数
2.猜数字
a .猜对了,就恭喜你,游戏结束
b .你猜错了,会告诉猜大了,还是猜小了,继续猜,直到猜对 I
3.游戏一个一直玩,除非退出游戏
解题思路
1.写出基本框架
#include <stdio.h>
void meau()//菜单
{
}
void game()//游戏
{
}
int main()
{
int input = 0;
meau(); //打印游戏菜单,
scanf_s("%d", &input);
switch (input)//规定1为开始游戏,2为结束游戏
{
case 1:
printf("游戏开始!\n");
game();//实现游戏功能
break;
case 2:
printf("游戏结束!\n");
break;
default:
printf("错误!请重新输入\n");
break;
}
return 0;
}
2.题中要求游戏能够一直游玩,除非玩家主动选择结束,所以需要用到循环使game()能够不断执行。
do
{
meau(); //打印游戏菜单,
scanf_s("%d", &input);
switch (input)//规定1为开始游戏,2为结束游戏
{
case 1:
printf("游戏开始!\n");
game();//实现游戏功能
break;
case 2:
printf("游戏结束!\n");
break;
default:
printf("错误!请重新输入\n");
break;
}
} while (input != 2); //当input值为2时结束循环
3.实现meau()函数
void meau()
{
printf("*********************************\n");
printf("********** 1.开始游玩 *******\n");
printf("********** 2.退出游戏 *******\n");
printf("*********************************\n");
}
4.实现game()函数
a.生成随机数
C语言中生成随机数需要用到以下几个函数:
rand():在头文件#include <stdlib.h>中,返回类型为int(即生成的随机数),返回的数在0-32767之间。需与srand函数配套使用,不然生产的数并不随机。
srand():在头文件#include <stdlib.h>中,需在括号中用time()函数加入时间戳。()内需填入unsigned int 类型。一般情况下调用一次就可以了。
time():在头文件#include <time.h>中,返回值为int,可被强制类型转化。
2.判断玩家猜出的数是否正确:当玩家猜的大或小时都输出提醒并让再次猜数
void game()
{
int n = rand() % 100 + 1;
//生成随机数,任意一个数与100取余后取值在0-99
int num = 0;
while (1)
{
printf("请输入你猜的数字: ");
scanf_s("%d", &num);
if (num > n)
printf("试试更小的数字吧。\n");
else if (num < n)
printf("试试更大的数字吧。\n");
else
{
printf("恭喜!猜对了!\n");
break;
}
}
}
因为srand()一般只需调用一次所以并没有写在会被多次调用的game()中,而是写到只会被调用一次的main()中。
5.稍加调整后即可得到完整的代码。
代码实现
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void meau() //菜单
{
printf("*********************************\n");
printf("********** 1.开始游玩 *******\n");
printf("********** 2.退出游戏 *******\n");
printf("*********************************\n");
}
void game() //游戏
{
int n = rand() % 100 + 1;
//生成随机数,任意一个数与100取余后取值在0-99
int num = 0;
while (1)
{
printf("请输入你猜的数字: ");
scanf_s("%d", &num);
if (num > n)
printf("试试更小的数字吧。\n");
else if (num < n)
printf("试试更大的数字吧。\n");
else
{
printf("恭喜!猜对了!\n");
break;
}
}
}
int main()
{
int input = 0;
srand((unsigned int)time(NULL));
do
{
meau(); //打印游戏菜单
printf("请选择:");
scanf_s("%d", &input);
switch (input) //规定1为开始游戏,2为结束游戏
{
case 1:
system("cls"); //清空屏幕
printf("游戏开始!\n");
game(); //实现游戏功能
printf("请选择是否开始下局游戏\n");
break;
case 2:
system("cls");
printf("游戏结束!\n");
break;
default:
system("cls");
printf("错误!请重新输入\n");
break;
}
} while (input!=2); //当input值为2时结束循环
return 0;
}
运行截图