c++刷题常用技巧

记录常用的好用的c++刷题技巧以及方法的库函数
严格遵顼 ANSI-C 标准
技巧
库函数

技巧

库函数


此部分以头文件分类


<cctype>
功能函数原型
判断一个字符是否是字母或者数字int isalnum ( int c );
判断一个字符是否是一个字母int isalpha ( int c );
判断一个字符是否是一个控制字符int iscntrl ( int c );
判断一个字符是否是一个十进制数字int isdigit ( int c );
判断一个字符是否是一个可视字符(不是空白字符或控制字符)int isgraph ( int c );
判断一个字符是否是一个小写字母int islower ( int c );
判断一个字符是否是一个大写字母int isupper ( int c );
判断一个字符是否是可打印的int isprint ( int c );
判断一个字符是否是标点符号int ispunct ( int c );
判断一个字符是否是空白字符int isspace ( int c );
判断一个字符是否是十六进制数字int isxdigit ( int c );
将一个字母转换为大写int toupper ( int c );
将一个字母转换为小写int tolower ( int c );

上述函数函数原型中,返回值均为 int 类型
判断作用的函数返回 true(1) 或 false(0)
转换作用的返回转换后的 ascii 码

下面贴出来部分函数的取值对照表,打×表示在此输入下函数返回true

