【C语言编程】实现猜数字游戏

用C语言编程的方法来实现我们在生活中经常玩到的一个猜数字小游戏,其主要玩法就是我们编写出一个程序,起先计算机会先自动生成一个数,这个数也就是我们需要去才对的数,然后玩家在这个程序的执行开始后先输入一个数,拿这个猜的数与计算机生成的数进行比较,如果玩家输入的数比计算机生成的数字大,那么屏幕会输出“猜大了”三个字,如果玩家输入的数比计算机生成的数字小,那么屏幕会输出“猜小了”三个字,一直这样来来回回的猜下去,直到玩家猜的数字与计算机生成的数字相同屏幕输出“恭喜你,猜对了”这几个字时游戏结束。

这个猜数字游戏的核心是要用到二分查找的方法和思想,二分查找也叫折半查找,它是一种效率较高的查找方法,但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。也就是说使用二分查找的前提是这个数组必须是有序的,它可以是从小到大排序,它也可以是从大到小排序。

在我们编写的过程中发现我们需要了解到time函数以及它的使用方法,其中time的返回值是一个time_t类型,本质上是一个unsigned long long(表示八个字节的无符号长整形)srand的函数参数是一个unsigned int(四个字节),虽然两者在转换的时候会出现四个字节丢失的情况,但是也不影响我们的目标,我们想要的并不是一个准确的时间只要它的种子不同即可。所以这个我们用到了强制转换,也就是在time前面加上一个(unsigned int),意思就是告诉计算机虽然结果有风险,但是这个风险我们自己负责,这个风险在我们的承受范围之内。

#include
#include
#include
#define _CRT_SECURE_NO_WARNINGS
int menu(){
printf("=\n");
printf(“1.开始游戏\n”);
printf(“2.退出游戏\n”);
printf("
=\n");
printf(“请输入您的选择:”);
int choice = 0;
scanf_s("%d", &choice);
return choice;
}
void game(){
int to_guess = rand() % 100 + 1;//生成一个随机数,范围是1到100
while (1){
printf(“请输入您要猜的数字:”);//提示用户猜一个数字
int num = 0;
scanf("%d", &num); //输入用户猜的数字
//进行数字的比较,提示用户是猜高了/低了/对了
if (num < to_guess){
printf(“低了\n”);
}
else if (num>to_guess){
printf(“高了\n”);
}
else {
printf(“恭喜您,您猜对了”);
break;
}
}
}

int main(){
srand((unsigned int)time(0));//time的返回值是一个time_t类型,本质上是一个unsigned long long(表示八个字节的无符号长整形)
//srand的函数参数是一个unsigned int(四个字节)
//强制类型的转化
while (1){
int choice = menu();
if (choice == 1){
game();//开始游戏
}
else if (choice == 0){
printf(“再见\n”);//退出游戏
break;
}
else{
printf(“对不起,您的输入有误!”);
}
}system(“pause”);
return 0;
}

运行结果如下:
【C语言编程】实现猜数字游戏_第1张图片

你可能感兴趣的:(积极向上)