time 函数
在了解time函数之前,我们要了解一个概念叫时间戳
下面看一下我在网上找到的一个时间戳转换工具
原来时间戳可以转变为北京时间,是另类的计时方法,但是这个是我们生活时间的时间戳,电脑上的时间戳就不一样了。我们看下面的图片就能理解
接下来看看time函数有关内容
这个函数还是比较复杂的,通俗易懂的讲,如果你往括号里面放NULL,就是返回一个时间戳,如果你放time * 类型的参数则把时间戳放在这个指针所指的那块空间里面。time_t就是一种整型,也就是返回的值就是整型。
补充一点这个函数头文件就与前面两个不一样了,是time.h
time函数与srand函数
那我们现在就能大概知道srand和time怎么搭配使用了,我们将两个函数对比一下。
因为time_t与unsigned int 类型不符,我们要用到强制类型转换,而time我们只需要加入NULL参数让它返回时间戳就行。
void game() { srand((unsigned int )time(NULL)); int ret = rand(); printf("%d\n", ret); }
这就是两者结合的正确写法
让我们来尝试运行一下程序
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #include<time.h> void menu() { printf("*******************\n"); printf("*0.EXIT *** 1.PLAY*\n"); printf("*******************\n"); printf("*******************\n"); } void game() { srand((unsigned int )time(NULL)); int ret = rand(); printf("%d\n", ret); } int main() { int input = 0; do { menu(); printf("请选择->"); scanf("%d", &input); switch (input) { case 0: printf("退出游戏\n"); break; case 1: printf("猜数字游戏\n"); game(); break; default : printf("输入错误,请重新输入\n"); break; } } while (input); return 0; }
这里居然又出错了,居然又有细节吗?
没错,我们不应该把srand和time函数放在game里,这样好像就像是没次玩游戏时都要重新计算时间戳,所以我们要放在主函数里。
这样就对了,但是也还有个细节,还记得我们的游戏规则吗?
一定要在1-100之间的数。所以我们添加最后一个目录给出最后的究极代码
究极的最后的代码
我们如何实现让结果全在1-100区间呢?只需要对rand()%100 +1就行,
任何数%100就是0-99,0-99 都+1 就是1-100。这个大家可以理解理解
void game() { int ret = rand()%100+1; printf("%d\n", ret); }
然后我们就来实现猜数字。
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #include<time.h> void menu() { printf("*******************\n"); printf("*0.EXIT *** 1.PLAY*\n"); printf("*******************\n"); printf("*******************\n"); } void game() { int ret = rand()%100+1; int guess = 0; while (1) { printf("猜数字:>\n"); scanf("%d", &guess); if (guess < ret) { printf("猜小了\n"); } else if (guess > ret) { printf("猜大了\n"); } else { printf("恭喜你,猜对了\n"); break; } } } int main() { int input = 0; srand((unsigned int)time(NULL)); do { menu(); printf("请选择->"); scanf("%d", &input); switch (input) { case 0: printf("退出游戏\n"); break; case 1: printf("猜数字游戏\n"); game(); break; default : printf("输入错误,请重新输入\n"); break; } } while (input); return 0; }
终于介绍完了,大家看完可以自己写一下
,这篇文章就到这里了,作者能力有限,如果有帮到你,那就点个赞吧,这对我真的很重要。