思维导图链接boardmix
1. C语言中的结构
- 顺序结构,从main函数入口进入,然后从上往下运行;
- 分支结构
- if if-else if-else if-else
- switch-case
- 循环结构
- goto循环 (不需要掌握,因为不是真正的循环)
- while
- do-while
- for
- 辅助语句
- break;
- continue;
- return;
2. 分支结构
【1】if分支结构
1)if单分支
if(条件语句) 若条件语句是真,则执行语句块; 填0代表假,非0代表真。
{
语句块;
}
2)if双分支
if(条件语句) 若条件语句是真,则执行语句块1; 否则执行语句块2;
{
语句块1;
}
else
{
语句块2;
}
3)if多分支
if(条件语句1) 若条件语句1是真,则执行语句块1; 若条件语句1是假,则继续判断条件语句2;
{
语句块1;
}
else if(条件语句2) 若条件语句2是真,则执行语句块2; 若条件语句2是假,则继续判断条件语句3;
{
语句块2;
}
else if(条件语句3)
{
语句块3;
}
else 若上述条件均不符合,则执行语句块n;
{
语句块n;
}
4)嵌套if
if(条件语句1) 若条件语句1是真,则执行语句块1;
{
语句块1;
if(条件语句2) 若条件语句2是真,则执行语句块2;
{
语句块2;
}
}
注意:
- 当if或者else内的语句块只有一条语句的时候,{}可以省略;
- if可以单独存在,但是else必须有一个与之匹配的if。
- 注意:多分支语句,最多只能选择一条分支语句块执行;
【2】switch-case分支结构
1)switch分支结构
- 根据表达式的运行结果,依次与下列的case后面的常量进行匹配。
- 若与case后面的常量表达式匹配,则执行case后面对应的语句块。
- 遇到break会跳出switch语句。
- switch-case结构,类似if-elseif的多分支结构中的,判断表达式是否与相等 if(表达式==常量)
switch(表达式) //表达式必须是精确类型,例如int char等,不允许是浮点类型 float double;
{
case 常量1: //case后面必须跟常量;
语句块1;
break; //跳出switch结构;
case 常量2:
语句块2;
break;
case 常量n:
语句块n;
break;
default: //类似 if-else if多分支结构中的else,default选项可以不写;
语句块n+1;
}
注意:
- break会跳出switch语句,如果没有break,会顺序执行后面的语句块,且后面的case不会判断。(case穿透现象)
- 多个case可以执行同一条语句,只要不break出去。
- 表达式必须是精确类型,例如int char等,不允许是浮点类型 float double;
- 常量必须不相同,如果相同会产生歧义,报错。
- switch-case结构中不允许定义变量,若想要定义变量,则用{}将语句块包含起来,如下图所示
2)switch-case与 if分支结构有什么区别?(重点!!)
- if可以判断数据的大小范围,switch语句只能进行相等判断
- if语句可以对浮点类型进行操作,switch语句只能对精确类型进行判断,不能对浮点类型进行判断。
- switch语句的执行效率比if高,在gcc编译后,switch语句会创建一张表,可以直接进行指令跳转,跳转到对应的语句块执行。
但是if必须从上往下查找到对应语句块。
3. 循环结构
- 循环执行一段相同,或者相似的代码。可以减少代码的编写量;
- 退出死循环:ctrl + c,
- 循环三要素:
- 循环变量:在循环中一直改变的变量
- 循环变量改变方式:循环变量是如何改变,缺少这个,会出现死循环。
- 循环条件:进入循环,退出循环的条件,缺少这个,会出现死循环。
- 对于循环:
- 找规律,写好循环语句
- 带临界值,确定循环条件。
- 循环写完后,不要着急运行,自己把初始值和临界值带入到循环中,自己当做cpu运行一遍。
【1】goto 循环
格式: goto 自定义标识符;
注意:
- goto循环并不是真正意义上的循环结构。
- 尽量少用goto,因为跳转前后,代码没有任务规律和逻辑,会造成代码可读性差。
【2】while循环
1)格式
格式:
定义循环变量并初始化;
while(循环条件) //当循环条件为真,则进入循环执行循环语句
{
循环执行的语句;
循环条件改变方式;
}
运行顺序:
- 先定义循环变量并初始化;
- 判断循环条件是否为真,
- 若为真,则执行循环执行的语句 和 循环条件改变方式;
- 循环运行2) 3)步骤,直到循环条件为假,结束循环。
2)死循环格式
while(1)
{
}
while(1);
【3】do-while循环
1)格式
定义循环变量并初始化;
do
{
循环语句;
循环变量改变方式;
}while(循环条件); //若循环条件为真,则进入循环
运行顺序:
- 定义循环变量并初始化;
- 执行循环语句 和 循环变量改变方式;
- 判断循环条件是否为真;
- 若为真,则重新运行循环语句 和 循环变量改变方式;
- 循环执行上述的2 3 步骤,直到循环条件为假,跳出循环。
2)死循环格式
do
{
}while(1);
【4】for循环
1)格式
for(循环变量初始化; 循环条件; 循环变量改变方式)
{
循环语句;
}
运行步骤:
- 第一次执行for循环结构的时候,会先执行一次循环变量初始化
- 判断循环条件是否为真
- 若为真,则执行循环语句;
- 在执行循环变量改变方式。
- 重复第2 3 步骤。直到循环条件为假,跳出循环。
注意:循环变量初始化在for循环中只会被执行一次!!!
2)for循环结构改写
for循环中的循环三要素都可以省略,但是需要在别的地方实现。