目录
实现功能
代码包括三部分,菜单部分menu(),游戏主体部分game(),主程序部分main(),用户进入程序后可选择是否进行游戏,不玩则退出程序,玩进行游戏进行猜 1~100 的数字,若不正确则提示猜数字是大了还是小了,直到猜中数字则结束本局,结束游戏后可再次进入菜单进行选择。
程序实现
菜单部分menu():
void menu() {
printf("********************\n");
printf("*******1.play*******\n");
printf("*******0.exit*******\n");
printf("********************\n");
}
菜单给出两个选项,若用户输入0则退出游戏,若用户输入1则进入游戏。
菜单效果:
游戏主体部分game():
void game() {
int ret = rand() % 100 + 1;//用rand()函数生成随机数范围是0 -32767
//%100+1控制随机数范围在1-100之间
int guess = 0;
while (1) {
printf("请输入你猜测的数字>");
scanf_s("%d", &guess);
if (guess < ret) {
printf("猜小了\n");
}
else if (guess>ret) {
printf("猜大了\n");
}
else {
printf("猜对了\n");
break;
}
}
}
使用rand()函数生成一个伪随机数范围为0~32767,猜数字的范围为1~100所以我们对rand()%100+1控制生成随机数的范围为1~100并用int型变量ret接收随机数。
注意:使用rand()函数需要使用头文件#include<stdlib.h>
主程序部分main()
int main() {
srand((unsigned int)time(NULL));
while (1) {
menu();//调用menu()函数,在屏幕上打印出菜单;
int choose = 0;
printf("请输入你的选择>");
scanf_s("%d",&choose);
if (choose == 1) {
game();//调用game()函数进行猜数字游戏;
}
else if (choose== 0) {
printf("成功退出游戏");
break;
}
}
return 0;
}
在C语言中,rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数,我们可以称它为种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统,为了改变这个种子的值,C提供了srand()函数,它的原形是void srand( inta)。
在主程序中我们使用srand()函数设置种子,这样能确保在一整局猜数字游戏中种子不发生改变,同时利用srand((unsigned int)(time(NULL))使用时间戳生成种子,保证不同局游戏中生成的种子不同,因为时间一直在变动,因此不同局游戏生成的随机数也不同。
注意:使用时间戳需要使用头文件#include<time.h>
完整代码与最终实现效果:
完整代码:
#include <stdio.h>
#include<stdlib.h>
#include<time.h>
void menu() {
printf("********************\n");
printf("*******1.play*******\n");
printf("*******0.exit*******\n");
printf("********************\n");
}
void game() {
int ret = rand() % 100 + 1;//用rand()函数生成随机数范围是0 -32767
//%100+1控制随机数范围在1-100之间
int guess = 0;
while (1) {
printf("请输入你猜测的数字>");
scanf_s("%d", &guess);
if (guess < ret) {
printf("猜小了\n");
}
else if (guess>ret) {
printf("猜大了\n");
}
else {
printf("猜对了\n");
break;
}
}
}
int main() {
srand((unsigned int)time(NULL));
while (1) {
menu();//调用menu()函数,在屏幕上打印出菜单;
int choose = 0;
printf("请输入你的选择>");
scanf_s("%d",&choose);
if (choose == 1) {
game();//调用game()函数进行猜数字游戏;
}
else if (choose== 0) {
printf("成功退出游戏");
break;
}
}
return 0;
}