2019/07/23
-
如果数组较大(大概106级别),则需要将其定义在主函数外面,否则会使程序异常退出
-
memset
对数组元素赋相同的值. memset(数组名,值,sizeof(数组名))需要添加
string,h
头文件,建议初学者只用来赋0或-1,其它的用fill函数 -
gets
识别换行符\n作为输入结束(scanf完一个整数后,如果要使用gets,需要先用getchar接受整数后的换行符;puts
输出一行字符串,并紧跟一个换行 -
strlen()
计算字符串长度(不算’\0’)strcmp
strcpy
strcat
-
sscanf(str, "%d", &n);
把字符数组str中的内容以"%d"的格式,写到n中sprintf(str, "%d", n);
把n写到str中sscanf
支持正则表达,如果配合正则表达式来处理字符串,很多题目都将迎刃而解(拓展) -
对计算机来说,main函数返回0的意义在于告知系统程序正常终止
-
&引用
-
构造函数
struct studentInfo{ int id; char gender; //用以不初始化就定义结构体变量 studentInfo(){} //只初始化gender studentInfo(char _gender):gender(_gender) {} //同时初始化id和gender studentInfo(int _id,char _gender):id(_id),gender(_gender) {} };
-
浮点数的比较
简单的比较可以忽视误差,但是一个变量经过误差较大的运算后,精度的损失就不可忽视-
const double eps = 1e-8;
-
等于==
#define Equ(a,b) ((fabs((a)-(b)))<(eps))
-
大于>
#define More(a,b) (((a)-(b))>(eps))
-
小于
#define Less(a,b) (((a)-(b))<(-eps))
-
大于等于>=
#define MoreEqu(a,b) (((a)-(b))>(-eps))
-
小于等于<=
#define More(a,b) (((a)-(b))<(eps))
-
-
圆周率
const double pie = acos(-1.0);
-
最后需要指出几点:
①由于精度问题,在经过大量运算后,可能一个变量中存储的0是个很小的负数,这时如果对其开根号sqrt,就会因不在定义域内而出错。同样的问题还出现在asin(x)当x存放+1、acos(x)当x存放-1时。这种情况需要用es使变量保证在定义域内。
②在某些由编译环境产生的原因下,本应为0.00的变量在输出时会变成-0.00。这个问题是编译环境本身的bug,只能把结果存放到字符串中,然后与0.00进行比较,如果比对成功,则加上eps来修正为0.00 -
对一般的OJ系统来说,一秒能承受的运算次数大概是107~108