宏定义、随机数和时间函数

🌞欢迎来到C语言的世界 
🌈博客主页:卿云阁

💌欢迎关注🎉点赞👍收藏⭐️留言📝

🌟本文由卿云阁原创!

🌠本阶段属于锻体阶段,希望各位仙友顺利完成突破

📆首发时间:🌹2021年1月21日🌹

✉️希望可以和大家一起完成进阶之路!

🙏作者水平很有限,如果发现错误,请留言轰炸哦!万分感谢!


目录

0️⃣宏定义

1️⃣ 随机数和时间函数

 0️⃣✨✨✨宏定义✨✨✨  

宏定义包括不带参数的宏定义和带参数的宏定义两种。格式为:

#define标志符[(参数列表)]  字符串

这里的标志符称为宏名,[]表示可有可没有。将宏替换成字符串的过程称为“宏展开”,它在预处理阶段完成。

(1) 不带参数的宏定义。格式为:

#define 标识符 字符串

#include<stdio.h>
#define PI 3.1415
int main(void)
{
    int r = 3;
    int area;
    area=r*r*PI;
    printf("area=%d",area);
    return 0;
}

(2) 带参数的宏定义。这是一种复杂的宏定义,其格式为:

#define 标识符(参数列表)  字符串

其中字符串包括参数列表的内容。预处理时,把括号中对应的参数原封不动地换成字符串中出现的参数,字符串中其余字符不变。

#include<stdio.h>
#define  max(x,y)  x>y?x:y
int main(void)
{
    int a=3;
    int b=4;
    printf("max=%d",max(a,b));
    return 0;
}

 

 记住:原封不动

我个人认为一个好的程序具有以下特点

1.易于阅读

2.易于纠错

3.运行速度快

4.占用内存小

5.易于复用(便于产品升级)


1️⃣✨✨✨ 随机数和时间函数✨✨✨

srand((unsigned)time(NULL)) 

现在的C编译器都提供了一个基于ANSI标准的伪随机数发生器函数,用来生成随机数。它们就是rand()和srand()函数。这二个函数的工作过程如下:
1) 首先给srand()提供一个种子,它是一个unsigned int类型,其取值范围从0~65535;
2) 然后调用rand(),它会根据提供给srand()的种子值返回一个随机数(在0到32767之间)
3) 根据需要多次调用rand(),从而不间断地得到新的随机数;
4) 无论什么时候,都可以给srand()提供一个新的种子,从而进一步“随机化”rand()的输出结果。

 若之前没有调用srand(seed),那么系统会自动给seed赋初始值,即srand(1)自动调用它一次

要想使用随机函数rand(),就必须先要初始化随机种子。具体点就是在main函数的开头加上srand((unsigned)time(NULL))就可以了,由于需要使用time所以还必须添加上time.h头文件。

例如:

从1、2、3、4、5、6、7、8、9、0这十个数中随机取出一个数,取出的数是6的话,那么6就叫随机数十个数字就叫随机数种子

如果是从1到50之间取数字,取出的数字叫随机数,这1到50那50个数字就叫随机数种子。

rand() 是产生一个随机整数的函数,其分布范围是0到最大的整数,
rand() %100 指和100取余,得到一个0到99整数
rand() %100 +1 得到一个1到100的整数

二,例子

用srand(time(NULL));作为种子,生成100个50到100之间的整数,并把它们每10个一行输出出来,观察它们相同数据的情况。观察各数出现的频率是否大致一样?如果生成100个50到60之间的整数,做同样的操作再观察各数出现的频率规律。

#include <stdlib.h>
#include <stdio.h>
#include <time.h> /*用到了time函数,所以要有这个头文件*/
int main( void)
{
    int number[100] = {0};
    int i;
    srand((unsigned) time(NULL)); //设置种子 
    for(i = 0; i < 100; i++)
    {
        number[i] = rand() % 51 + 50; //产生随机数 
        printf("%d ", number[i]);
    }
    printf("\n");
    return 0;
}

#include <stdlib.h>
#include <stdio.h>
#include <time.h> /*用到了time函数,所以要有这个头文件*/
int main( void)
{
    int number[100] = {0};
    int i;
    srand((unsigned) time(NULL)); //设置种子 
    for(i = 0; i < 100; i++)
    {
        number[i] = rand() % 11 + 50; //产生随机数 
        printf("%d ", number[i]);
    }
    printf("\n");
    return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

卿云阁

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

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

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

打赏作者

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

抵扣说明:

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

余额充值