第一章:没有内容
第二章:C/C++基本语法
1:int类型
取值范围:-2^31——2^31 - 1;
大致范围:-2x10^9 ~ 2x10^9;
注意:int + int 以及 int * int 这两种运算是容易超过int范围的。
2:long long类型
取值范围:-2^63——2^63 - 1;
大致范围:-9x10^18 ~ 9x10^18;
注意:如果对long long 类型的变量赋值大于2^31 - 1,则需要在常量后面加上LL(例如: 999999999999999LL),否者编译错误
scanf:%lld;printf:%lld
3:float类型
范围:-2^128 —— 2^128;
实际精度:6~7位
4:double类型
范围:-2^1024 —— 2^1024:
实际精度:15~16位
scanf:%lf;printf:%f
经验:一般碰到浮点数就使用 double 类型, 不推荐使用 float
5:符号常量和const常量
#define 标识符 常量 // 这是符号常量,就是宏定义
const 数据类型 变量名 = 常量; // 这是const的常量,也叫作常变量
经验:define的宏定义用处很多,例如:#define ADD(a, b) ((a)+(b))
6:位运算
<<:左移; >>:右移; &:位与; |:位或; ^:位异或; ~:位取反
7:scanf
7.1:除了 %c 以外,其他的输入格式会以空白符(空格、换行等)为结束标志;下次继续输入时会自动跳过空白符
7.2:根据7.1,%s 也是以空白符为结束标志的
7.3:%c 是可以读入空白和换行的
7.4:如果想输入一行的话:
使用 gets 输入 或者 使用 char str[100] cin.getline(str, 100):这是针对字符数组
如果是string类型,则可以string str str.getline()
上面的 gets / cin.getline() 以及 str.getline() 都是识别换行符为结束标志的,所以如果在此之前有使用scanf或者cin 输入,这里再使用整行输入之前,应该先使用getchar()将前面的换行符给吃掉。
7.5:%lld %lf
8:printf
8.1:%md 可以使不足m位的int型变量以 m 位输出,进行右对齐,其中高位不足的地方用空格补齐;如果超过m位,保持原长度
8.2:%0md 和上面一样,只是这里面使用 0 进行补齐操作
8.3:%.mf 可以保留 m 位小数,四舍五入
9:getchar()和putchar()
有时使用scanf 和 printf 输入和输出单个字符不是很方便,所以使用这两个函数,有时会比较方便
10:typedef
能给复杂的数据类型起一个别名:typedef long long LL
11:math中常用的函数
fabs(double x);floor(double x);ceil(double x);pow(double x, double p);sqrt(double x)
log(double x):这是自然对数;sin(double x);cos(double x);tan(double x)
asin(double x);acos(double x);atan(double x);round(double x)
12:memset
memset(数组名, 值, sizeof(数组名)):包含在 cstring 头文件里面
注意:memset是按位赋值,所以只能赋值 0 或者 -1 想赋值其他值,一般使用 algorithm 中的 fill 函数
13:cstring 中的常用函数
strlen();strcmp():函数返回的是 小于0的某一个数 或者是 大于0的某一个数 或者是 0
strcpy();strcat();sscanf();sprintf()
14:结构体的初始化
可以对结构体中的元素逐一赋值
更好的一种方式是写构造函数
注意:自己写构造函数的时候,也一定要再写一下默认构造函数