1 _strtime
2 difftime
3 srand
4 time
1 _strtime
函数简介
函数名: _strtime
头文件: time.h
函数原型: char * _strtime(char *)
功能: 获取当前系统时间(不包括日期),函数以字符指针形式为返回.
2 difftime
功能:返回两个time_t型变量之间的时间间隔,即 计算两个时刻之间的时间差。
用法: double difftime(time_t time2, time_t time1);
头文件:time.h
1 #define _CRT_SECURE_NO_WARNINGS 2 3 #include <stdio.h> 4 #include <stdlib.h> 5 #include <time.h> 6 7 main() 8 { 9 time_t start, end; 10 double res = 0; 11 12 time(&start);//获取时间,传递给start 13 14 for (int i = 0;i < 999999999;i++) 15 { 16 res += i; 17 } 18 19 printf("%f\n", res); 20 21 time(&end);//获取结束时间 22 23 printf("消耗时间%f\n", difftime(end, start)); 24 25 system("pause"); 26 }
3 srand
srand函数是随机数发生器的初始化函数。原型:void srand(unsigned int seed);
srand和rand()配合使用产生伪随机数序列。rand函数在产生随机数前,需要系统提供的生成伪随机数序列的种子,rand根据这个种子的值产生一系列随机数。如果系统提供的种子没有变化,每次调用rand函数生成的伪随机数序列都是一样的。srand(unsigned seed)通过参数seed改变系统提供的种子值,从而可以使得每次调用rand函数生成的伪随机数序列不同,从而实现真正意义上的“随机”。通常可以利用系统时间来改变系统的种子值,即srand(time(NULL)),可以为rand函数提供不同的种子值,进而产生不同的随机数序列
指定范围产生随机数
srand((unsigned)time(null));
(a,b) (rand()%(b-a+1))+a-1
[a,b) (rand()%(b-a))+a
(a,b] (rand()%(b-a))+a+1
[a,b] (rand()%(b-a+1))+a
以下程序为猜数,随机生成0-100的数,大于80赢,其他输。
1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<time.h> 4 /* 之所以要这个头文件,因为需要使用时间数据类型time_t */ 5 6 main() 7 { 8 time_t ts; /* 时间变量 */ 9 10 srand((unsigned int)time(&ts)); /* time是函数,获取时间保存结果在ts中 */ 11 12 int num = rand() % 100 + 1; /* 获取随机数 */ 13 14 printf("num=%d\n", num); 15 16 num > 80 ? printf("win") : printf("lose"); 17 }
4 time
函数名称: time
函数原型: time_t time(time_t *timer)
函数功能: 得到系统当前的日历时间 函数返回: 系统当前日历时间,如果不能获得当前日历时间,则返回-1
参数说明: timer=NULL时得到机器日历时间,timer为有效指针时,更新timer为系统当前时间,time_t是一个long类型
所属文件: <time.h>
1 #define _CRT_SECURE_NO_WARNINGS 2 3 #include<stdio.h> 4 #include<stdlib.h> 5 #include<time.h> 6 #include<windows.h> 7 8 main() 9 { 10 time_t start, end; 11 12 time(&start);//获取当前时间,放在start变量中 13 14 //Sleep(3000);//休眠3秒 15 16 register double res = 0.0;//结果 17 18 register int i; 19 20 for (i = 0;i < 3000000000;i++) 21 { 22 res += i; 23 } 24 25 printf("%f\n", res); 26 27 time(&end);//获取当前时间,放在end变量中 28 29 printf("%d\n", (unsigned int)(end - start));//获取时间差 30 31 system("pause"); 32 }