1.头文件统一写法
#include <cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include <cmath>
#include <sstream>
using namespace std;
2.对比 scanf和cin; printf和cout
scanf和printf 速度稍微快,稍微长 》10的五次方
cin和cout 速度稍微慢,稍微短 <10的五次方
保险:直接scanf和printf整起
3.2的次方要记住 次方15 次方16
大小 32768 65536
等价代换 2的20次方 2的63次方
2与10 10的六次方 10的18次方
4.定义一个数组 int st[];
定义一个常数 cons int N=
5.1<<15
左移一次相当于乘以一个2;右移一次相当于除以一个2;
6.变量表示为全局变量,则初值为0;
变量表示为局部变量,则初值为随机值
7.对于long long,是一种比int空间更大的存储,它在输入时是%ll(不是11).
8.同一个变量,只能int一次
可以是 int i;i=1;i=5
不可以是int i;int i=5;int i=7
9.关于scanf里没有换行的思考
目前的我的思考是,在一个题里,scanf一般有多个,它们在不同行,所以达到自动换行的效果了。而printf咱们一般不换行,就写一个printf,所以就用\n来达成目的。
10.取整,取余和换行 取整是/ 取余是% 换行是\
11.a/b的向上取整等于(a+b-1)/b
或者用ceil(不过ceil是double形式,要在前面加上int)
int(ceil())
;
a%b的值可能是个负余数,如果要变为正余数,则(a%b+b)%b
对于一个数列,x[n\2]
即位对n\2向下取整。
12.memset函数
13.getline 函数
getline函数(cin,字符串)
注意:对于 2
3 3 4
这种情况下,如果第一行采用cin先输出,如果第二行采用cin输出,会先输出第一行的回车,导致输入后的第一行是空的,解决方法就是先写一行cin(创始人规定的)。
getline(cin, line);
stringstream ssin(line);
借助这两行数据,可以使得两行数简化为一个数组。 2 3 4
——>数组形式 5 6 7
14.加return 对于int main()必须要加return 0;
不过 对于if ,加不加return要看if是不是for里面的嵌套 .
15.对于位运算,(%%这些),如果拿不准优先级,则加括号。
一般来讲是 加减优先级高于左右移 << >>优先级大于判断,判断优先级大于比较大小
16.
输出时候在%d前面加上0x的意思是若不足x位,则其余位置用0补齐i。
17.|1是指+1
18.C++的几种基础数据类型
整型
浮点型
字符型
注:需要注意a=97 是把97这个asc码值赋给了a;
而a=’a’是把a这个小写字母赋给了a
布尔类型
注:非零为真,零位假
字符串类型
19.数组的存储方式
注意:数组充分结合了typedef,以本数组为例,datatype与stu一个类型,而stu在之前定义成了int,故数组中每个数都是int类型。
20.struct结构
注意:typedef可有可无,是用来对struct多定义几个名字。即没有typedef,则没有Stu1.
此时是对定义过的Stul 进行赋值
Typedef用法 以此处为例,是指int=dtype,若把int改为char,则是指char=dtype。
21.判断函数写法
bool xx;
``` 输出结果只有true和false
22.sort函数,对于数组进行排序,如果要a[N]数组对第i到第j进行由小到大的排序,则写为
sort(a+i,a+j+1)
```
可以