乐于分享
好东西不私藏

别再头秃!C语言控制语句,原来就是电脑的「听话指南」

别再头秃!C语言控制语句,原来就是电脑的「听话指南」

点击蓝字

关注我们

别再头秃!C语言控制语句,原来就是电脑的「听话指南」

前言:为啥要学控制语句?

刚搞定输入输出的小伙伴是不是觉得:

代码写起来,从上到下、一条道走到黑,跑完就结束,半点不听话?

| 想实现 | 需要 |

|-------|------|

| 满足条件才执行 | 分支语句 |

| 重复做一件事100遍 | 循环语句 |

| 情况A做这、情况B做那 | 分支选择 |

C语言控制语句= 给电脑写的「行为准则」

没有它,代码是没头苍蝇;有了它,代码才是懂事的打工人——听指挥、懂选择、能加班(循环)~

1.1 程序三大执行逻辑

1.1.1 顺序结构:老老实实往下跑

就像早上起床:

```

起床 → 刷牙 → 洗脸 → 干饭 → 上课/上班

```

一步接一步,不跳、不选、不回头。

💡 默认状态:不加任何控制语句,代码从上到下依次执行。

但人生不是直线,代码也不是——**判断、选择、重复**,这就轮到分支和循环上场了!

1.2 分支语句:让代码学会「做选择」

1.2.1 if 语句:如果满足,就这么干

电脑版的「如果…就…」

```c

if(条件){

    满足条件就执行这里;

}

```

生活栗子

```c

if(今天下雨){

    带伞;

}

```

条件为真就执行,为假直接跳过~

1.2.2 if…else 语句:二选一,必须选

非此即彼,成年人不做选择,代码必须选!

```c

if(score >= 60){

    printf("及格,不用重修!");

} else {

    printf("挂科,准备补考吧…");

}

```

电脑:你让我选,我绝不犹豫~

1.2.3 if…else if…else:多选一,人生岔路

多分支判断,像选择题一样挨个匹配。

```c

if(score >= 90) printf("优秀");

else if(score >= 80) printf("良好");

else if(score >= 70) printf("中等");

else if(score >= 60) printf("及格");

else printf("重修套餐已送达");

```

从上往下判断,**匹配到一个就退出**,绝不回头~

1.2.4 switch 语句:精准匹配的「菜单选择」

判断固定常量(数字、字符),比一长串else if更优雅。

```c

switch(week){

    case 1: printf("周一,想死"); break;

    case 2: printf("周二,想逃"); break;

    case 3: printf("周三,过半"); break;

    case 4: printf("周四,盼周五"); break;

    case 5: printf("周五,狂欢前夜"); break;

    default: printf("周末,快乐起飞"); break;

}

```

⚠️ 重点提醒:每个case后面必须加break!  

不加break,代码会直通到底、全部执行,俗称「贯穿bug」!

1.3 循环语句:让代码学会「自动加班」

1.3.1 为什么要循环?

打印1~100,难道写100行printf?

循环一次搞定!

核心逻辑:条件满足,反复执行;不满足,跳出结束。

C语言三大循环:while、do-while、for

1.3.2 while 循环:先判断,再干活

```c

while(条件){

    循环体;

    更新条件;

}

```

逻辑:先检查条件,满足才执行,不满足一次都不跑。

像极了:有钱才消费,没钱直接躺平~

1.3.3 do…while 循环:先干一次,再判断

```c

do{

    循环体;

    更新条件;

}while(条件);

```

最大特点:不管条件满不满足,至少执行一次。

比如扫码支付、登录验证:先让你输一次,再判断对错~

1.3.4 for 循环:计数循环天花板

写固定次数循环,for永远是王者。

```c

for(初始化; 条件; 更新){

    循环体;

}

```

实战示例

```c

for(int i=1; i<=10; i++){

    printf("%d ",i);

}

// 输出:1 2 3 4 5 6 7 8 9 10

```

初始化、判断、更新,一行写完,结构清晰,代码优雅~

选择口诀

| 场景 | 推荐循环 |

|-----|---------|

| 简单计数 | for |

| 不确定次数 | while |

| 至少执行一次 | do-while |

1.4 跳转语句:想跳就跳,想停就停

1.4.1 break:直接跳出,不玩了

遇到break,立刻结束当前循环或switch,跳出到大括号外面。

常用于:找到结果就停止、满足条件就退出~

1.4.2 continue:跳过本次,继续下次

只跳过**当前这一轮循环,后面的继续跑。

示例:打印1~10,跳过5

```c

for(int i=1; i<=10; i++){

    if(i==5) continue;

    printf("%d ",i);

}

// 输出:1 2 3 4 6 7 8 9 10

```

不摆烂只是摸鱼~

1.4.3 goto:传说中的"跳转神器"

可以直接跳到指定标签,但**容易让代码乱成一锅粥。

💡 新手建议:能不用就不用,除非完全掌控,否则别给自己挖坑~

1.5 新手必看!5大经典坑点

| 坑点 | 现象 | 解决方案 |

|-----|------|---------|

| 分支括号忘加 | 只执行第一行,后面不受控制 | 永远写大括号 |

| switch忘break | 贯穿执行,全部跑一遍 | 每个case都加break |

| 循环条件写错 | 死循环,程序卡死 | 检查更新条件和边界 |

| ==写成= | 赋值当判断,永远成立 | `=`赋值,`==`判断 |

| 分号乱加 | if/while直接提前结束 | 小心分号位置 |

1.6 完整代码:三合一实战

```c

#include <stdio.h>

int main(){

    int score;

    printf("请输入成绩:");

    scanf("%d",&score);

    // 分支判断

    if(score < 0 || score > 100){

        printf("输入非法!\n");

    }else{

        // 循环演示

        for(int i=1; i<=3; i++){

            printf("正在判断等级…%d\n",i);

        }

        // 多分支

        if(score>=90) printf("等级:优秀\n");

        else if(score>=80) printf("等级:良好\n");

        else if(score>=60) printf("等级:及格\n");

        else printf("等级:不及格\n");

    }

    return 0;

}

```

顺序、分支、循环,三合一,复制就能跑!

1.7 核心要点速查表

| 语句 | 功能 | 记忆口诀 |

|-----|------|---------|

| `if` | 条件执行 | 如果满足,就这么干 |

| `if…else` | 二选一 | 非此即彼,必须选 |

| `if…else if` | 多选一 | 挨个匹配,匹配就撤 |

| `switch` | 精准匹配 | 菜单选择,记得break |

| `while` | 先判后做 | 有钱才消费 |

| `do…while` | 先做后判 | 至少体验一次 |

| `for` | 计数循环 | 初始化+判断+更新,一行搞定 |

| `break` | 跳出循环 | 不玩了,直接撤 |

| `continue` | 跳过本次 | 摸鱼一轮,继续干 |

| `goto` | 随意跳转 | 能不用就不用 |

结语:控制语句,其实一点都不难

| 概念 | 生活场景 |

|-----|---------|

| 顺序 | 按步骤做事 |

| 分支 | 做选择 |

| 循环 | 重复做事 |

| 跳转 | 跳过或停止 |

学会它们,你写的代码才真正有逻辑、有灵魂、能干活。

💡 别害怕报错,别害怕红波浪,控制语句本来就是用来试错、调整、优化的。

多写几遍、多跑几次,你会发现:原来让电脑听话,居然这么简单!

扫码关注我们

知识奇妙世界