选择结构 | |||
单分支if语句 | 双分支if语句 | 多分支if语句 | switch语句 |
if(表达式) { 语句; } | if(表达式) { 语句1; } else { 语句2; } | if(表达式1) { 语句1; } else if(表达式2) { 语句2; } ………… else if(表达式n) { 语句n; } else { 语句n+1; } | switch(表达式) { case 标号1: 语句1;break; case 标号2: 语句2; ....... case 标号n: 语句n; default: 语句n+1; } |
|
循环结构 | ||||||
循环三要素 |
| |||||
for语句 | for语句的嵌套 | |||||
for(表达式1;表达式2;表达式3) { 语句; } | for(表达式1;表达式2;表达式3) { for(表达式4;表达式5;表达式6) { 语句; } } | |||||
先执行表达式1的值,然后再执行表达式2的值,如果表达式2的值为真,执行循环体,然后再执行表达式3的值,如此反复,直到表达式2的值为假的时候,跳出循环。 | 先执行表达式1的值,然后再执行表达式2的值,如果表达式2的值为真,执行循环体里面的for循环,跳出循环体里面的for循环后,然后再执行表达式3的值,如此反复,直到表达式2的值为假的时候,跳出循环。 | |||||
表达式1,2,3的值都是可以省略的,但是分号不能省略 省略表达式1:在定义变量的时候直接给值 省略表达式2:死循环 省略表达式3:将循环变量的变化写在语句后面 | ||||||
while语句 | do while语句 | break | continue | goto语句 | ||
while(表达式) { 语句; } | do { 语句; }while(表达式); | break; | continue; | 语句标号: ....... goto 语句标号 | ||
起始条件:定义变量时赋值 终止条件:表达式 | 1、跳出switch语句 2、跳出循环(跳出的是离他最近的循环)。 | 结束本次循环,开始下一次循环。 | 无条件跳转语句 语句标号:符号标识符的命名规范。 | |||
while和do while的区别:while先判断再执行,do while是先执行再判断。while中的语句,至少执行0次,而do while中的语句至少执行1次。 |
数组 | |||||
数组的概念:一组数据类型相同的元素的集合。①数据类型相同②地址连续 | |||||
定义 数组 | 方法 | 存储类型 数据类型 数组名[元素个数]; | int a[5] | ||
存储类型 | auto、static、extern、register | ||||
数组的数据类型 | 数据类型 [元素个数]; | int [5] | |||
数组名 | ①数组名代表的是数组首元素的地址②代表的是整个数组 | ||||
元素个数:必须是一个确定的数(常量) | |||||
数据类型:去掉变量名就是数据类型 | |||||
数组的 初始化 | 部分初始化 | 未初始化部分的值为0 | int a[5] = {1,2,3}; | ||
对数组中的元素清零 | int a[5] = {0}; | ||||
全部初始化 | 数组元素的个数可以省略,数组的元素个数由后面赋值的具体个数来决定 | int a[5 ] = {1,2,3,4,5}; | |||
int a[ ] = {1,2,3,4,5}; | |||||
数组 的访问 | 数组名[下标]; 下标必须从0开始 | int a[5 ] = {1,2,3,4,5}; a[0];a[1];a[2];a[3];a[4]; | |||
数组的输 入和输出 | 输入 | for(i = 0;i <= 4;i++) { scanf(“%d”,&a[i]); } | |||
输出 | for(i = 0;i <= 4;i++) { printf(“%d”,a[i]); } | ||||
冒泡排序 | 从左至右两两依次比较,如果前一个数比后一个数大的话就交换位置,否则不变 | for(j= 0;j<=元素个数-1;j++) 循环趟数 { for(i= 0;i<元素个数-1-j;i++) 每趟循环次数 { if(a[i]>a[i+1] { int temp = 0 temp =a[i]; a[i]=a[i+1]; a[i+1]=temp; } { } |
字符串 | ||||||
✭✭✭均以‘\0’做为结束符 | ||||||
定义 | 一维字符数组 | 存储类型 数据类型 数组名[元素个数]; | char str[20]; | |||
二维字符数组 | 存储类型 数据类型 数组名[行数][列数]; | char str[5][20]; | ||||
写法 | ①char str[6] = {‘h’,’e’,’l’,’l’,’o’,’\0’}; ②char str[6] = {“hello”};(可以不加大括号) | |||||
char str[5] = {0};//最多能存放4个元素,留一个位置给’\0’ | ||||||
字符串的输出 | puts(数组名); | 将数组中的字符串打印到终端上,会自动添加换行符。 遇到’\0’结束:char str[6] = {“hel\0lo”};→→hel | ||||
字符串的输入 | gets(数组名); | 将键盘输入的字符串保存到数组中,会自动在末尾添加’\0’。gets不会进行越界检查,输入的时候注意不要越界 | ||||
Scanf 和gets的区别 | scanf | ①是以空格、回车、Tab键作为结束符 ②输入完成之后,缓冲区会遗留空格、回车、Tab键 ③是标准输入函数,每一次输入都需要从键盘获取 | ||||
gets | ①gets是以回车作为结束符 ②输入完成会自动清空缓冲区 ③输入之前,先会查看缓冲区中是否有内容,有的话直接拿过来使用 | |||||
Puts和printf的区别 | Put | 会自动添加换行符(\n) | ||||
printf | 要手动添加换行(\n) |
字符串的处理函数 | |||||||
strlen、strcpy、strcat、strcmp头文件:#include <string.h> | |||||||
strlen | strcpy | ||||||
功能 | 求字符串的实际长度 | 功能 | 将数组2或者字符串2拷贝到数组1中 | ||||
写法 | strlen(数组名/字符串); | 写法 | strcpy(数组1,数组2/字符串2); | ||||
返回值 | 返回字符串的实际长度,不包含‘\0’ | 注 |
| ||||
sizeof和strlen的区别: |
| strncpy | |||||
功能 | 将数组2/字符串2的前n个字符拷贝到数组1中 | ||||||
写法 | strncpy(数组1,数组2/字符串2,n); | ||||||
注 |
| ||||||
strcat | strcmp | ||||||
功能 | 将数组2/字符串2连接到数组1之后 | 功能 | 比较两个字符串的大小 | ||||
写法 | strcat(数组1,数组2/字符串2); | 写法 | strcmp(数组1/字符串1,数组2/字符串2); | ||||
注 |
| 方法 | 从左至右,依次比较每个字符的ASCII码值,直到遇到不同的ASCII码或者’\0’结束 | ||||
strncat | 返回值 | 大于0:字符串1 > 字符串2 等于0:字符串1 == 字符串2 小于0:字符串1 < 字符串2 | |||||
功能 | 将数组2/字符串2的前n个字符连接到数组1之后 | strncmp | |||||
功能 | 比较字符串的前n个字符的大小 | ||||||
写法 | strncat(数组1,数组2/字符串2,n); | 写法 | strncmp(数组1/字符串1,数组2/字符串2,n); |
二维数组 | ||||
二维数组的概念:元素为一维数组的数组(数组的数组)①数据类型相同②地址连续 | ||||
定义二维数组 | 方法 | 存储类型 数据类型 数组名[行数][列数]; | int a[2][3]; | |
[行数] | 有几个一维数组 | |||
[列数] | 一维数组中有几个元素 | |||
二维数组的初始化 | 部分初始化 | 未初始化部分的值为0 | int a[2][3] = {1,2,3}; | |
对数组中的元素清零 | int a[2][3] = {0}; | |||
全部初始化 | 数组元素的个数可以省略,数组的元素个数由后面赋值的具体个数来决定 | int a[2][3] = {1,2,3,4,5,6}; | ||
int a[2][3] = {{0},{4,5,6}}; | ||||
int a[ ][3] ={1,2,3,4,5}; | ||||
注:二维数组的行数可以省略,但是列数不能省。int a[2][ ] = {1,2,3,4,5,6};××××× | ||||
二维数组 的访问 | 数组名[下标]; 下标必须从0开始 | int aint a[2][3] = {1,2,3,4,5,6}; a[0][0];a[0][1];a[0][2];a[1][0];a[1][1];a[1][2] | ||
二维数组的输 入和输出 | int a[2][3] | for(i = 0;i <2;i++) { for(j = 0;j< 3;j++) { scanf(“%d”,&a[i][j]);//输入printf(“%d”,a[i][j]);//输出 } } |