用C语言写一个1到100内猜数字小游戏

先介绍生成随机数的方法

以下代码可以随机生成一个0到32767之间的整数

#include 
#include 
#include 
int main()
{
    srand(time(0));
    int random_num = rand();
    printf("%d",random_num);
    
    return 0;
}

该方法使用了c标准库中中的rand()函数

1. rand()函数:
   rand()是C标准库中用于生成伪随机数的函数。它生成一个范围在 0到 RAND_MAX之间的整数(RAND_MAX 是一个大常数,通常为32767)。
   由于 rand() 生成的是伪随机数(不是真正的随机数),它实际上使用一个确定的算法来生成一系列的数,因此每次运行程序时,如果种子相同,生成的随机数序列也相同。

2. srand(time(0)) 设置随机种子:
   srand()函数用于设置rand()的种子值。没有调用srand()时,rand()总是从同一个种子开始,生成相同的伪随机数序列。
   srand(time(0))使用当前时间(秒级别的时间戳)作为种子。由于时间在不断变化,每次运行程序时种子不同,因此生成的随机数序列会不同。
   time(0) 返回从1970年1月1日以来的秒数,用作种子能够确保每次运行程序时产生不同的随机数序列。

将生成的随机数 (0到32767之间) 模上100,即可生成0到99之间的(伪)随机数

再加上1,就可以随机生成1到100间的(伪)随机数

#include 
#include 
#include 
int main()
{
    srand(time(0));
    int random_num = rand()%100+1;
    printf("%d",random_num);
    
    return 0;
}

工作流程图解:
1. 初始化种子:srand(time(0)) → 设置随机数生成的起点(种子)。
2. 生成伪随机数:rand()→ 生成一个0到RAND_MAX之间的伪随机数。
3. 取模运算:rand() % 100+1 → 将伪随机数转化为1到100之间的数。

值得一提的是,虽然该代码生成的是伪随机数,但伪随机数的生成依赖于种子,如果种子每次都不同,生成的伪随机数序列看起来就像是随机的。通过使用当前的时间作为种子(如 srand(time(0))),我们能够保证每次运行程序时种子值是不可预测的,进而使得随机数序列看起来像是真随机数。这种不可预测性从概率的角度来说,已经很接近真正的随机。

 在实际应用中,比如游戏、模拟、数据采样等,大多数情况下我们关心的是随机数的统计性质,即这些数值的分布是否足够接近随机。在这些场景中,伪随机数的“随机性”已经足够满足需求,特别是在大样本情况下,伪随机数与真随机数的差异几乎无法从统计上显现出来。

在了解了如何生成随机数后,就可以编写程序来实现这个小游戏

#include 
#include 
#include 
int main()
{
    srand(time(0));
    int random_num = rand()%100+1;
    int n = 0;
    printf("请输入一个1到100的数字:");
    while(1)
    {
        scanf("%d",&n);
        if (n>random_num)
        {
            printf("猜大了,再猜一次\n");
            continue;
        }
        else if (n

可以通过限制次数增加游戏难度,例如猜数超过5次就显示游戏失败

#include 
#include 
#include 
int main()
{
    srand(time(0));
    int random_num = rand()%100+1;
    int n = 0;
    int count = 0;
    printf("这是一个猜数字游戏,你有5次机会\n");
    printf("请输入一个1到100的数字:");
    while(1)
    {
        if(count==5)
        {
            printf("游戏结束\n");
            break;
        }
        scanf("%d",&n);
        if (n>random_num)
        {
            printf("猜大了,再猜一次,");
            count++;
            printf("你还有%d次机会\n",5-count);
            continue;
        }
        else if (n

可以把猜的次数进行宏定义,以便快速修改猜的次数

#include 
#include 
#include 
#define  TIME 8
int main()
{
    srand(time(0));
    int random_num = rand()%100+1;
    int n = 0;
    int count = 0;
    printf("这是一个猜数字游戏,你有%d次机会\n",TIME);
    printf("请输入一个1到100的数字:");
    while(1)
    {
        if(count==TIME)
        {
            printf("游戏结束\n");
            break;
        }
        scanf("%d",&n);
        if (n>random_num)
        {
            printf("猜大了,再猜一次,");
            count++;
            printf("你还有%d次机会\n",TIME-count);
            continue;
        }
        else if (n

你可能感兴趣的:(c语言,c语言,visual,studio,code)