ASCII valuescharactersiscntrlisspaceisupperislowerisalphaisdigitisxdigitisalnumispunctisgraphisprint
0x00 … 0x08NUL, (other control codes)x
0x09 … 0x0D(white-space control codes: ‘\t’,’\f’,’\v’,’\n’,’\r’)xx
0x0E … 0x1F(other control codes)x
0x20space (’ ')xx
0x21 … 0x2F!"#$%&’()*+,-./xxx
0x30 … 0x3901234567890xxxxx
0x3a … 0x40:;<=>?@xxx
0x41 … 0x46ABCDEFxxxxxx
0x47 … 0x5AGHIJKLMNOPQRSTUVWXYZxxxxx
0x5B … 0x60[]^_`xxx
0x61 … 0x66abcdefxxxxxx
0x67 … 0x7Aghijklmnopqrstuvwxyzxxxxx
0x7B … 0x7E{|}~xxx
0x7F(DEL)x

<cmath>

此部分只介绍我认为常用的,都很简单

功能函数原型
求幂double pow ( double base, double exponent );
long double pow ( long double base, long double exponent );
float pow ( float base, float exponent );
开方double sqrt ( double x );
float sqrt ( float x );
long double sqrt ( long double x );
向上取整float ceil ( float x );
double ceil ( double x );
long double ceil ( long double x );
向下取整double floor ( double x );
float floor ( float x );
long double floor ( long double x );
取绝对值double fabs ( double x );
float fabs ( float x );
long double fabs ( long double x );
取余数double fabs ( double x );
float fabs ( float x );
long double fabs ( long double x );

<cstdio>
  1. printf()
    这是一个格式化输出函数,通过占位符实现格式化输出
    格式化占位符格式为

     %[flags][width][-precision][length]specifier
     即 %[标识符][宽度][精度][长度]格式字符
     []包裹的为可选参数,其余为必须参数->(%specifier)是最小形式
    
    flags标识符作用
    -左对齐(默认右对齐)
    +显示正负号(默认仅负号显示)
    (空格)如果没有写入任何符号,则在该值前插入一个空格(没看懂)
    #与o、x、X、一起使用,显示进制标识符0、0x、0X
    与e、E、f一起使用,强制显示小数点?
    与g、G一起使用时结果与e、E一起使用相同,但是尾部的零不会被移除
    0使用零作为填充字符而不是空格(参考width)
    width宽度作用
    (数字)要输出的字符的最小数目(宽度),若输出短于该值,以空格填充,若长于该值,按原字符输出
    *宽度在format字符串中未指定,但是会作为附加整数值参数放置于要被格式化的参数之前(没看懂)
    .precision精度作用
    .number对于整数说明符(格式字符),指定了要写的数字的最小位,如果短于该值,用前导零填充,否则按原字符输出,精度为0意味着不写入任何字符。
    对于 e、E 和 f 说明符:要在小数点后输出的小数位数。
    对于 g 和 G 说明符:要输出的最大有效位数。
    对于 s: 要输出的最大字符数。默认情况下,所有字符都会被输出,直到遇到末尾的空字符。
    对于 c 类型:没有任何影响。
    当未指定任何精度时,默认为 1。如果指定时不带有一个显式值,则假定为 0.
    length(长度)作用
    我觉得这个没用裂开
    格式字符作用
    d以十进制形式输出带符号整数(正数不输出符号)
    o以八进制形式输出无符号整数(不输出前缀0)
    x,X以十六进制形式输出无符号整数(不输出前缀Ox)
    u以十进制形式输出无符号整数
    f以小数形式输出单、双精度实数
    e,E以指数形式输出单、双精度实数
    g,G以%f或%e中较短的输出宽度输出单、双精度实数
    c输出单个字符
    s输出字符串
    p输出指针地址
    lu32位无符号整数
    llu64位无符号整数

除此之外,printf()也可以直接打印信息

printf(“hello world!”);

  1. scanf()
    int scanf(const char *format, ...);
    该函数根据传入的format字符串为格式进行读取,读取的结果保存在后续传入的引用参数中

    format 的形式有:
    (只介绍常用的)

    类型对应输入对应参数类型
    %a、%A读入一个浮点值(仅 C99 有效)。float *
    %c单个字符:读取下一个字符。如果指定了一个不为 1 的宽度 width,函数会读取 width 个字符,并通过参数传递,把它们存储在数组中连续位置。在末尾不会追加空字符。char *
    %d十进制整数:数字前面的 + 或 - 号是可选的。int *
    %e、%E、%f、%F、%g、%G浮点数:包含了一个小数点、一个可选的前置符号 + 或 -、一个可选的后置字符 e 或 E,以及一个十进制数字。两个有效的实例 -732.103 和 7.12e4float *
    %s字符串。这将读取连续字符,直到遇到一个空格字符(空格字符可以是空白、换行和制表符)。char *
<cstdlib>
功能函数原型
将一个c风格字符串转为浮点型
可识别正负号以及科学计数法
最后一个有效字符之后的字符会被忽略
失败的转换会返回 0.0
double atof(const char * str);
将一个c风格字符串转为整型
可识别正负号
最后一个有效字符之后的字符会被忽略
失败的转换会返回 0
int atoi(con​​st char * str);
将一个c风格字符串转为长整型
可识别正负号
最后一个有效字符之后的字符会被忽略
long int atol(const char * str)

将整数转换为字符串

此库下还有其他常用的诸如 abs(),rand()等,但都是为了兼容c而实现的,有其他更好的替代,这篇博客中也会介绍
malloc(),free()之流不在考虑范围内)


<cstring>

此库中包含了对c风格字符串的操作,但是c++中的string类型要更加方便,因此这里只是简单的提一下常用的部分

功能函数原型
复制字符串(包含终止空字符)char * strcpy ( char * destination, const char * source );
复制字符串中前num个字符
若源字符不够,以零填充
若目标存储长度不够,会截断并且不会写入空字
char * strncpy ( char * destination, const char * source, size_t num );
向目标字符串追加新字符串(重置空字符位置)char * strcat ( char * destination, const char * source );
向目标字符串中追加新字符串中前num个字符(到终止空字符为止)char * strncat ( char * destination, char * source, size_t num );
返回字符串的长度(不包括空字符)size_t strlen ( const char * str );

<string>

string对象的基本操作与方法不再介绍,仅记录我认为有用但是不太熟悉的内容

功能函数原型(成员方法)
清空字符串void clear();
判断字符串是否为空bool empty ( ) const;
替换字符或子字符串replace()重载太多了!总之就是你能想到的基本都有!具体查阅文档吧
交换(用目标字符串内容交换this字符串内容)void swap (string& str);
取子字符串(可指定起始位置与截取长度)string substr (size_t pos = 0, size_t len = npos) const;
查找字符或子字符串find()重载也不少,看文档吧,这小地方解释不清楚
字符串比较compare()同上,裂开

getline()方法就不介绍了,我不信有人不会用
另外上面的都是string对象成员方法,下面的就是<string>的库函数了(c++11标准

功能函数原型(库函数)
将字符串转为int(可指定基数,idx参数忽略吧,用处不大)int stoi(con​​st string&str,size_t * idx = 0,int base = 10)
将字符串转为float(忽略idx参数吧)float stof(const string&str,size_t * idx = 0);
将字符串转为double(忽略idx参数吧)double stod (const string& str, size_t* idx = 0);
将其他类型转为字符串string to_string (int val);
string to_string (long val);
string to_string (long long val);
string to_string (unsigned val);
string to_string (unsigned long val);
string to_string (unsigned long long val);
string to_string (float val);
string to_string (double val);
string to_string (long double val);

要注意上面这几个是c++11标准下的方法,莫要滥用

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值