PAT算法刷题(1)
本文最后更新于:2023年6月19日 晚上
Tips
- 浮点型不要用 float 定义,而要用 double 定义,因为精度问题,float 只能有效精度为 6 位左右。
- ASCII 码中,小写字母比大写字母的 ASCII 码大 32,具体是 A
Z:6590,az:97122 - 位运算符:
- A<<x 左移,整数 A 按照二进制左移 x 位
- a & b 位与,整数 a 和 b 按二进制对齐,按照位进行与运算
- a | b 位或,整数 a 和 b 按二进制对齐,按照位进行或运算
- a ^ b 位异或,按位进行异或运算
- ~a,取反,整数 a 的二进制每一位取反
- scanf 的格式化输入–只记录几种不常用的
- long long 的输入 :%lld
- double 的输入: %lf
- 字符串(char 数组): %s,注意,字符串输入不需要加&进行取址,即 scanf(“%s”,str)是正确的。(因为数组名称本身就代表这个数组第一个元素的地址,所以不需要加取地址)
- typedef 是给复杂的数据结构起别名的
- 例 1: typedef long long LL;//给 long long 起别名 LL
- 一些常用的 math 函数
- floor(double x)–向下取整
- ceil(double x)–向上取整
- log()–用于返回以自然对数为底的对数
- 注意,c 里面没有对任意底数求对数的函数,必须用换底公式 log_a{b}=log_e{b}/log_e{a}
- sin,cos,tan–三角函数,必须是弧度制,即 pi/2 一类的
- asin,acos–返回 double 的三角函数值
- switch
1 |
|
- 数组初始化
- 比如
int a[10] = {0};
就可以把整个数组都赋值 0,或者int a[10] = {};
也可以做到 - 如果数组大小在 10 的 6 次方以上,需要将其定义在主函数之外,即静态存储区申请空间,如
int a[1000000];
- memset-对数组中每个元素赋值相同值
- memset(数组名,值,sizeof(数组名))
- 建议只使用 memset 赋值 0 和-1,因为它是按字节赋值,比如 int 是 4 个字节
- 对于数组赋予其他值(比如 1),请使用 fill 函数
- 比如
- gets 识别\n 作为输入结束,因此使用 scanf 接收完之后,如果要使用 gets,需要先用 getchar()接收整数后的换行符
- strlen()–字符串长度
- strcmp(char a[].char b[])–字符串比较
- strcpy(char a[].char b[])–把 b 字符串数组赋给 a 数组
- 字符串处理利器
- sscanf(char str[],”%d”,& int n)–把字符串数组的内容以%d 的格式写到变量 n 中–从左到右
- sprintf(char str[],”%d”,int n)–把整型变量 n 以%d 的格式写到 str 数组中,从右到左
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!