C语言常用的库函数以及随机数的生成

一、常用的库函数

  • 常用库函数如下:
int  atoi(const char *nptr);   // 把字符串nptr转换为int整数
long atol(const char *nptr);     // 把字符串nptr转换为long整数
int  abs(const int j);            // 求int整数的绝对值
long labs(const long int j);     // 求long整数的绝对值
  • 对上述的库函数进行举例说明:
#include <stdio.h>
#include <stdlib.h>   // 如果不包含这个头文件,会出现意外的结果。
 
int main()
{
  int  ii;
  long ll;
 
  ii=atoi("-2147483647");
  ll=atol("-9223372036854775807");
  printf("ii=%d\n",ii);
  printf("ll=%ld\n",ll);
 
  ii=abs(ii);
  ll=labs(ll);
  printf("ii=%d\n",ii);
  printf("ll=%ld\n",ll);
}
  • 运行结果:
    在这里插入图片描述

二、数据类型的别名

  • C语言许程序员使用 typedef 关键字来给数据类型定义一个别名
typedef unsigned int uint;
uint x; 等同于 unsigned int x;

三、随机数

1、生成随机数

  • 在C语言中,我们使用 <stdlib.h> 头文件中的 srand和rand 函数来生成随机数。
void srand(unsigned int seed);   // 随机数生成器的初始化函数
int  rand();                        // 获一个取随机数
  • srand函数初始化随机数发生器(俗称种子),在实际开发中,我们可以用时间作为参数,只要每次播种的时间不同,那么生成的种子就不同,最终的随机数也就不同,通常我们采用 <time.h> 头文件中的 time 函数即可得到一个精确到秒的时间作为种子。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
  int ii;
 
  srand(time(0));  // 播下随机种子
 
  for (ii=0;ii<5;ii++)  // 生成5个随机数
  {
    printf("%d ", rand());  // 获取随机数
  }
 
  printf("\n");
}
  • 运行结果:
    在这里插入图片描述

2、生成一定范围随机数

  • 在实际开发中,需求往往是一定范围内的随机数,对于产生一定范围的随机数,就需要使用一定的技巧,常用的方法是取模运算(取余数),再加上一个加法运算:
int a = rand() % 50;   // 产生0~49的随机数
  • 如果要规定上下限:
int a = rand() % 51 + 100;   // 产生100~150的随机数
  • 取模即取余数,rand()%51+100,rand()%51是产生 0~50 的随机数,后面+100保证 a 最小只能是 100,最大就是 50+100=150。

四、转义字符

转义字符意义ASCII码值使用频率
\n换行(LF) ,将当前位置移到下一行开头。10每天都用
单引号。39常用
"双引号。34常用
\反斜杠。92常用
\r回车(CR)13windows平台常用,linux平台不常用。

五、字符就是整数

  • 字符和整数没有本质的区别。可以给 char 变量一个字符,也可以给它一个整数;反过来,可以给 int 变量一个整数,也可以给它一个字符。
  • char 变量在内存中存储的是字符对应的 ASCII 码值。如果以 %c 输出,会根据 ASCII 码表转换成对应的字符,如果以 %d 输出,那么还是整数。
  • int 变量在内存中存储的是整数本身,如果以 %c 输出时,也会根据 ASCII 码表转换成对应的字符。
    也就是说,ASCII 码表将整数和字符关联起来了。
  • char类型占内存一个字节,signed char取值范围是-128-127,unsigned char取值范围是0-255。
  • 如果整数大于255,那么整数还是字符吗?
    ①、描述再准确一些,在char的取值范围内(0-255),字符和整数没有本质区别。
    ②、字符肯定是整数,0-255范围内的整数是字符,大于255的整数不是字符。
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值