点击蓝字
关注我们
别再头秃!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` | 随意跳转 | 能不用就不用 |
结语:控制语句,其实一点都不难
| 概念 | 生活场景 |
|-----|---------|
| 顺序 | 按步骤做事 |
| 分支 | 做选择 |
| 循环 | 重复做事 |
| 跳转 | 跳过或停止 |
学会它们,你写的代码才真正有逻辑、有灵魂、能干活。
💡 别害怕报错,别害怕红波浪,控制语句本来就是用来试错、调整、优化的。
多写几遍、多跑几次,你会发现:原来让电脑听话,居然这么简单!

扫码关注我们
知识奇妙世界
夜雨聆风