c和c++的时间函数和随机函数总结与范例
- 格式:docx
- 大小:30.09 KB
- 文档页数:17
C语言随机函数总结2007年02月12日星期一 13:28(1) rand()函数:原型: int rand(void)功能: 产生从0到RAND_MAX(0x7fff)之间的随机数。
头文件: stdlib.h例:#include <stdio.h>#include <stdlib.h>int main(){int k;k = rand();printf("%d\n", k);return 0;}编译运行,发现它的确产生随机数了,但是,每次运行程序产生的随机数都是一样的,为什么呢?因为随机数取在C语言中采用的是固定序列,所以每次执行所取的是同一个数。
那么如何写一个程序,让它每次运行时产生的随机数都不一样呢?往下看:(2)srand()函数:原型: void srand(unsigned seed)功能: 产生随机数的起始发生数据,和rand函数配合使用头文件: stdlib.h time.h例:#include <stdio.h>#include <stdlib.h>#include <time.h>int main(void){int i;time_t t;srand((unsigned) time(&t));printf("Ten random numbers from 0 to 99\n\n");for (i=0; i<10; i++)printf("%d\n", rand()%100);return 0;}这时运行程序,会发现每次产生的随机数都不一样。
这是因为这里采用了时间作为种子,而时间在每时每刻都不相同,所以就产生了"随机"的随机数了。
所以,要想产生不同的随机数,在使用rand之前需要先调用srand。
这样做相当麻烦,有没一个更简单的函数呢?往下看:(3)randomize()函数:原型: int randomize(void)功能: 通过time函数来得到一个随机数头文件: stdlib.h time.h该函数就相当于srand((unsign)(time(NULL)) 不过应注意的是randomize()的功能要通过time来实现所以在调用它时头文件要包含time.h。
C语⾔时间函数1、time函数头⽂件:time.h函数定义:time_t time (time_t *t)说明:返回从1970年1⽉1⽇的UTC时间从0时0分0妙算起到现在所经过的秒数。
#include<stdio.h>#include<time.h>int main(){time_t timep;long seconds = time(&timep);printf("%ld\n",seconds);printf("%ld\n",timep);return 0;}输出:13020797441302079744附:time_t ⼀路追踪发现就是从long类型经过不断的typedef ,#define定义过来的。
2、ctime函数定义:char *ctime(const time_t *timep);说明:将参数所指的time_t结构中的信息转换成真实世界的时间⽇期表⽰⽅法,然后将结果以字符串形式返回。
这个是本地时间。
#include <stdio.h>#include<time.h>int main(void) {time_t timep;time(&timep);printf("%s\n",ctime(&timep));return 0;}输出:Wed Apr 6 16:53:35 20113、gettime函数定义:struct tm *gmtime(const time_t *timep);说明:将参数timep所指的time_t结构中的信息转换成真实世界所使⽤的时间⽇期表⽰⽅法,然后将结果由结构tm返回。
此函数返回的时间⽇期未经时区转换,⽽是UTC时间。
struct tm结构的定:struct tm{int tm_sec;/*秒数*/int tm_min; /*分钟*/int tm_hour;/*⼩时*/int tm_mday;/*⽇期*/int tm_mon; /*⽉份*/int tm_year; /*从1990年算起⾄今的年数*/int tm_wday; /*星期*/int tm_yday; /*从今年1⽉1⽇算起⾄今的天数*/int tm_isdst; /*⽇光节约时间的旗标*/};#include <stdio.h>#include<time.h>int main(void) {char *wday[] = {"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};time_t timep;struct tm *p;time(&timep);p = gmtime(&timep);printf("%d/%d/%d ",(1900+p->tm_year),(1+p->tm_mon),p->tm_mday);printf("%s %d:%d:%d\n",wday[p->tm_wday],p->tm_hour,p->tm_min,p->tm_sec);return 0;}输出:2011/4/6 Wed 8:59:04、 asctime函数定义:char *asctime(const struct tm *timeptr);说明:将参数timeptr所指的struct tm结构中的信息转换成真实时间所使⽤的时间⽇期表⽰⽅法,结果以字符串形态返回。
c语言时间函数时间函数在C语言中起着至关重要的作用,它能够帮助程序员获取当前的日期和时间信息,实现时间的计算和处理。
本文将重点介绍C语言中常用的时间函数,并结合实例详细讲解其使用方法和注意事项。
一、time函数time函数是C语言中最常用的时间函数之一,它的原型如下:```ctime_t time(time_t *timer);```time函数返回自1970年1月1日以来的秒数,如果参数timer不为NULL,则返回值也会存储在timer指向的变量中。
下面是一个示例:```c#include <stdio.h>#include <time.h>int main() {time_t t;time(&t);printf("当前时间的秒数:%ld\n", t);return 0;}```运行结果如下:```当前时间的秒数:1613988257```二、ctime函数ctime函数将一个time_t类型的时间值转换为一个表示本地时间的字符串,其原型如下:```cchar *ctime(const time_t *timer);```下面是一个示例:```c#include <stdio.h>#include <time.h>int main() {time_t t;time(&t);char *str = ctime(&t);printf("当前本地时间:%s", str);return 0;}```运行结果如下:```当前本地时间:Sun Feb 21 15:24:17 2021```三、gmtime函数gmtime函数将一个time_t类型的时间值转换为一个表示UTC时间的结构体,其原型如下:```cstruct tm *gmtime(const time_t *timer);```下面是一个示例:```c#include <stdio.h>#include <time.h>int main() {time_t t;time(&t);struct tm *tm_ptr = gmtime(&t);printf("当前UTC时间:%d-%02d-%02d %02d:%02d:%02d\n", tm_ptr->tm_year + 1900, tm_ptr->tm_mon + 1, tm_ptr->tm_mday, tm_ptr->tm_hour, tm_ptr->tm_min, tm_ptr->tm_sec);return 0;}```运行结果如下:```当前UTC时间:2021-02-21 07:24:17```四、strftime函数strftime函数可以根据指定的格式将时间值转换为一个字符串,其原型如下:```csize_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr);```下面是一个示例:```c#include <stdio.h>#include <time.h>int main() {time_t t;time(&t);struct tm *tm_ptr = gmtime(&t);char str[100];strftime(str, sizeof(str), "%Y-%m-%d %H:%M:%S", tm_ptr); printf("当前时间:%s\n", str);return 0;}```运行结果如下:```当前时间:2021-02-21 07:24:17```通过指定不同的格式,我们可以得到不同粒度的时间信息。
C语言日期时间函数大全头文件:#include <time.h>1、asctime定义函数:char *asctime(const struct tm * timeptr);函数说明:asctime()将参数timeptr 所指的tm 结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回。
此函数已经由时区转换成当地时间,字符串格式为:"Wed Jun 30 21:49:08 1993\n"返回值:若再调用相关的时间日期函数,此字符串可能会被破坏。
此函数与ctime 不同处在于传入的参数是不同的结构。
附加说明:返回一字符串表示目前当地的时间日期.范例#include <time.h>main(){time_t timep;time (&timep);printf("%s", asctime(gmtime(&timep)));}执行Sat Oct 28 02:10:06 20002、ctime定义函数:char *ctime(const time_t *timep);函数说明:ctime()将参数timep 所指的time_t 结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回。
此函数已经由时区转换成当地时间,字符串格式为"Wed Jun 30 21 :49 :08 1993\n"。
注意:若再调用相关的时间日期函数,此字符串可能会被破坏。
返回值:返回一字符串表示目前当地的时间日期。
范例#include <time.h>main(){time_t timep;time (&timep);printf("%s", ctime(&timep));}执行Sat Oct 28 10 : 12 : 05 20003、gettimeofday头文件:#include <sys/time.h> #include <unistd.h>定义函数:int gettimeofday (struct timeval * tv, struct timezone * tz);函数说明:gettimeofday()会把目前的时间有tv 所指的结构返回,当地时区的信息则放到tz 所指的结构中。
C语言中常见功能函数在C语言中,有很多常见的功能函数,它们是为了方便程序员在开发过程中进行一些常见操作而设计的。
下面是其中一些常见的功能函数:1.字符串操作函数:- strlen:用于获取字符串的长度。
- strcpy:用于复制字符串。
- strcat:用于拼接两个字符串。
- strcmp:用于比较两个字符串。
- strchr:用于在字符串中查找指定字符。
- strstr:用于在字符串中查找指定子字符串。
2.内存操作函数:- malloc:用于动态分配内存。
- free:用于释放动态分配的内存。
- memcpy:用于内存拷贝。
- memset:用于内存初始化。
3.文件操作函数:- fopen:用于打开文件。
- fclose:用于关闭文件。
- fgets:用于从文件中读取一行数据。
- fputs:用于向文件中写入一行数据。
- feof:用于判断是否到达文件末尾。
4.数学函数:- abs:用于计算绝对值。
- sin、cos、tan:用于计算三角函数值。
- sqrt:用于计算平方根。
- pow:用于计算幂运算。
5.随机数函数:- srand:用于设置随机数种子。
- rand:用于生成随机数。
6.时间函数:7.输入输出函数:- printf:用于向标准输出设备打印输出。
- scanf:用于从标准输入设备读取输入。
8.排序和查找函数:- qsort:用于对数组进行快速排序。
- bsearch:用于在有序数组中进行二分查找。
9.环境变量函数:- getenv:用于获取环境变量的值。
- setenv:用于设置环境变量的值。
10.字符处理函数:- isdigit:用于判断字符是否是数字。
- isalpha:用于判断字符是否是字母。
- isspace:用于判断字符是否是空白字符。
以上只是C语言中常见的一些功能函数,实际上C语言库中还有很多其他功能函数,可以根据需求选择合适的函数来完成相应的操作。
无论是字符串操作、内存操作、文件操作、数学运算,还是随机数生成、时间处理、输入输出以及排序和查找等,C语言提供了丰富的函数库来支持这些常见的功能需求。
c语言常用函数大全及详解C语言是一种通用的、面向过程的编程语言,被广泛应用于系统软件、嵌入式开发以及科学计算领域。
在C语言中,函数是一种模块化编程的基本方法,通过函数可以将一段代码进行封装和复用,提高了代码的可读性和可维护性。
本文将介绍一些C语言中常用的函数,并详细解释其用法及重要参数。
一、数学函数1. abs()函数函数原型:int abs(int x);函数功能:返回x的绝对值。
参数说明:x为一个整数。
2. pow()函数函数原型:double pow(double x, double y);函数功能:计算x的y次方。
参数说明:x和y为两个double类型的实数。
3. sqrt()函数函数原型:double sqrt(double x);函数功能:计算x的平方根。
参数说明:x为一个double类型的实数。
二、字符串函数1. strcpy()函数函数原型:char* strcpy(char* destination, const char* source);函数功能:将source字符串复制到destination字符串。
参数说明:destination为目标字符串,source为源字符串。
2. strlen()函数函数原型:size_t strlen(const char* str);函数功能:计算str字符串的长度。
参数说明:str为一个以'\0'结尾的字符串。
3. strcat()函数函数原型:char* strcat(char* destination, const char* source);函数功能:将source字符串拼接到destination字符串的末尾。
参数说明:destination为目标字符串,source为源字符串。
三、文件操作函数1. fopen()函数函数原型:FILE* fopen(const char* filename, const char* mode);函数功能:打开一个文件,并返回文件指针。
c语言时间函数C语言中的时间函数是用来处理时间相关的操作的函数,它能够获取当前的时间、计算时间差、格式化时间等。
时间函数在很多应用中都有着重要的作用,比如计时、日志记录、定时任务等。
本文将对C语言中常用的时间函数进行介绍和详细讲解。
1. 获取当前时间获取当前时间是时间函数中最常用的功能之一,通过获取当前时间可以进行一些与时间相关的操作。
在C语言中,可以使用time函数来获取当前的时间。
time函数是一个系统调用函数,它返回的是从1970年1月1日0时0分0秒到当前时间的秒数。
获取当前时间的代码如下:```c#include <stdio.h>#include <time.h>int main() {time_t t = time(NULL);printf("当前时间:%ld\n", t);return 0;}```2. 时间格式化在实际应用中,我们经常需要将时间以人类可读的方式展示出来,而不是以秒数的形式显示。
C语言提供了一系列的函数来进行时间的格式化,比如strftime函数。
可以使用strftime函数将时间格式化为指定的字符串。
下面是一个将当前时间格式化为指定格式的示例代码:```c#include <stdio.h>#include <time.h>int main() {time_t t = time(NULL);struct tm *tm_info = localtime(&t);char buffer[20];strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", tm_info);printf("当前时间:%s\n", buffer);return 0;}```3. 时间计算除了获取当前时间和格式化时间,时间函数还能够进行时间的计算。
c语言数学函数大全及详解C语言提供了一系列的数学函数,这些函数包含在`math.h` 头文件中。
以下是一些常见的C 语言数学函数及其简要说明:1. fabs:-函数原型:`double fabs(double x);`-描述:返回`x` 的绝对值。
2. sqrt:-函数原型:`double sqrt(double x);`-描述:返回`x` 的平方根。
3. pow:-函数原型:`double pow(double x, double y);`-描述:返回`x` 的`y` 次方。
4. exp:-函数原型:`double exp(double x);`-描述:返回自然对数的底`e` 的`x` 次方。
5. log:-函数原型:`double log(double x);`-描述:返回`x` 的自然对数。
6. sin, cos, tan:-函数原型:- `double sin(double x);`- `double cos(double x);`- `double tan(double x);`-描述:分别返回`x` 的正弦、余弦和正切值。
这些函数中`x` 的单位是弧度。
7. asin, acos, atan:-函数原型:- `double asin(double x);`- `double acos(double x);`- `double atan(double x);`-描述:分别返回`x` 的反正弦、反余弦和反正切值。
返回的值是弧度。
8. sinh, cosh, tanh:-函数原型:- `double sinh(double x);`- `double cosh(double x);`- `double tanh(double x);`-描述:分别返回`x` 的双曲正弦、双曲余弦和双曲正切值。
9. ceil:-函数原型:`double ceil(double x);`-描述:返回不小于`x` 的最小整数值。
c/c++中时间函数和随机函数的总结*******************C++的随机函数和时间函数************随机函数一、C++中不能使用random()函数random函数不是ANSI C标准,不能在gcc,vc等编译器下编译通过。
可改用C++下的rand函数来实现。
1、C++标准函数库提供一随机数生成器rand,返回0-RAND_MAX之间均匀分布的伪随机整数。
RAND_MAX必须至少为32767。
rand()函数不接受参数,默认以1为种子(即起始值)。
随机数生成器总是以相同的种子开始,所以形成的伪随机数列也相同,失去了随机意义。
(但这样便于程序调试)2、C++中另一函数srand(),可以指定不同的数(无符号整数变元)为种子。
但是如果种子相同,伪随机数列也相同。
一个办法是让用户输入种子,但是仍然不理想。
3、比较理想的是用变化的数,比如时间来作为随机数生成器的种子。
time 的值每时每刻都不同。
所以种子不同,所以,产生的随机数也不同。
// C++随机函数(VC program)#include <stdio.h>#include <iostream>#include <time.h>using namespace std;#define MAX 100int main(int argc, char* argv[]){srand( (unsigned)time( NULL ) );//srand()函数产生一个以当前时间开始的随机种子.应该放在for等循环语句前面不然要很长时间等待for (int i=0;i<10;i++)cout<<rand()%MAX<<endl;//MAX为最大值,其随机域为0~MAX-1return 0;}二、rand()的用法rand()不需要参数,它会返回一个从0到最大随机数的任意整数,最大随机数的大小通常是固定的一个大整数。
这样,如果你要产生0~10的10个整数,可以表达为:int N = rand() % 11;这样,N的值就是一个0~10的随机数,如果要产生1~10,则是这样:int N = 1 + rand() % 11;总结来说,可以表示为:a + rand() % n其中的a是起始值,n是整数的范围。
a + rand() % (b-a+1) 就表示a~b之间的一个随机数若要0~1的小数,则可以先取得0~10的整数,然后均除以10即可得到随机到十分位的10个随机小数,若要得到随机到百分位的随机小数,则需要先得到0~100的10个整数,然后均除以100,其它情况依此类推。
通常rand()产生的随机数在每次运行的时候都是与上一次相同的,这是有意这样设计的,是为了便于程序的调试。
若要产生每次不同的随机数,可以使用srand( seed )函数进行随机化,随着seed的不同,就能够产生不同的随机数。
如大家所说,还可以包含time.h头文件,然后使用srand(time(0))来使用当前时间使随机数发生器随机化,这样就可以保证每两次运行时可以得到不同的随机数序列(只要两次运行的间隔超过1秒)。
函数名: random?功能: 随机数发生器用法: int random(int num);程序例:#include <stdlib.h>#include <stdio.h>#include <time.h>/* prints a random number in the range 0 to 99 */int main(void){randomize();printf("Random number in the 0-99 range: %d\n", random (100));return 0;}函数名: randomize功能: 初始化随机数发生器用法: void randomize(void);程序例:#include <stdlib.h>#include <stdio.h>#include <time.h>int main(void)int i;randomize();printf("Ten random numbers from 0 to 99\n\n");for(i=0; i<10; i++)printf("%d\n", rand() % 100);return 0;}rand(产生随机数)相关函数srand表头文件#include<stdlib.h>定义函数int rand(void)函数说明rand()会返回一随机数值,范围在0至RAND_MAX 间。
在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。
关于随机数种子请参考srand()。
返回值返回0至RAND_MAX之间的随机数值,RAND_MAX定义在stdlib.h,其值为2147483647。
范例/* 产生介于1 到10 间的随机数值,此范例未设随机数种子,完整的随机数产生请参考srand()*/#include<stdlib.h>main(){int i,j;for(i=0;i<10;i++){j=1+(int)(10.0*rand()/(RAND_MAX+1.0));printf("%d ",j);}执行9 4 8 8 10 2 4 8 3 69 4 8 8 10 2 4 8 3 6srand(设置随机数种子)相关函数rand表头文件#include<stdlib.h>定义函数void srand (unsigned int seed);函数说明srand()用来设置rand()产生随机数时的随机数种子。
参数seed必须是个整数,通常可以利用geypid()或time(0)的返回值来当做seed。
如果每次seed都设相同值,rand()所产生的随机数值每次就会一样。
返回值返回0至RAND_MAX之间的随机数值,RAND_MAX定义在stdlib.h,其值为2147483647。
范例/* 产生介于1 到10 间的随机数值,此范例未设随机数种子,完整的随机数产生请参考srand()*/ #include<stdlib.h> main() { int i,j; for(i=0;i<10;i++) { j=1+(int)(10.0*rand()/(RAND_MAX+1.0)); printf("%d ",j); } }返回值范例/* 产生介于1 到10 间的随机数值,此范例与执行结果可与rand()参照*/#include<time.h>#include<stdlib.h>main(){int i,j;srand((int)time(0));for(i=0;i<10;i++){j=1+(int)(10.0*rand()/(RAND_MAX+1.0));printf(" %d ",j);}执行5 8 8 8 10 2 10 8 9 92 9 7 4 103 2 10 8 7在指定的两个数之间产生随机数#include <stdio.h>#include <stdlib.h>#include <time.h>//返回a和b之间的随机数,用时间做种子int rand_between_a_b(int a,int b){int c ,re,temp;time_t t;if(a < b){temp = a;a = b;b = temp;}c = a - b;srand((unsigned) time(&t)); //使用时间做种子数re = b + (rand() % c);return re;}int main(){int re;re = rand_between_a_b(35,98);printf("%d\n",re);getch();return 0;}注:srand()配置随机数种子。
srand((unsigned)time(NULL));产生伪随机数数列rand()产生随机数C库里的Rand函数用的是伪随机数生成算法,你不种一个新种子进去,生成的随机数序列都是一样的。
伪随机的意思就是不随机,种子相同的情况下,等次数地获得的“随机”结果都是一样的(函数嘛...)为了让他真随机,就得找个现成的随机量作初值一般选时间作为srand的参数,也就是seed时间函数一、获取日历时间time_t是定义在time.h中的一个类型,表示一个日历时间,也就是从1970年1月1日0时0分0秒到此时的秒数,原型是:typedef long time_t; /* time value */可以看出time_t其实是一个长整型,由于长整型能表示的数值有限,因此它能表示的最迟时间是2038年1月18日19时14分07秒。
函数time可以获取当前日历时间时间,time的定义:time_t time(time_t *)#include <iostream>#include <time.h>using namespace std;int main(void){time_t nowtime;nowtime = time(NULL); //获取当前时间cout << nowtime << endl;return 0;}输出结果:1268575163二、获取本地时间time_t只是一个长整型,不符合我们的使用习惯,需要转换成本地时间,就要用到tm结构,time.h中结构tm的原型是:struct tm {int tm_sec; /* seconds after the minute - [0,59] */int tm_min; /* minutes after the hour - [0,59] */int tm_hour; /* hours since midnight - [0,23] */int tm_mday; /* day of the month - [1,31] */int tm_mon; /* months since January - [0,11] */int tm_year; /* years since 1900 */int tm_wday; /* days since Sunday - [0,6] */int tm_yday; /* days since January 1 - [0,365] */int tm_isdst; /* daylight savings time flag */};可以看出,这个机构定义了年、月、日、时、分、秒、星期、当年中的某一天、夏令时。