算法笔记 --第二章 c/c++快速入门

前言

这系列blog记录我读算法笔记的时,遇到的trick,备忘。
这里写图片描述

读书笔记

①给long long 型数据赋大于 2 31 1 的初值时,要在初值后加LL
(很少用,但记录下来)

②宏定义#define其实是直接将对应的部分替换。所以使用时小心,加括号 ,或不用宏定义( ̄︶ ̄*))
我平时很少用


getchar(char) 字符输入
putchar(char)字符输出

scanf:
字符串使用%s读入的时候以空格换行读入作为结束的标准
%c 可以读入空格和换行

get,puts:
读取字符串,以换行符\n作为结束,
如果真的要读入一行输入,就用gets

sscanf,sprintf
这两个函数是 string scanf,string printf。字符串神器。sscanf把字符串转变成一切。sprintf把一切转变成字符串 。

④printf:%和\不会输出哦,除非加了 %%\\
亲测有效。但没有用上

%md 右对齐,用空格填充
%0md 右对齐,用0填充.
%.mf 保留m位小数输出

非常重要 程序运行时间有用到 %0md, %.mf是经常用

fabs(double x) 绝对值函数
暂时没用过


floor(double r)向下取整
ceil(double r)向下取整
我觉得你使用这个函数时,心里应该有个坐标轴,这样负数的情况也能搞清楚
这里写图片描述
挺常用的

pow(double p,double r) p r
我不是很爱用,都会自己写一个pow。

sqrt(double) s q r t ( x )
log(double)
我还没需要需要sqrt和log的题( ̄︶ ̄*))
log是以自然对数为底,我觉得应该会有题目要求任意底数的log,用换底公式 l o g b a = l o g e a / l o g e b


sin(double)
cos(double)
tan(double)
都是以弧度为单位哦。 弧度= p i / 180
asin(double)
acos(double)
atan(double)
暂时没用过

round(double)
这个函数 math库里没有 ,所以你可以使用 替代

floor(x+0.5)


⑿在函数里不能创建很大的数组。如果要,则创建在函数外。
这篇blog解释了why

⒀浮点数的比较
由于浮点数的存储不总是精确的,所以会给浮点数的比较带来极大的干扰.所以要引入一个极小数eps对这种误差进行修正

const double eps = 1e-8

==等于
如果 a==b ,那么 a 应该落在 [b-eps,b+eps]
这里写图片描述
> 大于
如果a>b,那么a应该落在[b+eps, + ]
这里写图片描述
< 小于
如果 a < b ,则a应该落在[ ,b-eps]

这里写图片描述
>= 大于等于
如果a>=b,则a应该落在[b-eps, + ]
这里写图片描述
<= 小于等于
如果a<=b,则a应该落在[ ,b+eps]
这里写图片描述


const double pi = acos(-1);

猜你喜欢

转载自blog.csdn.net/weixin_41256413/article/details/81155258