【C语言】猜数字小游戏的一步一步实现1:https://developer.aliyun.com/article/1474630
5.3 生成
打印菜单,选择游戏进行和结束,这些过程我们要来实现函数的核心部分:猜数字。但是猜数字我们的有数字生成呀!所以我们可以通过前面的
rand ,srand 和 time
函数来生成0—100
的数:
void menu() { printf("**** 猜数字小游戏 ****\n"); printf("****** 1. play ******\n"); printf("****** 0. exit ******\n"); printf("***********************\n"); } void game() { int r = rand() % 100 + 1;//通过调用srand函数生成0—100的数; } int main() { int input = 0; srand((unsigned int)time(NULL)); //使用time函数的返回值设置种子 //因为srand的参数是unsigned int类型,我们将time的返回值强制类性转换 //srand函数的头文件的 time.h do { menu(); printf("请输入-->\n"); scanf("%d", &input);//输入1 或 0 switch (input)//对输入的值进行选择,因此用了switch语句 { case 1: printf("猜数字小游戏启动!\n"); game(); break; case 0: printf("退出游戏!!!\n"); break; default : printf("输入错误,请重新选择!!\n"); } } while (input);//这里我们可以把 0 改为input,因为0只能循环一次,input可以选择 1或者0来进行游戏的选择 return 0; }
5.4 循环比较
最后用
while
循环输入的数与生成的数进行比较
#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 r = rand() % 100 + 1;//通过调用srand函数生成0—100的数; int guess = 0; while (1) //用while循环输入的数与生成的数进行比较 { printf("请猜数字—>"); scanf("%d", &guess); if (guess > r) { printf("猜大了\n"); } else if (guess < r) { printf("猜小了\n"); } else { printf("猜对了\n"); break; } } } int main() { int input = 0; srand((unsigned int)time(NULL)); //使用time函数的返回值设置种子 //因为srand的参数是unsigned int类型,我们将time的返回值强制类性转换 //srand函数的头文件的 time.h do { menu(); printf("请输入-->\n"); scanf("%d", &input);//输入1 或 0 switch (input)//对输入的值进行选择,因此用了switch语句 { case 1: printf("猜数字小游戏启动!\n"); game(); break; case 0: printf("退出游戏!!!\n"); break; default : printf("输入错误,请重新选择!!\n"); break; } } while (input);//这里我们可以把 0 改为input,因为0只能循环一次,input可以选择 1或者0来进行游戏的选择 return 0; }
六 、优化:控制次数
由于博主一直都猜不中,可以给个小小的赞鼓励一下嘛;当然我们也可以设定次数来猜:
#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 r = rand() % 100 + 1;//通过调用srand函数生成0—100的数; int guess = 0; int count = 5; while (count) //用while循环输入的数与生成的数进行比较 { printf("你还有%d次机会", count); printf("请猜数字—>"); scanf("%d", &guess); if (guess > r) { printf("猜大了\n"); } else if (guess < r) { printf("猜小了\n"); } else { printf("猜对了\n"); break; } count--; } if (0 == count) { printf("你失败了,正确值是%d\n", r); } } int main() { int input = 0; srand((unsigned int)time(NULL)); //使用time函数的返回值设置种子 //因为srand的参数是unsigned int类型,我们将time的返回值强制类性转换 //srand函数的头文件的 time.h do { menu(); printf("请输入-->\n"); scanf("%d", &input);//输入1 或 0 switch (input)//对输入的值进行选择,因此用了switch语句 { case 1: printf("猜数字小游戏启动!\n"); game(); break; case 0: printf("退出游戏!!!\n"); break; default : printf("输入错误,请重新选择!!\n"); break; } } while (input);//这里我们可以把 0 改为input,因为0只能循环一次,input可以选择 1或者0来进行游戏的选择 return 0; }
好啦!猜游戏到这里就完了,注:永远不要害怕每一次失败,要勇于尝试,看过千遍万遍,不过于自己动手做几遍!