C语言 分支、循环结构

思维导图链接boardmix

C语言 分支、循环结构_第1张图片

1. C语言中的结构

  1. 顺序结构,从main函数入口进入,然后从上往下运行;
  2. 分支结构
    1. if if-else if-else if-else
    2. switch-case
  3. 循环结构
    1. goto循环 (不需要掌握,因为不是真正的循环)
    2. while
    3. do-while
    4. for
  4. 辅助语句
    1. break;
    2. continue;
    3. 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;     
    }
}

注意:

  1. 当if或者else内的语句块只有一条语句的时候,{}可以省略;
  2. if可以单独存在,但是else必须有一个与之匹配的if。
  3. 注意:多分支语句,最多只能选择一条分支语句块执行;

【2】switch-case分支结构

1)switch分支结构

  1. 根据表达式的运行结果,依次与下列的case后面的常量进行匹配。
  2. 若与case后面的常量表达式匹配,则执行case后面对应的语句块。
  3. 遇到break会跳出switch语句。
  4. 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;
}

注意:

  1. break会跳出switch语句,如果没有break,会顺序执行后面的语句块,且后面的case不会判断。(case穿透现象)
    1. 多个case可以执行同一条语句,只要不break出去。
  2. 表达式必须是精确类型,例如int char等,不允许是浮点类型 float double;
  3. 常量必须不相同,如果相同会产生歧义,报错。
  4. switch-case结构中不允许定义变量,若想要定义变量,则用{}将语句块包含起来,如下图所示

2)switch-case与 if分支结构有什么区别?(重点!!)

  1. if可以判断数据的大小范围,switch语句只能进行相等判断
  2. if语句可以对浮点类型进行操作,switch语句只能对精确类型进行判断,不能对浮点类型进行判断。
  3. switch语句的执行效率比if高,在gcc编译后,switch语句会创建一张表,可以直接进行指令跳转,跳转到对应的语句块执行。

但是if必须从上往下查找到对应语句块。

3. 循环结构

  1. 循环执行一段相同,或者相似的代码。可以减少代码的编写量;
  2. 退出死循环:ctrl + c,
  3. 循环三要素:
    1. 循环变量:在循环中一直改变的变量
    2. 循环变量改变方式:循环变量是如何改变,缺少这个,会出现死循环。
    3. 循环条件:进入循环,退出循环的条件,缺少这个,会出现死循环。
  4. 对于循环:
    1. 找规律,写好循环语句
    2. 带临界值,确定循环条件。
    3. 循环写完后,不要着急运行,自己把初始值和临界值带入到循环中,自己当做cpu运行一遍。

【1】goto 循环

格式: goto 自定义标识符;

注意:

  1. goto循环并不是真正意义上的循环结构。
  2. 尽量少用goto,因为跳转前后,代码没有任务规律和逻辑,会造成代码可读性差。

【2】while循环

1)格式

格式:
    定义循环变量并初始化;
    while(循环条件)             //当循环条件为真,则进入循环执行循环语句
    {
        循环执行的语句;
        循环条件改变方式;    
    }

运行顺序:

  1. 先定义循环变量并初始化;
  2. 判断循环条件是否为真,
  3. 若为真,则执行循环执行的语句 和 循环条件改变方式;
  4. 循环运行2) 3)步骤,直到循环条件为假,结束循环。

2)死循环格式

while(1)
{
}

while(1);

【3】do-while循环

1)格式

定义循环变量并初始化;
do
{
    循环语句;
    循环变量改变方式;
}while(循环条件);             //若循环条件为真,则进入循环

运行顺序:

  1. 定义循环变量并初始化;
  2. 执行循环语句 和 循环变量改变方式;
  3. 判断循环条件是否为真;
  4. 若为真,则重新运行循环语句 和 循环变量改变方式;
  5. 循环执行上述的2 3 步骤,直到循环条件为假,跳出循环。

2)死循环格式

do
{
}while(1);

【4】for循环

1)格式

for(循环变量初始化; 循环条件; 循环变量改变方式)
{
    循环语句;
}

运行步骤:

  1. 第一次执行for循环结构的时候,会先执行一次循环变量初始化
  2. 判断循环条件是否为真
  3. 若为真,则执行循环语句;
  4. 在执行循环变量改变方式。
  5. 重复第2 3 步骤。直到循环条件为假,跳出循环。

注意:循环变量初始化在for循环中只会被执行一次!!!

2)for循环结构改写

for循环中的循环三要素都可以省略,但是需要在别的地方实现。

你可能感兴趣的:(c语言)