【C/C++】之C语言库函数

  这个帖子记录一下 C语言 中经常用到的函数库中的函数及其用法。

 

1、<math.h>

  math.h是进行数学操作的函数库。使用这个函数库,需要先导入包: #include <math.h> 。math包中的函数如下:

函数定义函数功能函数说明
int abs(int x) 求整数x的绝对值  
double fabs(double x) 求实数x的绝对值 小数部分不会被忽略
double exp(double x) 求e的x次方的值  
double floor(double x) 将实数x向下取整  
double ceil(double x) 将实数x向上取整  
double log(double x) 求以e为底x的对数的值  
double log10(double x) 求以10为底x的对数的值  
double pow(double x, double y) 求x的y次方的值  
double sqrt(double x) 将x开平方  
double sin(double x) 求弧度x的正弦值 x是弧度值
double cos(double x) 求弧度x的余弦值 x是弧度制
double tan(double x) 求弧度x的正切值 x是弧度制

  以下是利用上面的函数编写的代码:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main() {
    printf("-20的绝对值是:%d\n", abs(-20));
    printf("-20.5的绝对值是:%f\n", fabs(-20.5));
    printf("e的二次方的值是:%f\n", exp(2));
    printf("20.9向下取整是:%f\n", floor(20.9));
    printf("20.1向上取整是:%f\n", ceil(20.1));
    printf("以e为底100的对数是:%f\n", log(100));
    printf("以10为底100的对数是:%f\n", log10(100));
    printf("2的3次方的值是:%f\n", pow(2, 3));
    printf("9开平方的值是:%f\n", sqrt(9));
    return 0;
}

  运行结果如下:

-20的绝对值是:20
-20.5的绝对值是:20.500000
e的二次方的值是:7.389056
20.9向下取整是:20.000000
20.1向上取整是:21.000000
以e为底100的对数是:4.605170
以10为底100的对数是:2.000000
2的3次方的值是:8.000000
9开平方的值是:3.000000

Process returned 0 (0x0)   execution time : 1.966 s
Press any key to continue.

 

2、<ctype.h>

  ctype.h是进行字符操作的函数库。使用这个函数库需要先导入包: #include <ctype.h> 。ctype包中的函数如下:

函数定义函数功能函数说明
int isalnum(int ch) 判断字符是不是字母或数字 参数可以是ASCII码,也可以是一个字符
int isalpha(int ch) 判断字符是不是字母 参数可以是ASCII码,也可以是一个字符
int isdigit(int ch) 判断字符是不是数字 参数可以是ASCII码,也可以是一个字符
int islower(int ch) 判断字符是不是小写字母 参数可以是ASCII码,也可以是一个字符
int isupper(int ch) 判断字符是不是大写字母 参数可以是ASCII码,也可以是一个字符
int ispunct(int ch) 判断字符是不是除空格、字母、数字之外的可打印字符 参数可以是ASCII码,也可以是一个字符
int isspace(int ch) 判断字符是不是空格、制表或换行符 参数可以是ASCII码,也可以是一个字符
int tolower(int ch) 将大写字母转换成小写字母 参数可以是ASCII码,也可以是一个字符
int toupper(int ch) 将小写字母转换成大写字母 参数可以是ASCII码,也可以是一个字符

  以下是利用上面的函数编写的代码:

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

int main() {
    printf("m是不是数字或字母?%s\n", isalnum('m') ? "" : "");
    printf("m是不是字母?%s\n", isalpha('m') ? "" : "");
    printf("m是不是数字?%s\n", isdigit('m') ? "" : "");
    printf("m是不是小写字母?%s\n", islower('m') ? "" : "");
    printf("m是不是大写字母?%s\n", isupper('m') ? "" : "");
    printf("%是不是除空格、字母、数字之外的可打印字符?%s\n", ispunct('%') ? "" : "");
    printf("\\n是不是空格、制表符或换行符?%s\n", isspace('\n') ? "" : "");
    printf("将m转为大写字母:%c\n", toupper('m'));
    printf("将M转为小写字母:%c\n", tolower('M'));
    return 0;
}

  运行结果如下:

m是不是数字或字母?是
m是不是字母?是
m是不是数字?否
m是不是小写字母?是
m是不是大写字母?否
是不是除空格、字母、数字之外的可打印字符?是
\n是不是空格、制表符或换行符?是
将m转为大写字母:M
将M转为小写字母:m

Process returned 0 (0x0)   execution time : 1.732 s
Press any key to continue.

 

3、<string.h>

  string.h是进行字符串操作的函数库。使用这个函数库需要导入包: #include <string.h> 。string包中的函数如下:

函数定义函数功能函数说明
char* strcat(char* s1, char* s2) 将字符串s2拼接到字符串s1后面 字符串s1的长度必须足够
char* strcpy(char* s1, char* s2) 将字符串s2复制给字符串s1  
int strcmp(char* s1, char* s2) 字符串s1和s2进行比较 逐个字母比较,字母大的大;如果前面的字母都相同,则长的字符串大
unsigned strlen(char* s) 获取字符串s的长度  
char* strstr(char* s1, char* s2) 获取s1中s2第一次出现的地方后面的内容 包括s2

  以下是利用上面的函数编写的代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {
    char s1[80] = "I am string 1.";
    char* s2 = "I am not string 2.";
    printf("字符串1的值是:%s\n", s1);
    printf("字符串2的值是:%s\n", s2);
    printf("将s2拼接到s1后面得到:%s\n", strcat(s1, s2));
    printf("s1和s2比较:%s\n", strcmp(s1, s2) ? "s1大" : "s2大");
    printf("将s2复制给s1:%s\n", strcpy(s1, s2));
    printf("字符串s1的长度:%d\n", strlen(s1));
    printf("s1中not及之后的内容:%s\n", strstr(s1, "not"));
    return 0;
}

  运行结果如下:

字符串1的值是:I am string 1.
字符串2的值是:I am not string 2.
将s2拼接到s1后面得到:I am string 1.I am not string 2.
s1和s2比较:s1大
将s2复制给s1:I am not string 2.
字符串s1的长度:18
s1中not及之后的内容:not string 2.

Process returned 0 (0x0)   execution time : 1.747 s
Press any key to continue.

 

posted on 2017-04-07 13:53  ITGungnir  阅读(936)  评论(0编辑  收藏  举报

导航