1. 输出回车:printf("\n") ----> cout<<endl;---->puts(""); (港巨专用QAQ).
2. 从子程序退出主程序:exit(0);
3. 取消cin与stdin的同步,缩短时间:ios::sync_with_stdio(false); cin.tie(0);cout.tie(0); (感觉还不如直接用scanf);
4. 判断一个数是不是整数:实型变量X,假如fabs(X-(int)X)<1e-8,则为整数。
5. 判断奇数 if(n&1);
6. i=i/2 ----> i/=2 ----> i>>=1;
7. 标准库的π :1. acos(-1,0) 2. 文件开头加这句#define USE_MATH_DEFINES ,然后直接用 M_PI就行;
//直接加math.h头文件,直接用就行 ————2018.5.19改
8.标准库的e(自然对数),1.exp(0.0) 2.M_E用法如M_PI
9. 使用gets()时,如果前面的步骤读入缓冲区了数据或者有个回车,需要加一个fflush(stdin);或者getchar();
//ps:fflush(stdin),并非c/c++标准定义,只适用于部分编译器,(如vc6),
c++,推荐用,先cin.clear(); 再cin.sync(); ————2018.4.23改
对于不同编译器,对fflush(stdin)的定义不同,最好不要用这玩意!!! ————2019.3.26注
10. vector清空:定义vector<int>V ; V.clear(),清空容器,vector<int>().swap(V);重置
先v.clear();再v.shrink_to_fit(); ——2018.4.24补
11.用cin读取带空格、回车的字符串,用cin.get(字符数组名,要读取的长度,结束标志)。
12.C++中字符数组和string类的转换:
(1) 字符数组转string :
char s[10];存入s[10]字符串后,定义string ss(s),或者string ss; ss=s // ss+=s;
(2)string 转字符数组:
char s[10]; string ss="abcdefg"; 然后strcpy(s,ss_cstr()); //strncpy(s,ss.cstr(),10);
13.C语言支持double类型的取余,fmod(a,b),如 fmod(3.15,2)=1.150000;
14.切记。STL里面的东西都很慢,string慢,sstream更慢,慎用。
15.strrev(str);逆转字符串数组,C++用algotithm里的reverse(s.begin(),s.end()); string s;
16.C++数字和string转换,#include<sstream>, stringstream STR;int n=231;string s;STR<<n;STR>>s;STR.clear();
17.string里查找子字符串的find()函数,string A,B;A.find(B) //找不到返回nops,找到就写if(A.find(B)==string::nops).
18.暂停屏幕,不仅可以system("pause")和getchar();试试cin.get();一样行哟~
19.常用输入输出,参见牛客给的样例:点击打开链接
20.判断一个数是不是2的幂,if(!(n&(n-1)&&n) return true; return false;
因为n&(n-1)的结果是 0 ,2 ,4 ,8 , 16 ,32 .......
21.取int a的二进制的第k位,a>>k&1,注意,这里的k是从0开始,如a=7, 二进制表示为111,
那么a的第0,1,2位都是1,即a>>0&1 = 1 , a>>1&1 = 1, a>>2&1 = 1.
22.C语言的文件操作中,rename(char *oldname,char *newname):文件重命名操作,以及remove("文件路径"),移除文件操作,进行之前都要把文件关上fclose(fp);
未完待补充~~~