标准库函数由15个头文件组成
![1276762-20181209015318135-989159588.png](https://img2018.cnblogs.com/blog/1276762/201812/1276762-20181209015318135-989159588.png)
1.math.h
1.1 绝对值函数![1276762-20181209015512520-1295947701.png](https://img2018.cnblogs.com/blog/1276762/201812/1276762-20181209015512520-1295947701.png)
![1276762-20181209015749942-1066394744.png](https://img2018.cnblogs.com/blog/1276762/201812/1276762-20181209015749942-1066394744.png)
![1276762-20181209020050725-1509263923.png](https://img2018.cnblogs.com/blog/1276762/201812/1276762-20181209020050725-1509263923.png)
![1276762-20181209144548797-1642064266.png](https://img2018.cnblogs.com/blog/1276762/201812/1276762-20181209144548797-1642064266.png)
![1276762-20181209144612355-248367013.png](https://img2018.cnblogs.com/blog/1276762/201812/1276762-20181209144612355-248367013.png)
![1276762-20181209021023755-154476818.png](https://img2018.cnblogs.com/blog/1276762/201812/1276762-20181209021023755-154476818.png)
![1276762-20181209021110799-1220118796.png](https://img2018.cnblogs.com/blog/1276762/201812/1276762-20181209021110799-1220118796.png)
2.字符串处理函数
2.1 字符串长度函数
int strlen(char *d)
功能:返回字符串d的长度,不包括终止符NULL
2.2 字符串连接函数
char *strcat(char *d,char *s)
功能:连接字符串s到字符串d,返回字符串d
char *strncat(char *d,char *s,int n)
功能:连接字符串s中至多n个字符到字符串d,返回字符串d
2.3 字符串复制函数
char *strcpy(char *d,char *s)
功能:复制字符串s到字符串d,返回字符串d
char *strncpy(char *d,char *s,int n)
功能:复制字符串s中至多n个字符串d;如果s小于n个字符,用"\0"补上,返回字符串d
void *memcpy(void *d,void *s,int n)功能:从s复制n个字符到d,返回字符串dvoid *memmove(void *d,void *s,int n)
功能:和memcpy相同,即使d和s相同也运行
2.4 字符串比较函数‘
int strcmp(char *d,char *s)
功能:比较字符串d与字符串s。如果d<s,返回-1;如果d==s,返回0;如果d>s,返回1
int strncmp(char *d,char *s,int n)
功能:比较字符串d中至多n个字符与字符串s。如果d<s,返回-1;如果d==s,返回0;如果d>s,返回1
int memcmp(void *d,void *s,int n)
功能:比较d的首先n个字符与s,和strcmp返回值相同
2.6 字符串查找函数
char *strchr(char *d,char c)
功能:返回一个指向字符串d中c第1次出现的指针;或者如果没有找到c,则返回指向NULL的指针
char *strchr(char *d,char c)
功能:返回一个指向字符串d中c第1次出现的指针;或者如果没有找到c,则返回指向NULL的指针
char *strstr(vhar *d,char *s)
功能:返回一个指向字符串d中字符s第1次出现的指针;或者如果没有找到s,则返回指向NULL的指针
void *memchr(void *d,char c,int n)
功能:返回一个指向被d所指向的n个字符中c第1次出现的指针;或者如果没有找到c,则返回指向NULL的指针
2.7 字符串填充函数
void *memset(void *d,char c,int n)
功能:使用n个字符c填充void*类型变量d
3 字符处理函数
#include
3.1 字符类型判断函数
![1276762-20181209023923017-1354289480.png](https://img2018.cnblogs.com/blog/1276762/201812/1276762-20181209023923017-1354289480.png)
3.2 字符大小写转换函数
int tolower(int c)
功能:转换整数c为小写字母。当c为大写英文字母时,则返回对应的小写字母,否则返回原来的值
int toupper(int c)
功能:转换整数c为大写字母。当c为小写英文字母时,则返回对应的大写字母,否则返回原来的值
4 转换和存储管理函数
#include
4.1 转换函数
![1276762-20181209024359378-2110768247.png](https://img2018.cnblogs.com/blog/1276762/201812/1276762-20181209024359378-2110768247.png)
4.2 存储管理函数
![1276762-20181209024442823-499265021.png](https://img2018.cnblogs.com/blog/1276762/201812/1276762-20181209024442823-499265021.png)
5 随机函数
5.1 找到真正的随机数字是困难的。伪随机数,单词产生的数列是无法预测的,但是每次都会生成同样的一组随机数列。 标准C函数库提供rand()函数,返回[0,MAX]之间均匀分布的伪随机数。rand()函数不接受参数,默认以1为种子(即起始值),它总是以相同的种子开始,所以形成的伪随机数列也相同,不是真正的随机。这是有意设计的,目的是为了便于程序的调试。 另一个函数时srand(),可以使用该函数指定不同的数(无符号整数)为种子。但如果种子相同,那么伪随机数列也相同。我们有两种方法可以采用,一种办法是让用户输入种子,但是效果不是很理想;另一种比较理想的方法是采用变化的数,我们常用时间来作为随机数生成器的种子。这样种子不同,产生的随机数也就不同。5.2
例,使用rand()产生0-10的随机整数int n = rand() % 11;
生成一个[a,b]范围内的一个随机整数,可以用下式表示
int n = a + rand() % (b - a + 1)
例,
#define MAX 100int main(){ int i; srand((unsigned)time(NULL));/*随机数播种函数*/ for(i = 0;i < 10;i++) /*产生10个随机数*/ printf("%d\n",rand()%MAX);/*设定随机数范围并输出*/ return 0;}
srand()函数的参数是一个带NULL参数的time()函数。NULL参数使time()函数以秒为单位读取计算机内部时钟的时间,然后srand()函数使这个时间初始化,rand
()函数设定随机数范围,也就是常说的产生一个以当前时间开始的随机种子。6 日期和时间处理函数
#include
7 诊断函数
assert()函数,作用是测试一个表达式的值是否为false,也就是为0,并且在条件为false时终止程序,参数的表达式的结果是一个整型数据。assert(a==b);
当a和b相等时,表达式的结果是1,等同于true;如果a和b不等,结果就是0,就是false,然后可根据结果决定是否终止程序。当程序出现异常时,可以使用abort()函数以非正常方式立即结束应用程序。
8 命令行参数
标准C语言允许主函数main()有或没有参数列表,可以在主函数main()中使用一个或多个参数,如:int main(int argc,char *argv)是main函数的通常写法,第1个参数,argc表示传递给主函数main()有多少个参数,第2个参数 argv[]以字符串数组的形式接收真正的参数。main()函数本身是索引为0的参数,所以argc至少为1,。在控制台环境中,用户可以在程序路径和名称后面键入参数,将传递给argc[1]、argv[2]等。
//须在DOS下或者在编译器中设置命令行参数,才能运行上面的代码。
在cmd中输入程序的路径和参数,即可输出结果9 其他函数
exit()结束函数 表示结束程序,它的返回值将被忽略。包含在<stdlib.h>头文件中。 原型 :void exit(int retval);
qsort()快速排序函数 根据给出的比较条件进行快速排序,通过指针移动实现排序。排序之后的结果仍放在原数组中。包含在<stdlib.h>头文件中。
原型:void qsort(void *base,int n,int size,int(*fcmp)(const void *,const void *));/***猜数字游戏*/#include#include #include #include #include #define MAX 9int main(){ int b = 0; int n;/*猜的数字*/ int sum = 0;/*猜的次数*/ char array[100]; char *p = array; int num; srand((unsigned)time(NULL));/*随机数播种函数*/ num = 1 + rand()%MAX; /*设定随机数*/ printf("随机数已准备好,范围1到9.\n"); while(!b){ /*猜不到一直循环*/ if(sum >= 5){ printf("次数用完,答案是%d",num); break; } sum += 1; printf("输入你猜的数字\n"); scanf("%s",p); if(strlen(p) == 1){ if(isalpha(*p) != 0){ printf("输入数字,不是字母\n"); } else if(ispunct(*p) != 0){ printf("输入数字,不是标点符号\n"); } else{ n = atoi(p); if(n == num){ b = 1; printf("恭喜!你猜了%d次\n",sum); } else if(n < num && n >= 0){ printf("猜小了\n"); } else if(n > num && n <= 9){ printf("猜大了\n"); } } } else{ printf("数字范围是1到9,输入的数据不对!\n"); } } return 0;}