云计算百科
云计算领域专业知识百科平台

C语言知识点(三)---流程控制

前言

        这份笔记完整梳理 C 语言程序三大核心控制结构,先讲解顺序结构基础逻辑,重点拆解分支结构的运算符、if 与 switch 语法,后续补充循环结构全套核心知识点。内容由浅入深,覆盖关系、逻辑运算、短路特性、分支语法规范、循环三要素、三类循环用法与跳转语句,适合零基础夯实流程控制基础,配套练习题同步巩固理论,便于快速掌握 C 语言程序执行逻辑。

(一)顺序结构

程序按照从上至下的顺序逐次执行。
示例逻辑(三角形周长、面积计算流程图) 开始 → 从终端读取三边长 → 计算周长 → 计算半长 → 计算面积 → 输出周长和面积 → 结束

(二)分支结构

分支分为两种基础形式:

  • 单分支:条件为真执行语句,条件为假直接跳过
  • 双分支:条件为真执行语句 1,条件为假执行语句 2

1. 关系运算符及关系表达式

运算符:>   <   >=   <=   ==   !=

  • 关系表达式运算结果:逻辑真 / 逻辑假
  • C 语言规定:0 为假,非 0 即为真

如:100 → 真                  1 → 真

  0 → 假

注意:== 判断相等,习惯将常量写在左边,防止误写成赋值=

2. 逻辑运算符与逻辑表达式

运算结果:逻辑真 / 逻辑假,规则同上(0 假,非 0 真)

运算符名称规则
&& 逻辑与 全真为真,一假为假;既要… 又要…(并且)
|| 逻辑或 一真为真,全假为假;要么… 要么…(或)
! 逻辑非 真取非为假,假取非为真

示例:-6<j<-2 等价于 -6 < j && j < -2

真值表

a && b 逻辑与

aba && b
0 0 0
0 1 0
1 0 0
1 1 1

a || b 逻辑或

aba  ||  b 
0 0 0
0 1 1
1 0 1
1 1 1
表达式截断(短路)特性

&&:第一个表达式结果为假,第二个表达式不会执行

||:第一个表达式结果为真,第二个表达式不会执行

! 逻辑非

!表达式;
!100; // 结果:假
!0; // 结果:真

3. 分支语句

(1)if简单分支
形式 1:单分支

if (表达式)
{
语句;
}

形式 2:双分支 if-else

if (表达式)
{
语句1;
}
else
{
语句2;
}

执行规则:表达式结果为真,执行 if 内语句;表达式为假,执行 else 内语句

重要注意事项

  • if 可以单独存在,else 不能单独存在
  • if/else 后面只有一条语句时,{}可以省略,工程开发建议不要省略
  • 大括号内部语句建议缩进一个 Tab
  • if(表达式)后面不要写分号,分号代表 if 语句直接结束
  • (2)if阶梯分支

    if (表达式1)
    {
    语句1;
    }
    else if (表达式2)
    {
    语句2;
    }
    else if (表达式3)
    {
    语句3;
    }
    else
    {
    语句4;
    }

    (3)if嵌套分支

    if (表达式1)
    {
    if (表达式2)
    {
    if (表达式3)
    {

    }
    }
    else
    {

    }
    }
    else
    {
    语句;
    }

    注意:嵌套分支不要嵌套太深,建议最多嵌套 5 层,否则代码可读性很差

    (4)switch分支
    语法格式

    switch (表达式)
    {
    case 常量: 语句1; break;
    case 常量: 语句2; break;
    case 常量: 语句3; break;
    case 常量: 语句4; break;
    default: 语句; break;
    }

    核心注意点

  • switch()内的表达式必须产生整型结果(int、char 等整型类型);不能是浮点型
  • 只匹配单一结果时,每个case末尾加上break,跳出 switch;default后的 break 可以省略
  • default分支可以省略
  • case 后面只能写常量,不能写变量或者区间表达式
  • (三)循环结构

    1. 循环三要素

    • 循环变量初始化:定义 / 给控制循环的变量赋初始值,写在循环外部
    • 循环条件:判断要不要继续循环,条件为真则执行循环体
    • 循环变量更新:每次循环结束修改变量,避免死循环

    2. 三种循环语法

    (1) while 先判断,后执行(0 次或多次)

    while(条件表达式){
    循环体;
    变量更新;
    }

    特点:条件不成立,循环体一次都不运行。

    (2)do-while 先执行,后判断(至少执行 1 次)

    do{
    循环体;
    变量更新;
    }while(条件表达式); //末尾分号不能丢

    适用场景:必须先执行一次操作(菜单输入、密码校验)。

    (3)for 结构紧凑,已知循环次数首选

    for(初始化;条件;更新){
    循环体;
    }

    执行顺序:初始化→判断条件→成立执行循环体→更新变量→再次判断条件 三部分均可省略:for(;;) 代表无限死循环。

    3. 跳转关键字

    • break
      • 跳出当前一层循环,直接结束循环;
      • 同时可用于 switch 跳出分支。
    • continue
      • 仅跳过本次循环剩余代码,直接进入下一轮条件判断,不会终止整个循环。
    • goto(不推荐):可跳出多层循环,破坏代码结构,工程尽量不用。

    4. 循环嵌套

    • 循环内部再写循环,外层循环走 1 次,内层循环完整跑完一轮;
    • break/continue只作用于离它最近的一层循环,无法直接跳出多层。

    5. 易错点

  • 死循环成因:缺少变量更新、条件永远为真(如while(1)故意死循环);
  • for 循环分号问题:for();{} 分号会让循环体为空;
  • do-while 末尾必须带分号,while、for 括号后不能加分号;
  • 循环条件不要用浮点 == 判断,浮点数精度误差会导致循环异常;
  • 短路规则在循环条件中同样生效,&&前为假、||前为真时后半段不执行。
  • 总结

            流程控制是 C 语言程序逻辑的核心,顺序结构为基础执行模式;分支依靠关系、逻辑表达式判断选择执行路径,if 适配多区间判断,switch 仅支持整型常量匹配;所有循环均离不开初始化、条件、更新三要素,三种循环各有适用场景。break、continue 实现循环局部跳转,编写代码时需规避分号误用、浮点数判等、死循环等问题,合理嵌套分支与循环,能实现绝大多数程序逻辑需求。

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » C语言知识点(三)---流程控制
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!