1. 猜数字游戏
猜数字游戏(又称“猜谜游戏”)是一个经典的编程练习,非常适合C语言初学者来练手。它不仅能够帮助巩固基础语法知识,还能锻炼逻辑思维和程序设计能力。下面,我们将一步步构建一个简单而有趣的猜数字游戏,并探讨其背后的编程逻辑。
2. 游戏规则
游戏规则非常简单:计算机随机生成一个介于预设最小值和最大值之间的整数,玩家尝试猜测这个数字。每次猜测后,程序会根据猜测结果给出提示(太高、太低或猜对了),猜测次数超过3次后玩家猜中为止,并输出正确结果。
3. 编程准备
1. 引入必要的头文件
#include <stdio.h>
#include <stdlib.h> // 用于随机数生成
#include <time.h> // 用于设置随机数种子
2. 生成随机数
C语⾔提供了⼀个函数叫 rand,这函数是可以⽣成随机数的,函数原型如下所示:
int rand (void);
rand函数会返回⼀个伪随机数,这个随机数的范围是0~RAND_MAX之间,这个RAND_MAX的大小是依赖编译器上实现的,但是⼤部分编译器上是32767。
rand函数的使用需要包含⼀个头⽂件是:<stdlib.h>
因为rand函数生成的随机数是伪随机的,伪随机数不是真正
的随机数,是通过某种算法生成的随机数。真正的随机数的是无法预测下⼀个值是多少的。而rand函数是对⼀个叫“种子”的基准值进行运算生成的随机数。
所以使用rand()函数生成随机数前,需要先用srand()函数设置随机数种子,以确保每次运行程序时都能得到不同的随机数。通常,我们会用当前时间作为种子。
srand的原型如下:
void srand (unsigned int seed);
使用方法:
int main() {
srand(time(NULL)); // 使用当前时间作为随机数种子
int secretNumber = rand() % (MAX_NUMBER - MIN_NUMBER + 1) + MIN_NUMBER;
// 假设MIN_NUMBER和MAX_NUMBER分别为猜测范围的最小值和最大值
}
3. 主循环:接收用户输入并给出反馈
接下来,我们进入游戏的核心循环,不断接收用户的输入并给出相应的提示。
int main()
{
int input = 0;
do {
menu();
printf("请选择:");
scanf("%d", &input);
switch (input)
{
case 1:
_Srand();
game(ret);
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("请重新选择\n");
break;
}
} while (input);
return 0;
}
- 完整示例代码
//猜数字游戏
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int ret = 0;
//菜单
void menu() {
printf("********************\n");
printf("**0.exit 1.play**\n");
printf("********************\n");
}
//产生随机数
int _Srand()
{
srand((unsigned int)time(NULL));
ret = rand()%100+1;
return ret;
}
void game(int ret)
{
int count = 3;
printf("你所拥有的猜测次数:%d\n",count);
while(count>0)
{
printf("请输入你所猜测的数字:");
int guess = 0;
scanf("%d", &guess);
if (ret > guess) {
printf("猜测数字偏小\n");
}
else if (ret < guess) {
printf("猜测数字偏大\n");
}
else
printf("恭喜你,猜对了\n");
--count;
printf("剩余次数:%d\n",count);
}
if (count == 0) {
printf("挑战失败,正确结果是:%d\n", ret);
}
}
int main()
{
int input = 0;
do {
menu();
printf("请选择:");
scanf("%d", &input);
switch (input)
{
case 1:
_Srand();
game(ret);
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("请重新选择\n");
break;
}
} while (input);
return 0;
}
总结
通过上述步骤,我们完成了一个基本的猜数字游戏程序。这个游戏虽小,却包含了C语言编程中的许多关键概念,如变量定义、条件判断、循环控制、输入输出操作,以及随机数的生成和使用。它不仅能够帮助初学者加深对这些基础知识的理解,也是学习如何构建逻辑流程、提升编程技巧的好方法。