1.定义在for循环语句中的变量属于局部变量
2.一个大于1的整数,如果除了1和它自己之外,再也没有其它的因子,这个整数就叫做质数;0与1不是质数
3.条件语句中使用 '^'符号带上你的小括号!(不然比个球球)
实质上是‘= =’的优先级高于位运算符(&,|,^,>>,<<,~)
4.ll(long long)定义了一个变量,当它等于几个int型变量运算结果时,即使数据未超过ll范围,也可能爆掉,解决方法:强制转换或者更改使数据类型一致。不仅仅是ll,当一个变量等于一个等式时,等式左右涉及的变量范围和类型如果不一致也一样可能会出错。
5.输入数据有多组的字符数组的时候,如果以断行结束,可以通过判断数组长度是否为0来判断。
6.排序时求最小交换次数即为求逆序数对数
7.unique的作用是“去掉”容器中相邻元素的重复元素
8.lower_bound( begin,end,num):从数组的begin位置到end-1位置二分查找第一个大于或等于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。
upper_bound( begin,end,num):从数组的begin位置到end-1位置二分查找第一个大于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。
9 一定注意数据范围
10 对于scanf("%d %c"…) 中的‘ ’(空格符号)
可以启到分隔字符型数据与整形数据的作用
类似输入时间日期时的‘ : ’ , 输入分数时的’ / ’
11 所谓加权求和,用的是乘以权重再求和(阿西吧!!!!)
12 模拟题就一步步来,规律画图题就对比数据特征
13 %输出方法:%%
14 整形数组输入必须有空格隔开
15 小心关键字(例index)
16 0,1不是素数
17 longlong 输入一定用%lld,不然乱码
18 右对齐:%xd
左对齐:%-xd
19 多组数据,并且用%s输出时,需要清空数组,如果前一组数据太长,会把末尾遗留给后面的数据
20 进制准换
十进制转R进制,不停用十进制的数对R进行取模再自除R
M进制转R进制,M——>10——>R
R转10进制:直接展开
21 输入包含字符和换行,利用好getchar()吸收字符
22 * 的作用
在scanf中使用,则添加了 * 的部分会被忽略,不会被参数获取%*d,%s
在printf,以作为变量控制输出格式:
%Ns ( "%* s",N,a ): 至少输N位字符串,超长不截断,不足右对齐
%-Ns : 至少输N位字符串,超长不截断,不足左对齐
%N.Ms:("%*.*s",N,M,a) 至少输N位字符串,超M截断 ,不足右对齐
%-N.Ms: 至少输N位字符串,超M截断 ,不足左对齐
* 代替变量
23 字符数组b[M],令b[M]=0,可以截断输出,等价于b[M]=’\0’
24 判段1/n是否是无限循环小数
若:n的因子只有1,2和5,那么1/n不是,反之n如果有其他因子
25 c语言的全局变量在没有赋值前默认为0
26 对存在负数取模结果最好:(x+mod)%mod
27 n个人选m种不同方案,共m^n 种情况数
28 c语言取整方法:
1、直接赋值给整数变量。如: int i = 2.5; 或 i = (int) 2.5; 这种方法采用的是舍去小数部分。
2、C/C++中的整数除法运算符"/"本身就有取整功能(int / int),而下面介绍的取整函数返回值是double。
整数除法对正数的取整是舍去小数部分,但是整数除法对负数的取整结果和使用的C编译器有关。
3、使用floor函数。floor(x)返回的是x的整数部分。如: floor(2.5) = 2 floor(-2.5) = -3
4、使用ceil函数。ceil(x)返回的是不大于x的最小整数。如: ceil(2.5) = 2 ceil(-2.5) = -2
floor和ceil对于正数没有区别,但是对于负数结果不同。
floor()是向负无穷大舍入,floor(-2.5) = -3;ceil()是向正无穷大舍入,ceil(-2.5) = -2。
5、round(x)返回x的四舍五入整数值。(int型)