1.编写代码实现一个简单的猜数字游戏。首先生成一个1到100之间的随机数,然后要求用户输入一个数字n,与随机数进行比较并给出提示,直到用户猜对为止。
要在C语言中生成1到100之间的随机数,需要使用rand()函数和srand()函数。
rand()函数用于生成一个0到RAND_MAX(通常是32767)之间的随机整数。然后可以使用取余操作符将其限制在1到100之间。
srand()函数用于设置随机数发生器的种子。可以使用time()函数获取当前时间作为种子,以确保每次运行程序时生成的随机数序列是不同的。
下面是关于rand()函数和srand()函数详细介绍:
在C语言中,rand()和srand()是用来生成伪随机数的函数。
(1)rand()函数: rand()函数用于生成一个0到RAND_MAX之间的随机整数。函数的原型如下:
int rand(void);
要使用rand()函数,首先需要调用srand()函数来设置随机数的种子。
(2)srand()函数: srand()函数用于设置随机数生成器的种子值。函数的原型如下:
void srand(unsigned int seed);
seed参数可以是任意非负整数。通常可以使用time()函数来获取当前时间作为种子值,以获得更随机的结果。
#include <time.h>
#include <stdlib.h>
int main() {
srand(time(NULL)); // 使用当前时间作为种子值
int randomNum = rand(); // 生成随机数
return 0;
}
需要注意的是,rand()函数生成的是伪随机数,它们是通过数学算法计算得到的一系列数字,而不是真正的完全随机数。因此,如果需要更高质量的随机数序列,可以使用更复杂的算法或外部随机源。
另外,为了获得特定范围的随机数,可以使用取模操作符(%)进行范围限定:
int randomNum = rand() % (max - min + 1) + min; // 生成[min, max]范围内的随机数
其中,max和min分别为所需范围的最大值和最小值。
以上就是rand()和srand()函数的详细介绍。
接下来是本题目的一个简单的解答,代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int randomNumber;
// 使用当前时间作为种子
srand(time(NULL));
// 生成1到100之间的随机数
randomNumber = rand() % 100 + 1;
//rand() % 100 是取余数:0~99
int n = 0;
printf("请输入数字n:");
scanf_s("%d", &n);
while (n != randomNumber)
{
if (n < randomNumber)
{
printf("猜小了\n");
printf("请重新输入数字n:");
scanf_s("%d", &n);
}
if (n > randomNumber)
{
printf("猜大了\n");
printf("请重新输入数字n:");
scanf_s("%d", &n);
}
}
if (n == randomNumber)
{
printf("猜对了,结束游戏\n");
printf("randomNumber = %d\n", randomNumber);
}
return 0;
}
运行结果如下所示:
上面的程序过于简单了,这里我再写个稍微复杂一点的程序,如下所示:
void game()
{
int ret = rand() % 100 + 1;
int guss = 0;
while (1)
{
printf("请输入数字:");
scanf_s("%d", &guss);
if (guss < ret)
{
printf("猜小了\n");
printf("请重新输入数字:");
}
else if (guss > ret)
{
printf("猜大了\n");
printf("请重新输入数字n:");
}
else
{
printf("猜对了,结束游戏\n");
break;
}
}
}
int main()
{
int input = 0;
srand(time(NULL));
do
{
menu();
printf("请选择:\n");
scanf_s("%d", &input);
switch (input)
{
case 1:
printf("开始游戏\n");
game();
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("选择错误\n");
break;
}
} while (input);
return 0;
}
运行结果如下所示: