《算法笔记》小记

1、C++中cin和cout可以不指定输入输出格式,但其消耗的时间比C中scanf和printf多得多。但不要在同一个程序中使用cout和printf。

2、碰到浮点型的数据都应用double来存储。

3、ASCII码,0~9:48~57;A~Z:65~90;a~z:97~122。小写字母比大写字母的ASCII码值大32。

4、布尔类型变量,在C++中可直接使用,而C中必须添加stdbool.h头文件才可以使用。

5、符号常量和const常量:

符号常量,即用一个标识符来替代常量,又称为“宏定义”或者“宏替换”

#define 标识符 常量

define除了可以定义常量外,还可以定义任何语句或片段。如:

#define ADD(a, b) ((a)+(b))

括号的意义:宏定义是直接将对应的部分替换,然后才进行编译和运行。

const:

const 数据类型 变量名=常量;

6、字符串(char数组)数据类型变量的scanf输出格式:scanf("%s", str);

数组名str前没有加取地址运算符,是因为,数组名称本身就代表了这个数组的第一个元素的地址,所以不需要再加取地址运算符。

7、时间输入格式:

int hh, mm, ss;
scanf("%d:%d:%d", &hh, &mm, %ss);

8、scanf对其他格式符(如%d)的输入是以空白符(即空格、换行等)未结束判断标志的,字符数组使用%s读入的时候是以空格跟换行为读入结束的标志,而%c格式是可以读入空格跟换行的。

9、double 在scanf中的格式符是“%lf”,而在printf中的格式符为“%f”。

10、特殊输出格式:

(1)%md:使不足m位的int型变量以m位进行右对齐输出,其中高位用空格补齐;如果变量本身超出m位,则保持原样。

(2)%0md:补充位输出0。

(3)%.mf:让浮点数保留m位小数输出。保留精度为“四舍六入五成双”规则;

11、typedef:给复杂的数据类型起一个别名。

12、常用math函数:在使用时,要加上math.h头文件。

函数名作用
fab(double x)对double类型变量取绝对值
floor(double x)对double类型变量向下取整
ceil(double x)对double类型变量向上取整
pow(double r, double p)用于返回r^{p}
sqrt(double x)用于返回算术平方根
log(double x)用于返回double型变量的以自然对数为底的对数
sin(double x)用于返回double型变量的正弦值
cos(double x)用于返回double型变量的余弦值
tan(double x)用于返回double型变量的正切值
asin(double x)用于返回double型变量的反正弦值
acos(double x)用于返回double型变量的反余弦值
atan(double x)用于返回double型变量的反正切值
round(double x)

用于将double型变量x四舍五入

13、数组中每个元素都可以被赋值、被运算,可以当做普通变量进行相同的操作。如果根据一些条件,可以不断让后一位的结果由前一位或前若干位计算得来,那么就把这种做法称为递推。递推可以分为顺推和逆推两种。

14、交换两个数,可以通过中间变量赋值来实现。

15、如果数组大小较大(大概10^{6}级别),则需要将其定义在主函数外面,否则会使程序异常退出,原因是函数内部申请的局部变量来自系统栈,允许申请的空间较小;而函数外部申请的全局变量来自静态存储区,允许申请的空间较大。

16、memset:对数组中每一个元素赋相同的值。需添加string.h头文件。

memset是按字节赋值,即对每个字节赋同样的值。使用其赋值建议赋0或-1(二进制补码为全0和全1)。

memset(数组名, 值, sizeof(数组名));

如果要对数组赋其他数字,要用fill函数(但memset的执行速度快)。

17、字符数组的输入输出:gets输入,puts输出。

gets识别换行符\n作为输入结束。

18、结束符\0的ASCII码为0,即空字符NULL,占用一个字符位,因此开字符数组的时候要记得字符数组的长度一定要比实际存储的字符串的长度至少多1。空格的ASCII码是32,与\0不相同。

19、如果不适用scanf函数的%s格式或gets函数输入字符串,一定要在输入的每个字符串后加入“\0”,否则printf和puts输出字符串会因无法识别字符串末尾而输出一大堆乱码。

 

摘自《算法笔记(机械工业出版社)》
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值