鹏哥c语言第三第四讲——分支和循环
本人也是刚学完c语言,刚刚进入嵌入式,写这个笔记也只是为了我之后方便复习,发出来和大家一起分享
·
C 语言是结构化程序设计语言,核心包含顺序、选择、循环三大结构,分支与循环是编程入门最核心的知识点,我结合ai一起梳理if/switch分支、while/for/do-while循环、操作符、break/continue/goto等内容。如果我有哪里说错的欢迎大家评论区指正。
一、分支结构(选择结构)
分支结构用于根据条件执行不同代码,C 语言提供if和switch两种实现方式。
1.1 if 语句
1.1.1 基础语法
c
运行
// 单分支
if(表达式)
语句;
// 双分支
if(表达式)
语句1;
else
语句2;
// 多分支/嵌套
if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;
- C 语言中:0 为假,非 0 为真
- 分支默认只控制一条语句,多条语句必须用
{}包裹(复合语句)//新手常在这里犯错误总是给出一条语句后,想要打印出内容或者想跳出循环,就忽略的这一点。
1.1.2 悬空 else 问题
核心规则:else 总是和离它最近的未匹配 if匹配,和代码缩进无关!
c
运行
// 错误写法(缩进误导)
int a=0,b=2;
if(a==1)
if(b==2)
printf("hehe\n");
else
printf("haha\n"); // 实际匹配内层if,程序无输出
// 正确写法(加{}明确逻辑)
if(a==1)
{
if(b==2)
printf("hehe\n");
}
else
{
printf("haha\n");
}
1.2 关系操作符
用于比较大小 / 相等,共 6 种:> 、< 、>= 、<= 、== 、!=
- 关系表达式结果:真返回 1,假返回 0
- 严禁连续使用:
18<=age<=36逻辑错误,应写为age>=18 && age<=36
1.3 逻辑操作符
表格
| 操作符 | 含义 | 规则 | ||
|---|---|---|---|---|
&& |
逻辑与(并且) | 全真为真,一假即假 | ||
| || | 逻辑或(或者 | 一真即真,全假为假 | ||
! |
逻辑非(取反) | 真变假,假变真 |
短路特性:
&&左边为假,右边不执行||左边为真,右边不执行
1.4 条件操作符(三目运算符)
语法:表达式1 ? 表达式2 : 表达式3
- 表达式 1 为真 → 执行表达式 2
- 表达式 1 为假 → 执行表达式 3
c
运行
// 求两数最大值
int max = a>b ? a : b;
1.5 switch 语句
适合多分支定值判断,语法:
c
运行
switch(整型表达式)
{
case 整型常量:
语句;
break; // 跳出switch
default:
语句;
break;
}
- switch 后必须是整型表达式,case 后必须是整型常量
- 无
break会发生case 穿透,可利用穿透简化代码 //比较常用的例子就是周一到周五是工作日,周六周天是休息日,就可以利用穿透
二、循环结构
循环用于重复执行代码,C 语言提供while/for/do-while三种循环。
2.1 while 循环
c
运行
while(表达式)
{
循环体;
}
- 先判断,后执行;条件不满足直接退出
- 适合循环次数不确定的场景
2.2 for 循环(最常用)
c
运行
for(初始化; 判断条件; 调整变量)
{
循环体;
}
- 初始化只执行 1 次,判断→循环→调整循环执行
- 三部分集中,代码可读性最高,优先使用
2.3 do-while 循环
c
运行
do
{
循环体;
}while(表达式);
- 先执行,后判断,循环体至少执行 1 次
- 适合需要先运行一次的场景
2.4 break 与 continue
表格
| 关键字 | 作用 |
|---|---|
break |
永久终止当前层循环 /switch |
continue |
跳过本次循环剩余代码,直接进入下一次判断 |
注意:while 中 continue 易导致死循环(跳过变量调整),for 循环相对安全。
2.5 循环嵌套
外层循环控制次数,内层循环处理细节,例如:找 100~200 素数。
2.6 goto 语句
- 作用:函数内跳转到指定标号处
- 优点:多层循环快速退出
- 缺点:滥用打乱流程,尽量不用
三、随机数与猜数字游戏(综合实战)
3.1 随机数生成三步曲
srand((unsigned int)time(NULL));→ 设置随机种子(程序仅调用 1 次)rand();→ 生成伪随机数- 控制范围:
a + rand()%(b-a+1)→ 生成 [a,b] 随机数
3.2 猜数字核心逻辑
- 生成 1~100 随机数
- 循环猜数字,提示大 / 小,限制次数
- 菜单 + switch 实现游戏控制
四、新手高频易错点(血泪总结)
1. 分支相关错误
==写成=:赋值代替相等判断,导致条件恒真- 分支多条语句不加 {}:逻辑失控
- 悬空 else:缩进误导,匹配错误
- 关系运算符连用:
18<=age<=36逻辑错误
2. 循环相关错误
- while 循环中 continue 跳过变量调整,死循环
- for 循环三部分写乱,初始化 / 判断 / 调整顺序错误
- switch 忘记写 break,导致 case 穿透
- 循环条件写错,无限循环或一次不执行
3. 操作符错误
- 混淆
&&和||逻辑 - 不理解短路特性,右侧代码不执行导致 bug
- 三目运算符嵌套过多,可读性极差
4. 随机数错误
srand写在循环内,导致随机数重复- 随机数范围计算错误
五、总结
- 分支:
if适合范围判断,switch适合定值判断 - 循环:优先
for,次数不定用while,至少执行一次用do-while - 核心:条件写对、括号加对、break/continue 用对
- 新手先练基础语法,再写综合案例,避开上述坑点!
写在最后:这一部分虽然理解上简单,但是很多题目都是在考数学思维逻辑以及优化代码的能力,暴力解法在某些条件下可能会使程序跑崩。
更多推荐



所有评论(0)