时间戳的使用(猜数字游戏)

本文介绍了如何在C语言中实现一个猜数字游戏,通过使用time()函数获取时间戳并设置随机数生成器srand(),确保每次游戏的随机数不同。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下边是我在听B站比特鹏哥课时做的一些笔记,其中注释是我对时间戳的理解

这是一个猜数字游戏

电脑随机生成一个数,然后猜,电脑会显示猜大还是猜小,之后继续直到猜对

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

//自定义函数可以先不看,在主函数运行中出现自定义函数再返回来看
void menu()

//void表示menu这个自定义函数不用返回任何值 
{
    printf("**************************************\n"); 
    printf("***     1.go           0.exit      ***\n"); 
    printf("**************************************\n"); 
}
void game()
{
    /*三个步骤,生成随机数,猜数字,比较*/
    int bet = 0;
     int num = 0;
    bet = rand()%100+1;//第一步结束 
    while(1)
    {
        printf("guess it:\n");
        scanf("%d",&num);
        if(num > bet)
        {
            printf("too large\n");
        }
        else if(num < bet)
        {
            printf("too small\n");
        }
        else if(num == bet)
        {
            printf("yes!\n");
            break;
        }
    }
    
}


int main()
{
    /*
    程序设计时我们了解一下概念 
    首先是随机数函数,其次是时间戳 
    rand函数最大值RAND_MAX是7ff(32767),它的库文件是stdlib.h 
    但同时,rand函数是有规矩的 
    需要使用srand函数来设置随机起点
    如果不设置起点,那么每次游戏过程中运行的结果虽然不一样但是每个游戏过程生成的随机值一样 
    但当我们设置起点时,比如srand(1),发现每次都输出相同的的结果 
    因此srand是根据后边的整形数字来生成随机数,rand只会随着srand后边的数字的变化而变化 
    我们把时间作为种子来赋值给srand,让srand随着时间的变化而发生变化
    这就叫做时间戳 
    当前计算机的起始时间是1970.1.1.0:00单位是秒,时间戳就是当前时间与起始时间的差值,它随着时间的变化而发生变化 
    我们使用time函数,这个函数可以读取现在的时间戳,返回一个time_t型的数据
    time_t本质上是一个长整型ld,我们把它强制转换成整型,这样就可以作为变化的整型量赋值给srand 
    time函数后边我们不想让他产生效果,只是作为一个变化的量,所以给他一个空指针time(NULL) 
    注意
    1.time函数的头文件是time.h
    2.srand在整个工程中设置一次就好了,不然时间戳相隔太近会不随机,所以这里我们把它放在主函数中 
    3.由于rand范围太大,我们把它取100的模,缩小范围 
    
    */ 
    srand( (unsigned int) time(NULL));//设置起点,给unsigned int加个括号就是强制转化
    int in = 0;
    do
    {
        menu();
        printf("input:\n");
        scanf("%d",&in);
        switch(in)
        {
            case 1:
                game();//这个函数先写上后定义 
                break;
            case 0:
                printf("exit\n");
                break;
            default:
                printf("wrong\n");
                break;
            
            
            
        }
        
        
    }while(in);//这里表示,当输入的值为0时游戏自动终止,非0时游戏一直持续 
    
     
    
    
    return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北の风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值