算法复习笔记

这里写自定义目录标题

  • C/C++快速入门
    • 头文件
    • 主函数
    • 输入输出函数
    • 变量类型
    • 注意
    • if语句
    • switch语句
    • 循环结构
      • while语句
      • do...while语句
      • for语句
      • break和continue语句
    • 数组
      • 注意
    • string.h头文件
    • 指针
    • 引用
    • 浮点数的比较

C/C++快速入门

头文件

通过#include写法来写,例如:

#include //standard input output

如果使用数学公式之类的函数的话,则就需要使用math.h头文件;字符串的话,则使用string.h。

主函数

程序的执行都是从主函数开始,一个程序只能有一个主函数。

int main(){
	return 0;
}

输入输出函数

使用scanf和printf函数实现,例如:

int a,b;
scanf("%d%d",&a,&b);
printf("%d",a+b);

变量类型

有四种基本数据类型,分别为整型(int),浮点型(float、double),字符型(char),布尔型(bool)。

数据类型 输出格式 输入格式
整型 int %d %d
浮点型 float、double(一般使用) %f float为%f,double为%lf
字符型 char %c %c
布尔型 bool %d

注意

  1. 小写字母要比大写字母的ASCII码值大32。
  2. 字符在计算机里面是按照ASCII码进行存储的,所以也可以把对应的ASCII码赋值给字符。
  3. 字符串常量可以作为初值赋给字符数组,并使用%s格式进行输出。
#include
int main(){
	char str[15]="Hello World!";
	printf("%s",str);
	return 0;
}
  1. bool类型在C++里面可以直接使用,但是C里面需要添加头文件stdbool.h。

  2. 强制类型转换的格式: (新类型名) 变量名

  3. 使用define可以定义常量,它的值不允许在使用的过程中进行改变,否则会出错。

#define 标识符 常量
例如:#define MAXSIZE 100
  1. 三目运算符的话,也就是需要三个参数的运算符,格式如下:A ?B:C(如果A成立,那么会返回B 的结果;如果为假,那么返回C的结果)
  2. 使用getchar和putchar可以输入,输出字符。
char c;
c=getchar();
putchar(c);
  1. 注释的话可以使用/**/或者// 进行注释。
  2. typedef可以给复杂数据类型起别名。
  3. 常用的math函数,例如:
fabs(double x); 
abs(int x);
pow(double r,double p) // 返回r^p
sqrt(double x); // 返回变量x的算术平方根

if语句

格式如下:

if(a=b){
	;
}else if(a>b){
	;
}else{
	;
}

switch语句

通常在分支条件较多时会显得比较精炼。例如:

switch(表达式){
	case 常量表达式1:... break;
	case 常量表达式2:... break;
	default:...
}

循环结构

while语句

格式如下:

while(条件A){  // 如果条件A满足的,则执行下面循环,否则不执行
   ...
}

do…while语句

do{  // 先执行循环,最后判断满足不满足,满足继续执行,否则退出循环。
	...
}while(条件A);

for语句

for(表达式A;表达式B;表达式C){
	...
}
  1. 在for循环开始前,首先执行表达式A。
  2. 判断表达式B是否成立:若成立,执行省略号内容;否则,退出循环。
  3. 在省略号内容执行完毕后,执行表达式c,之后回到2.

break和continue语句

break语句是结束整个循环,continue语句是结束本次循环。

数组

数组就是把相同数据类型的变量组合在一起而产生的数据集合,格式定义如下:

数据类型 数组名[数组大小];
例如: int array[10];

注意

  1. 数组的话可以根据下标进行访问数据,但是切记数组下标是从0-MaxSize-1
  2. 数组可以在刚开始的时候整体赋值 例如:int array[10]={0};
  3. 如果使用字符数组的话,可以刚开始把一个字符串赋值给一个数组进行初始化。
  4. 使用%s读取字符串的话,以空格或换行来识别一个字符串的结。
  5. gets用来输入一行字符串,以换行符\n作为输入结束,puts直接输出一行字符串,把一维数组(或二维数组的一维)在界面上输出,并紧跟一个换行。
  6. 字符数组的末尾都有一个空字符\0,以表示存放的字符串的结尾,会自动增加,因此设置字符数组的时候,要比实际存储字符串的长度至少多1。
  7. 如果使用getchar读取字符后要在最后加上\0,用来标志结束。

string.h头文件

函数 作用 使用方法
strlen() 得到字符数组中第一个\0前的字符的个数 strlen(字符数组)
strcpy() 把一个字符串复制给另一个字符串 strcpy(字符数组1,字符数组2)
strcat() 把一个字符串接到另一个字符串的后面(把字符数组2接到一个字符数组1的后面) strcat(字符数组1,字符数组2)
strcmp() 返回两个字符串大小比较的结果 如果字符数组1<字符数组2,则返回一个负整数,相等则返回0,大于则返回一个大于0的数 strcmp(字符数组1,字符数组2)

指针

void swap(int* a,int* b){
	int* temp=a;
	a=b;
	b=temp;
}

函数参数的传送方式是单向一次性的,main函数传给swap函数的“地址”其实是一个“无符号整型”的数,其本身也跟普通变量一样只是“值传递”,swap函数对地址本身进行修改并不能对main函数里的地址修改,能够使main函数里的数据发生变化的只能是swap函数中对地址指向的数据进行的修改。对地址本身进行修改其实跟之前对传入的普通变量进行交换的函数是一样的作用,都只是副本,没法对数据产生实质性的影响,即相当于把int*看作一个整体,传入的a和b都只是地址的副本。

引用

引用,相当于给原变量起了个别名,旧名字和新名字其实都是同一个东西,对引用变量的操作就是对原变量的操作。(保存文件时,使用.cpp,因为是c++里面的语法)

浮点数的比较

计算机中采用有限的二进制编码,因此浮点数在计算机中的存储并不总是精确的。

  1. 判断相等 只要两个的绝对值之差小于1e-8(1*10^-8)
  2. 判断大于 两个绝对值之差大于1e-8

你可能感兴趣的:(算法笔记,算法,笔记)