附录 A 常用 C/C++ 标准库函数
附錄
附录 A 常用的 C/C++ 标准库函数
- 数学函数(使用时要包括的头文件:math.h)
int abs(int n); 求 n 的绝对值。
double acos(double x); 求 $ \cos^{-1}(x) $ 的值, $ -1 \leqslant x \leqslant 1 $。
long double acosl(long double x); 同上(以下的“同上”均指的是含义同上,但可能数据类型等会有差异)。
double asin(double x); 求 $ \sin 1^{-1}(x) $ 的值, $ -1 \leq x \leq 1 $。
long double asinl(long double x); 同上。
double atan(double x); 求 $ \tan^{-1}(x) $ 的值。
long double atanl(long double x); 同上。
double atan2(double x, double y); 求 $ \tan^{-1}(x/y) $ 的值。
long double atan2l(long double x, long double y); 同上。
double ceil(double x); 对 x 向上取整,计算且返回一个 double 型的大于或等于 x 的最小整数。
long double ceil(long double x); 同上。
double cos(double x); 计算 $ \cos(x) $ 的值,x 采用弧度值。
long double cosl(long double x); 同上。
double cosh(double x); 求 x 的双曲余弦值。
long double coshl(long double x); 同上。
double exp(double x); 计算 $ e^x $ 的值。
long double expl(long double x); 同上。
double fabs(double n); 返回 n 的绝对值。
long double fabsl(long double n); 同上。
double floor(double x); 对 x 向下取整,计算并返回一个 double 型的小于或等于 x 的最大整数。
long double floorl(long double x); 同上。
double fmod(double x, double y); 计算整除 x/y 的余数。
long double fmodl(long double x, long double y); 同上。
double hypot(double x, double y); 求直角三角形的斜边长。
long int labs(long int n); 计算长整型 n 的绝对值。
double log(double x); 计算 $ \ln(x) $ 的值。
long double logl(long double x); 同上。
double log10(double x); 计算 $ \log_{10}(x) $ 的值。
long double log10l(long double x); 同上。
double pow(double x,double y); 求 $ x^{y} $ 的值。
long double powl(long double x,long double y); 同上。
double $ \sin(double x) $; 求 $ \sin(x) $ 的值, x 采用弧度值。
long double sinl(long double x); 同上。
double sinh(double x); 求 x 的双曲正弦值。
long double sinh(long double x); 同上。
double sqrt(double x); 求 x 的平方根值。
long double sqrt(long double x); 同上。
double $ \tan(double x) $; 求 $ \tan(x) $ 的值, x 采用弧度值。
long double tanl(long double x); 同上。
double $ \tanh(double x) $; 求 x 的双曲正切值。
long double tanhl(long double x); 同上。
2. 字符测试函数(使用时要包括的头文件:ctype.h)
int isalnum(int ch); 测试字符 ch 是否为字母或数字。如果 ch 在 A~Z, a~z 或 0~9 的范围内,返回非 0 值;否则,返回 0 值。
int isalpha(int ch); 测试字符 ch 是否为字母。如果 ch 在 A~Z 或 a~z 的范围内,则返回非 0 值;否则,返回 0 值。
int iscntrl(int ch); 测试字符 ch 是否为控制字符(ASCII 码 0~0X1F)或者 DEL(ASCII 码 0X7F)。如果是,就返回非 0 值;否则,返回 0 值。
int isdigit(int ch); 测试 ch 字符是否为十进制数字。如果 ch 是一个十进制数字(0~9),返回非 0 值;否则,返回 0 值。
int isgraph(int ch); 测试字符 ch 是否为除空格外的可打印字符(ASCII 码 0X21~0X7E)。如果是,返回非 0 值;否则,返回 0 值。
int islower(int ch); 测试字符 ch 是否为小写字母。如果 ch 是小写字母,返回非 0 值;否则,返回 0 值。
int isprint(int ch); 测试字符 ch 是否为可打印字符(ASCII 码 0X20~0X7E)。如果是,返回非 0 值;否则,返回 0 值。
int ispunct(int ch); 测试字符 ch 是否为非空格、字母和数字的可打印字符。如果是,返回非 0 值;否则,返回 0 值。
int isspace(int ch); 测试字符 ch 是否为空白字符(ASCII 码 0X09~0X0D,包括空格、水平制表符、垂直制表符、换页、回车或换行符)。如果是,返回非 0 值;否则,返回 0 值。
int isupper(int ch); 测试字符 ch 是否为大写字母。如果 ch 是大写字母,返回非 0 值;否则,返回 0 值。
int isxdigit(int ch); 测试字符 ch 是否为十六进制数字。如果 ch 是一个十六进制数字 (0~9, A~F 或 a~f), 返回非 0 值; 否则, 返回 0 值。
int tolower(int ch); 把 ch 转换为小写字母。
int toupper(int ch); 把 ch 转换为大写字母。
3. 字符串函数(使用时要包括的头文件:string.h)
注意:类型 size_t 为 unsigned int。
void *memchr(const void*s,int ch,size_t n); 在前 n 个字符中查找字符 ch,并返回找到的地址;否则,返回 NULL。
int memcmp(const void*s1, const void*s2, size_t n); 比较由 s1 和 s2 指出的两个块的前 n 个字节。如果 s1 小于 s2,返回值为<0;如果 s1 等于 s2,返回值为=0;如果 s1 大于 s2,返回值为>0。
int memcmp(const void*s1, const void*s2, size_t n); 比较由 s1 和 s2 指出的两个块的前 n 个字节。与 memcmp()的区别是:memcmp()忽略大小写。
void *memcpy(void*dest, const void*src, size_t n); 从源 src 中复制 n 个字节到目标 dest 中。返回 dest 值。如果 src 与 dest 地址有重叠,则 memcpy 的动作未定义。
void *memmove(void*dest, const void*src, size_t n); 从源 src 中复制 n 个字节到目标 dest 中。返回 dest 值。与 memcpy() 的区别是:即使 src 与 dest 地址有重叠,重叠处的字节也能正确复制。
void *memset(void* s, int ch, size_t n); 设置内存块中的前 n 个字节为 ch,并返回 s。
char *strcat(char*dest, const char*src); 将 src 复制到 dest 的尾部,结果串的长度为 strlen(dest)+strlen(src)。返回指向合并串的首指针。
char *strncat(char*dest, const char*src, size_t n); 将 src 中至多 n 个字符复制到 dest 的尾部,然后附加一个空字符,结果串的最大长度为 $ \text{strlen}(\text{dest}) + n $。
char *strchr(const char*s, int c); 在一个串中查找给定字符的第一个匹配之处,并返回该匹配字符的指针,如果没有,则返回 NULL,NULL 被认为是串中的一部分,则“strchr(str, NULL)”将返回指向串 str 的空终结符的指针。
int strcmp(const char*s1, const char*s2); 执行 s1 和 s2 的无符号比较,从每个串的第一个字符开始顺序比较,一直比到有某个字符不同或串结束为止。
int strcmpi(const char*s1, const char*s2); 执行 S1 和 S2 的无符号比较,比较中不区分大小写。
int strcmp(const char*s1, const char*s2); 同上。
int strncmp(const char*s1, const char*s2, size_t maxlen); 执行 s1 和 s2 的无符号比较,从每个串的第一个字符开始按顺序比较,一直比到有某个字符不同或已比较了 maxlen 个字符为止。其余同 strcmp()。
char *strcpy(char* dest, const char*src); 复制串 src 到 dest,一直到遇到 NULL 才终止,返回 dest。
char *strncpy(char*dest, const char*src, size_t maxlen); 若 src 的长度小于 maxlen,从 src 中复制至多 maxlen 个字符到 dest 中,截去 dest 中在 maxlen 长度以外的字符,或用 NULL 字符填补 dest,若 src 的长度等于或大于 maxlen,则结束串 dest 可能不以 NULL 字符结束。
char* strdup(const char*s); 创建串 s 的副本,它用社会实践()分配空间,被分配的空间为 strlen(s)+1 个字符,当不再使用该空间时,由用户释放 strdup 所占用的空间。返回指向包含串副本的空间的指针,或当没有足够空间时,它将返回 NULL。
char* strset(char* s, int ch); 将串中的所有字符都设置成指定字符 ch。遇到 NULL 字符时终止。
char* strnset(char* s,int ch, size_t n); 将串中的前 n 个字符都设置成指定字符 ch。若 n>strlen(s),则用 strlen(s)取代 n。遇到 NULL 字符时终止。
char*strrev(const char*s); 串的逆转。
char* strstr(const char* s1, const char* s2); 在字符串 s1 中扫描字符串 s2 的第一次出现。返回出现 s2 时 s1 中的指针,如果 s2 不在 s1 中,则返回 NULL。
4. 时间函数(使用时要包括的头文件:time.h)
在 time.h 中定义:
typedef long clock_t;
typedef long time_t;
time.h 中声明了 tm 结构,其中有日期和时间的细分成员。
struct tm
{
int tm_sec;//秒
int tm_min;//分
int tm_hour;//时(0~23)
int tm_mday;//日(1~31)
int tm_mon;//月(0~11)
int tm_year;//年(日历年份减去1900)
int tm_wdqy;//星期几(0~6),星期天为0
int tm_yday;//从1月1日算起的天数
};
char* asctime(const struct tm *tb); 将在 tb 中作为结构存储的时间转换为与 ctime 串格式相同的 26 字符长串。
clock_t clock(); 确定两次事件之间的时间间隔。若除以 CLK_TCK,则为秒数。
char* ctime(const time_t *time); 把参数指定的时间值转换成时间字符串。
double difftime(time_t time2, time_t time1); 计算从 time1 到 time2 的时间,单位为秒。
struct tm*gmtime(const time_t *timer); 把时间和日期转换为格林威治时间的 tm 结构形式分解的时间格式。
long time(long *timer); 取一天的时间,且把它存在 timer 所指的位置中。
struct tm*localtime(const time_t *timer);把时间和日期转换为本地时间的 tm 结构形式分解的时间格式。
time_t mktime(struct tm*t); 将 t 所指的时间转换为日历时间,与 time 函数使用的时间格式相同。各个字段 tm_sec,tm_min,tm_hour,tm_mday 和 tm_mon 的原值并不局限于 tm 结构中描述的范围,若这些域不在正确范围内,就会得到调整。在上述域的值调整后,再计算 tm_wday 和 tm_yday 的值。若本函数未能将时间信息表示为合法的日历时间,则 mktime 返回 -1(日历年份范围为 1970 年~2030 年)。
- C++中的 I/O 流(使用 I/O 流和通用 I/O 函数时要包括的头文件:iostream.h;使用控制符时要包括的头文件:iomanip.h)
(1)使用 I/O 流
因为在 C++ 的 I/O 新库 iostream.h 中声明了输入流对象 cin 和输出流对象 cout,所以,使用 I/O 流时,应写上 “#include<iostream.h”;”。
输出显示时的语句格式为:
cout<<被输出的信息 1[<<被输出的信息 2<<..<<被输出的信息 n];
键盘输入时的语句格式为:
cin>>变量名 1[>>变量名 2>>>...>>变量名 n];
(2) 使用控制符
控制符是在头文件 iomanip.h 中定义的,它可以对 I/O 流的格式进行控制。则使用控制符时,应写上 “#include
1 )控制浮点数值显示。
浮点形式:setprecision(n),表示有效位数。
定点形式:(setiosflags(ios::fixed)),setprecision(n),表示小数位数。
指数形式:(setiosflags(ios::scientific)),setprecision(n),表示小数位数。
系统默认设置为 setprecision(6)。
2 )设置值的输出宽度。
setw(n); 设置字段宽度为 n 个字符;如果实际输出宽度比 n 大,则按实际输出宽度输出;如果实际输出宽度比 n 小,则前补空格。
3 )输出16进制数
setiosflags(ios::uppercase); 控制 16 进制大写输出
4 )设置填充字符
setfill(c); 设置填充字符为 c,即在所设置的域宽范围内,后部是数据,如果数据填不满,则前部填满字符 c。
5 )左右对齐输出
setiosflags(ios::left);设置左对齐。
setiosflags(ios::right);设置右对齐。
6 )强制显示小数点和符号
setiosflags(ios::showpoint);显示小数点。
setiosflags(ios::showpos);显示正号。
7 )终止原有输出格式
resetiosflags(原有输出格式); 终止原有输出格式,“原有输出格式”要填写内容,如ios::showpos, ios::dec 等。
6. 标准库函数(使用时要包括的头文件:stdlib.h)
double atof(const char*str); 将 str 串转换为 double 值。
int atoi(const char* str); 将 str 串转换为 int 值。
char* itoa(int num, char* str, int radix); 将整数 num 转换成与其等价的字串,且将结果存在 str 指向的字串中,输出串的进制数由 radix 决定。
long atol(const char*str); 将 str 串转换成 long int 值。
char* ltoa(long num, char* str, int radix); 把长整数 num 转换成与其等价的字串,且将结果存在 str 指向的字串中,输出串的进制数由 radix 决定。
void exit(int status); 程序无条件终止。
void abort(void); 程序异常终止。
int rand(void); 返回一个随机数。
void srand (unsigned x); 用一个无符号整数 x 对随机数发生器进行初始化。
- 文本窗口显示函数(使用时要包括的头文件:conio.h)
int getch(void); 读取一个键盘字符,不回显。
int getche(void); 读取一个键盘字符,回显。
int putch(int ch); 输出字符 ch 在当前窗口中。
int kbhit(void); 检测键盘是否有按键按下。如果是,返回非 0 值;否则,返回 0 值。
注意:其他的 C/C++ 标准函数和命令(语句)可在 Visual C++ 6.0 的帮助(Help)和一些 C/C++ 标准函数手册中找到。
另外,还可以使用 DOS 命令,程序书写格式如下:
system("DOS 命令"); //注意:转路径要用 2 个反斜杠表示
#include
例如:
#include
system("cls");//清屏幕
system("type d:\\6df\\test2.txt");//显示该路径下的 test2 文本文件的内容
| ASCII 码 | 字符 | 16 进制 | ASCII 码 | 字符 | 16 进制 | ASCII 码 | 字符 | 16 进制 |
| 0 | NUL | 00 | 9 | HT | 09 | 18 | DC2 | 12 |
| 1 | SOH | 01 | 10 | LF | 0A | 19 | DC3 | 13 |
| 2 | STX | 02 | 11 | VT | 0B | 20 | DC4 | 14 |
| 3 | ETX | 03 | 12 | FF | 0C | 21 | NAK | 15 |
| 4 | EOT | 04 | 13 | CR | 0D | 22 | SYN | 16 |
| 5 | ENQ | 05 | 14 | SO | 0E | 23 | ETB | 17 |
| 6 | ACK | 06 | 15 | SI | 0F | 24 | CAN | 18 |
| 7 | BEL | 07 | 16 | DLE | 10 | 25 | EM | 19 |
| 8 | BS | 08 | 17 | DC1 | 11 | 26 | SUB | 1A |
(续)
| ASCII 码 | 字符 | 16 进制 | ASCII 码 | 字符 | 16 进制 | ASCII 码 | 字符 | 16 进制 |
|---|---|---|---|---|---|---|---|---|
| 27 | ESC | 1B | 55 | 7 | 37 | 83 | S | 53 |
| 28 | FS | 1C | 56 | 8 | 38 | 84 | T | 54 |
| 29 | GS | 1D | 57 | 9 | 39 | 85 | U | 55 |
| 30 | RS | 1E | 58 | : | 3A | 86 | V | 56 |
| 31 | US | 1F | 59 | ; | 3B | 87 | W | 57 |
| 32 | Space | 20 | 60 | < | 3C | 88 | X | 58 |
| 33 | ! | 21 | 61 | = | 3D | 89 | Y | 59 |
| 34 | " | 22 | 62 | > | 3E | 90 | Z | 5A |
| 35 | # | 23 | 63 | ? | 3F | 91 | [ | 5B |
| 36 | $ | 24 | 64 | @ | 40 | 92 | \ | 5C |$
| 37 | % | 25 | 65 | A | 41 | 93 | ] | 5D |
|---|---|---|---|---|---|---|---|---|
| 38 | & | 26 | 66 | B | 42 | 94 | ^ | 5E |
| 39 | ' | 27 | 67 | C | 43 | 95 | - | 5F |
| 40 | ( | 28 | 68 | D | 44 | 96 | ` | 60 |
| 41 | ) | 29 | 69 | E | 45 | 97 | a | 61 |
| 42 | * | 2A | 70 | F | 46 | 98 | b | 62 |
| 43 | + | 2B | 71 | G | 47 | 99 | c | 63 |
| 44 | , | 2C | 72 | H | 48 | 100 | d | 64 |
| 45 | - | 2D | 73 | I | 49 | 101 | e | 65 |
| 46 | . | 2E | 74 | J | 4A | 102 | f | 66 |
| 47 | / | 2F | 75 | K | 4B | 103 | g | 67 |
| 48 | 0 | 30 | 76 | L | 4C | 104 | h | 68 |
| 49 | 1 | 31 | 77 | M | 4D | 105 | i | 69 |
| 50 | 2 | 32 | 78 | N | 4E | 106 | j | 6A |
| 51 | 3 | 33 | 79 | O | 4F | 107 | k | 6B |
| 52 | 4 | 34 | 80 | P | 50 | 108 | l | 6C |
| 53 | 5 | 35 | 81 | Q | 51 | 109 | m | 6D |
| 54 | 6 | 36 | 82 | R | 52 | 110 | n | 6E |
(续)
| ASCII 码 | 字符 | 16 进制 | ASCII 码 | 字符 | 16 进制 | ASCII 码 | 字符 | 16 进制 |
| 111 | O | 6F | 117 | u | 75 | 123 | { | 7B |
| 112 | p | 70 | 118 | v | 76 | 124 | | | 7C |
| 113 | q | 71 | 119 | w | 77 | 125 | } | 7D |
| 114 | r | 72 | 120 | x | 78 | 126 | ~ | 7E |
| 115 | s | 73 | 121 | y | 79 | 127 | DEL | 7F |
| 116 | t | 74 | 122 | z | 7A |
注:0~31 是控制字符。
参 考 文 献
[1] Bjarne Stroustrup. The C++ Programming Language[M]. 北京:高等教育出版社,2001.
[2] 谭浩强. C++程序设计[M]. 北京:清华大学出版社,2004.
[3] 钱能. C++程序设计教程[M]. 北京:清华大学出版社,1999.
[4] 求是科技. Visual C++ 6.0 程序设计与开发技术大全[M]. 北京:人民邮电出版社,2004.
[5] 张曜,郭立山,谭超强. C++函数实用手册[M]. 北京:冶金工业出版社,2003.
[6] 钱能. C++程序设计实验指导[M]. 北京:清华大学出版社,1999.
[7] 黄品梅.以道德品质为引领,促创新人才之培养[J].电气电子教学学报,2009(31):102-105.
[8] 黄品梅. 学习 C++ 的方法[J]. 电脑学习,2008(5):29-30.
[9] 黄品梅.解决面向对象设计的关键问题——设置类及继承[J]. 电脑开发与应用,2008,21(6):36-37,40.
Document generated by Anna's Archive around 2023-2024 as part of the Duxiu collection
(https://annas-blog.org/duxiu-exclusive.html).
Images have been losslessly embedded. Information about the original file can be found in PDF attachments. Some stats (more in the PDF attachments):
{
"filename": "44CKQysr56iL5bqP6K6+6K6h5pWZ56iLICD1jJbpmr7kuLrmmJPInLD1rabkuaBDKyvjgltfMTI3NjcxNzUuemlw",
"filename_decoded": "u300aC++u7a0b/u5e8fuu8bbe/u8ba1/u6559/u7a0b
<u5316>u96beu4e3a/u6613u5730u5b66u4e60C++u300b_12767175.zip",
"filesize": 30967162,
"md5": "52d0326380cecb1feb5e62008b7ce863",
"header_md5": "527081cdddb0e1dce8c101ae8dcc20ab",
"sha1": "08f62f2583a83fcf32db89b41d5571716ec2dda9",
"sha256": "02e2c90d5d9916f372394da482d75dc0c64baa20f0cf0a8c484dbae1b8bf8133",
"crc32": 3483015006,
"zip_password": "",
"uncompressed_size": 33277937,
"pdg_dir_name": "u00edu2562C++u2502u2560u2568u2265u2554u03a6u255d<u255e>u2560<u255u>u00bbu2500u2564u256c<u00ac>u2565<u256b<u2561>u256a<u2564<u00ba>u2567<u2591C++u00edu2556_12767175",
"pdg_main_pages_found": 316,
"pdg_main_pages_max": 316,
"total_pages": 329,
"total_pixels": 2058257568,
"pdf_generation_missing_pages": false
}