一、变量数据类型
- int大致范围:-2*109~2*109
- long long大致范围:-9*1018~9*1018,对于长整型来说,如果赋值大于2^31-1的初值,就需要在初值后面加上LL,否则会编译错误。
- float单精度大致范围:小数点后6~7位
- double双精度大致范围:小数点后15~16位
- char字符型大致范围:-128~127
- 09、AZ、az的ASCII码值分别是4857、6590、97122
- 不可以使用定义好的数组名,直接进行赋值会报错,如果要赋值带上下标。同时,字符串和字符的单双引号,一定要区别开来。
- 布尔型变量,在C++中可以直接使用,如果在C语言中使用必须添加stdbool.h头文件。
- define pi 3.14,注意后面没有分号,也可以使用const double pi = 3.14;
二、输入输出格式问题
scanf:
- int : %d 是以空白符即空格、换行为结束判断标志的
- long long : %lld
- float : %f
- double: %lf
- char : %c ,%c格式是可以读入空格和换行的
- 字符串(char数组):%s 字符数组使用%s读入的时候以空格和换行行为作为结束标志的
- 特别注意在scanf中除了char数组整个输入的情况不加&之外,其他变量类型都需要加&
printf:
- 除了浮点数中的都可以使用成%f,其他都一样。
- 输出格式%md可以使不足m位的int型变量以m位进行右对齐输出,其中高位用空格补齐,如果变量本身超过m位,则保持原样。
- %0md,只是在上面多了个0,唯一不同就是,不足m位的时候,使用0补齐而不是空格。
- %.mf可以让浮点数保持m位小数输出(保留的精度是四舍六入五成双)
- typedef可以给一个复杂的数据类型起一个别名,例如:typedef long long LL;
常用math函数
- fabs(double x): 用于对double型变量取绝对值
- floor(double x)和ceil(double x):这两个函数用来向下取整和向上取整
- pow(double r, double p)该函数用于返回r^p
- sqrt(double):用于求算术平方根
- log(double x):用于返回自然对数为底的对数,C语言中没有对任意底数求对数的函数,因此需要使用换底公式。
- sin()cos()tan()asin()acos()atan()
- round(double x): 该函数用于对double类型x进行四舍五入,返回类型也是double,需要进行取整。例如double x = round(3.4);printf("%d", (int)x);
三、数组
- 一维数组初始化问题,如果是定义全局变量没有初始化,那么会默认初始化全为0,如果定义的是局部变量,没有初始化会随机初始,如果没有完全初始化,剩余部分初始化为0.
- 二维数组初始化问题,使用大括号进行初始化,如果没有初始化也会默认为0,中间如果跳过某一行初始化,也必须使用空大括号,不然编译不予通过。
- 如果数组大小较大(10^6级别),需要将其定义在主函数外面,否则会异常退出。
- memset(数组名, 值, sizeof(数组名)),需要带上头文件cstring和algorithm,同时建议赋值只赋0或-1,要是赋值其他会跟赋值对应不上,亲测。
- 字符数组初始化,方法同一般数组相同,可以在定义的时候直接进行字符串初始化,其他位置不允许直接赋值字符串。
- 字符数组的存放格式,是以