算法笔记自学 Day01

作为学习笔记,事无巨细,在自己学习算法的过程中。将一些遇到的问题记录。

选择Visual Studio 作为编译软件。首先解决的,就是关于程序运行后闪退的问题。

在导航栏中,点击“项目”—>“属性”—>“配置属性”—>“链接器”—>“系统”—>“子系统(在窗口右边有一个下拉图标)”—>下拉框选择“控制台(/SUBSYSTEM:CONSOLE)”—>最后“确定”

算法笔记自学 Day01
点击项目属性
算法笔记自学 Day01
在子系统的右方打开下拉框,选择控制台(/SUBSYSTEM:CONSOLE)
算法笔记自学 Day01
点击确定即可。
在我刚刚开始使用visual studio 的时候,我是使用在函数末尾增加一个getchar()来解决闪退问题的,至于原理是室么,希望在之后的学习过程中,能深入了解。

然后我们需要解决一下visual studio无法使用scanf函数的问题。

这个我初开始,使用的是c-free,但是这个软件收费,而且运行界面只是差强人意。所以转用visual studio。解决的方法是在预处理器定义中增加_CRT_SECURE_NO_WARNINGS
算法笔记自学 Day01
界面打开的方式,与处理闪退的方式大致相同,就不再赘述。

自己总结的一些常用,但是还没有记住的点:
#define和const 定义的数值都为常量,一旦确定后其值就无法改变;
此外#define 还可以d定义语句或者片段(#define ADD(a,b) ((a)+(b)))//尽量不用于定义常量以外的事情;

使用bool类型c需要导入stdbool.h头文件;
a^b,位异或,二进制对其,进行异或运算,相同为0,不同为1;
~a,位取反;
typedef long long LL; //给long long 起个别名LL

math函数的头文件math.h;
绝对值:fabs(double x);向下取整floor(double x); 向上取整ceil(double x); //返回类型为double类型
幂次: pow(double r,double p);//r^p pow(2.0,3.0)输出结果为8.00000
算术平方根: sqrt(double x); 自然对数为底的对数: log(double x);
sin(double x),cos(double x),tan(double x);
asin(double x),acos(double x),atan(double x);
四舍五入: round(double x);

if(n)<=>if(n!=0)
if(!n)<=>if(n==0)

memset(数组名,值,sizeof(数组名)); //对数组的每一个元素赋相同的值,需要加入string.h头文件
strlen(字符数组);//可以得到字符数组中第一个\0前的字符的个数
scrcmp(字符数组1,字符数组2);//比较两个数组的大小。1<2返回负数 1=2 返0 1>2反正数
strcpy(字符数组1,字符数组2);//将数组2的值赋给数组1
strcat(字符数组1,字符数组2);//将数组2拼接到数组1后面
sscanf(str,"%d",&n);//将str中的内容以%d的格式写入n中
sprintf(str,"%d",n);//将n中的内容以%d的格式写入str中(str为数组)

vector
vector name; //单独定义一个vector
vector<vector> name; //>>之间要加空格;
vector::iterator it; //通过迭代器访问或者可以使用下标的方式进行访问
push_back(x)//在vector后面加一个元素x
pop_back() //删除vector的尾元素
name.size() //获得元素个数
name.clear() //清空所有元素
name.insert(name.begin()+n,-x) //将x插入name[n]的位置
name.erase(name.begin()+a) //删除v[a]元素
name.erase(name.begin()+a,name.begin()+b) //删除从a+1到b+1的元素
set的定义于vector基本相同,它按照顺序存储数据,并删除重复数据。
set并不支持it < name.end

#include.可以使用max(),min(),abs(),swap()
rebverse(a,b)//将ab中的元素颠倒。

malloc函数时c语言在stdlib.h头文件下用于申请动态内存的函数,返回类型为指针
typename* p = (typename*)malloc(sizeof(typename));
malloc和free函数成堆出现,new和delete成对出现,否则会出现内存泄漏