《算法笔记》基础知识汇总(2)

1.  getchar()输入,可以识别换行符,把换行符当成元素输入

#include
int  main(){
	char c1,c2,c3;
	c1=getchar();
	getchar();
	c2=getchar();
	c3=getchar();
	putchar(c1);
	putchar(c2);
	putchar(c3);
	return 0;
}

《算法笔记》基础知识汇总(2)_第1张图片

疑问:putchar换行怎么整?

 

2.typedef 给复杂数据类型起别名,如: typedef long long LL

 

3.常用 math 函数

fabs(double x) 对double变量取绝对值

abs(int x )     对 int 型变量取绝对值 

floor(double x) 向下取整

ceil(double x)  向上取整

pow(double r,double p)   求r的p次方

sqrt(double x)        double 型变量求平方根

log(double x)       返回以自然对数为底的对数

 

4.  if  是否等于0 小技巧

 if(n) 的写法就是  if (n!=0) 

if(!n)的意思就是  if(n==0)

 

5.switch 用法

#include
int main(){
	int a=1,b=2;
	switch(a+b){
		case 2:
			printf("%d\n",a);
			break;
		case 3:
			printf("%d\n",b);
			break;
		case 4:
			printf("%d\n",a+b);
			break;
		default:
			printf("sad story\n");
	}
	return 0;
}

输出结果为:  2

分析:switch(a+b) 作为输入条件,case 作为判断结果,

如果(a+b)的值和case x 匹配上,则执行此条case 语句,如果都没匹配上,则执行default  。

注意:一定要在每一条case后加上 break ,用来终止后续语句的执行。

假如说全部break忘记加了,则执行结果为:

《算法笔记》基础知识汇总(2)_第2张图片

分析错误原因:因为没有加break ,就没有终止后续语句的执行,不光满足条件的 case 3执行了 对应的case 语句,后续的

case 4  和 default 都执行了。

 

6.break  和 continue

break是整体执行满足条件后结束

continue是局部满足条件后跳过后面语句,继续循环

 

7.一维数组

数组大小必须是整数常量,不可以是变量。

定义举例: 

int a[10] 

double db[2333]

char str[100000]

bool hashtable[1000000]

访问格式:

数组名称【下标】

注意:循环时候不能超过数组容量

 

8.冒泡排序

交换两个数需要借助中间变量

两层循环,第一层循环 n-1  次,i 从1 开始,表示循环次数

第二层下标从0开始 ,第二层表示数组下标

     for(int i=1;i<4;i++){//进行 n 次排序 
         for(int j=0;j<5-i;j++){

}

 

9.二维数组

定义举例:

int a[10][20]

double db[10][10]

具体实例:整体用大括号括住,最后末尾加分号

中间变量不想赋值就用一个空的大括号,默认赋值为0

如果最后一组不想赋值,可以省略大括号,也是默认赋值为0

int a[5][6]={{3,1,2},{88,4},{},{1,5,88,77,4}};

《算法笔记》基础知识汇总(2)_第3张图片

注意:如果数组大小较大,需要把数组定义在主函数的外面,否则程序会异常退出。

你可能感兴趣的:(PAT,Basic,Level)