知识杂记
- int 类型的使用范围:一般在 10^9 以内
- long long 类型赋大于 2^31-1 的初值需要加后缀 LL
- \0 代表 NULL
- 关于移位运算符的使用(略)
- 在printf输出时,可以采取一些手段规范输出格式:
%md 右对齐输出,用空格补齐
%0md 右对齐输出,用0补齐
%.mf 保留m位输出,四舍六入五成双 - 可以使用 getchar 和 putchar 读取和输出字符 (getchar可识别换行符,在putchar输出时自动换行)(getchar需要手动输入\0)
- 常用的math函数
double fabs(double x) 取绝对值
double floor/ceil(double x) 想上取整和向下取整
double pow(double r, double p) 返回r的p次方
double sqrt(double x) 返回x的算术平方根
double round(double x) 返回x四舍五入结果
- 较大的数组应当定义在main函数之外
- 使用memset函数初始化数组(需要引入string.h):
memset(a,0,sizeof(a));
- 常用字符函数
strlen(str) 获得字符串长度
strcmp(str1,str2) 按照字典序比较字符串大小(从左到右直到出现不同字符或\0为止),返回负整数/0/正整数
strcpy(str1,str2) 复制字符串str2到str1
strcat(str1,str2) 拼接字符串str1和str2,将str2追加到str1结尾
- 可以使用sscanf和sprintf处理字符串(支持正则表达式)
- C++中的引用——不产生副本,对原变量起别名
- 关于结构体struct:可自定义自身类型的指针变量,可使用构造函数初始化
- C++中的另一种输入输出:cin和cont(需要引入iostream和命名空间std)
- 浮点数由于可能产生的误差需要手动引入一个极小数eps来进行比较:
const double eps = 1e-8
#define Equ(a,b) ((fabs((a)-(b))) < (eps))
#define More(a,b) (((a)-(b)) < (eps))
#define Less(a,b) (((a)-(b)) < (-eps))
#define MoreEqu(a,b) (((a)-(b) > (-eps))
#define LessEqu(a,b) (((a)-(b) < (eps))
- 圆周率π:
const double PI = acos(-1.0);
- scanf == EOF表示输入结束(等效于输入Ctrl+Z)
- 多点输入控制:
1.scanf(...) == n || EOF
2.break
3.int T;T--;