现在的位置: 首页 > 综合 > 正文

“stdlib.h”

2018年02月20日 ⁄ 综合 ⁄ 共 1030字 ⁄ 字号 评论关闭

1、随机数生成函数

int rand(void):这是一个无参函数,每次调用它系统会自动生成一个随机整数,其值在0和系统设定的符号常量RAND_MAX之间,不同的系统RAND_MAX可能不同,一般为32767.

void srand(unsigned seed):这个函数用参数seed重新设置种子值,库里为生成下一个随机数所保存的一个整数值(由它出发递推,取得下一个随机数),seed默认值为1.

	int i = 0;
	for(;i < 5;i++)
		printf("%d  ",rand());
	putchar('\n');

	srand(5);
	for(i = 0;i < 5;i++)
		printf("%d  ",rand());

第一次使用默认的seed,第二次设置seed为5.

问题1:运行了这个程序你会发现,无论执行多少次所得到的随机数都是相同的,这是因为你的srand是一个特定的值,为了使随机数真正的达到随机效果,我们可以引入srand((unsigned)time(NULL)).这样每次以time函数值(当前时间)为种子的到的数就比较随机,但是要记住引入头文件"time.h".

	srand((unsigned)time(NULL));
	for(i = 0;i < 5;i++)
		printf("%d  ",rand());

问题2:如何使用rand()产生一定范围内的随机数

rand()%100产生1-99之间的随机数。

假如你要产生20-66之间的随机数的话,只需写rand()%47+20(这里的47是由66-20+1得到的)。其他的情况与此类似

 

2、动态存储分配有关

void *malloc(size_t,size)--分配一块足以存放大小为size的存储,返回该存储块的地址,不能满足时返回NULL.

	int *p = (int*)malloc(5*sizeof(int));

void *realloc(void *p,size_t size)--将p所存储块大小调整为size,返回新块的地址,如果能满足要求,新块内容与原块一致,不满足返回NULL,此时原块不变

void free(void * p)--释放以前分配的动态存储块

 

3、几个整数函数

int abs(int n)--求n的绝对值

div_t div(int n,int m)--求n/m,商和余数分别存放到结果结构的对应成员里

	int n = -20;
	printf("%d\n",abs(n));
	printf("%d,%d\n",div(n,3));
打印结果为20,-6,-2.

 

 

抱歉!评论已关闭.