当前位置: 首页 > news >正文

C 语言基础第3章

一、流程控制的三种结构

  1. 顺序结构代码从main开始,从上到下逐条执行,没有跳转、没有重复。
  2. 分支结构根据条件有选择地执行某一段代码,满足条件才运行,不满足则跳过。
  3. 循环结构让某一段代码重复执行多次,直到条件不满足为止。

二、分支结构必备:关系运算符

用于比较两个数值,结果只有1(真)0(假)

表格

运算符含义说明
>大于双目运算符
>=大于等于双目运算符
<小于双目运算符
<=小于等于双目运算符
==等于注意:两个等号,不是赋值
!=不等于双目运算符

关系表达式

用关系运算符连接的式子,结果一定是int 类型,值为 1 或 0。

C 语言规则:非 0 即为真,0 即为假


三、分支结构必备:逻辑运算符

用于组合多个条件,结果仍为 1(真)/ 0(假)。

表格

运算符含义规则
&&逻辑与全真才真,一假即假
||逻辑或一真即真,全假才假
!逻辑非真变假,假变真(单目,右结合)

重点:短路求值(截断效应)

  1. &&左边为0→ 右边不执行
  2. ||左边为1→ 右边不执行

优先级:短路效应 >运算符

示例:

运行

int num = 0, b = 1; num && b++; // 左边为0,右边b++不执行,b仍=1 num || ++b; // 左边为0,右边执行,b=2

四、三目运算符(条件运算符)

唯一的三目运算符,语法:

运行

表达式1 ? 表达式2 : 表达式3;
  • 表达式 1 为真 → 执行表达式 2
  • 表达式 1 为假 → 执行表达式 3
  • 结合方向:自右向左

示例(求最大值):

运行

max = num1 > num2 ? num1 : num2;

五、分支语句(核心重点)

1. 单分支 if

运行

if (条件表达式) { 语句块; }
  • 条件为真,执行大括号内代码
  • if 后不要加分号,否则变成空语句,逻辑错误

2. 双分支 if…else

if (条件) { 语句1; } else { 语句2; }
  • 二选一执行
  • else不能单独使用,必须和最近的 if 配对

3. 多分支(阶梯分支)

if (条件1) { } else if (条件2) { } else if (条件3) { } else { }
  • 从上到下判断,只执行第一个满足条件的分支

4. if 嵌套

在 if 或 else 内部再写 if 语句。

列如

#include <stdio.h>

int main()

{

int num = 0 ;

printf("input num :");

scanf("%d",&num);

if(num> 60)

{

if(num >70)

{

if(num>80)

{

printf(">80\n");

}

else

{

printf("70 - 80\n");

}

}

else

{

printf("60-70\n");

}

}

else

{

printf("< =60\n");

}

}

等价写法

嵌套太多难读,尽量写成:

if(条件1 && 条件2 && 条件3) { }

注意

  • 嵌套不要超过 3~5 层,否则可读性极差
  • else永远和离它最近的未配对 if匹配

六、switch 多分支(超详细)

1. 作用

处理多选项、等值判断,比 if-else 更清爽。

2. 完整语法

switch(整型表达式) { case 常量1: 语句块; break; case 常量2: 语句块; break; case 常量3: 语句块; break; default: 都不匹配时执行; break; }

3. 必须记住的 4 条规则

  1. switch 里只能是整数 / 字符float、double 不能用。
  2. case 后面必须是常量不能是变量、不能是表达式。
  3. 匹配成功后一直执行,直到 break没 break 会穿透到下一个 case。
  4. default 可选所有 case 都不匹配时才走 default。

4. 经典示例:输入数字输出对应分数

int score; scanf("%d", &score); switch(score / 10) { case 10: case 9: printf("A\n"); break; case 8: printf("B\n"); break; case 7: printf("C\n"); break; default: printf("不及格\n"); }

七、循环控制(3 种循环 + 辅助语句)

1. while 循环(先判断,后执行)

语法

while(条件) { 循环体; 循环变量变化; }

执行流程

  1. 判断条件 → 真:执行循环体
  2. 执行完 → 回到条件再判断
  3. 条件为假 → 退出循环

示例:1~10 求和

int i = 1, sum = 0; while(i <= 10) { sum += i; i++; } printf("%d", sum);

2. do…while 循环(先执行,后判断)

语法

do { 循环体; } while(条件);

特点

  • 循环体至少执行 1 次
  • 末尾必须写分号

示例

int i=1, sum=0; do { sum += i; i++; } while(i <= 10);

3. for 循环(最常用,已知次数)

标准写法

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

执行顺序(必考)

  1. 初始化(只执行 1 次
  2. 判断条件 → 真:执行循环体
  3. 执行循环体
  4. 执行变量更新(i++)
  5. 回到第 2 步

死循环写法

for(;;) { }

八、循环三要素(必考)

任何循环必须有这 3 个,否则死循环:

  1. 循环变量初始化(int i=0;)
  2. 条件判断(i<10)
  3. 循环变量更新(i++ / i--)

九、循环辅助控制语句

1. break

  • 作用:跳出当前一层循环 /switch
  • 直接结束循环,不再执行

示例:遇到 5 就停止

for(i=1; i<=10; i++) { if(i == 5) break; printf("%d ", i); } // 输出:1 2 3 4

2. continue

  • 作用:跳过本次循环剩下语句
  • 直接进入下一次循环判断

示例:跳过 5

for(i=1; i<=10; i++) { if(i == 5) continue; printf("%d ", i); } // 输出:1 2 3 4 6 7 8 9 10

十、goto(了解)

  • 无条件跳转,只能在同一个函数内
  • 应用层禁止使用
  • Linux 内核错误处理常用

示例:1~10 求和

int i=1, sum=0; loop: sum += i; i++; if(i <= 10) goto loop;

分支结构编写规范

  1. if/else 后面的执行语句,一律加大括号,即使只有一行
  2. if 后不要加分号
  3. 条件尽量清晰,避免复杂嵌套
  4. 优先使用多分支else if,少用深层嵌套

本章高频易错点

  1. 流程控制:顺序、分支、循环
  2. 关系运算符:结果 1/0,非 0 即真
  3. 逻辑运算符:&&、||、!,支持短路
  4. 三目运算:? :,简化双分支
  5. 分支语句:if、if…else、else if、嵌套
  6. 核心:条件为真执行,为假跳过
  7. ===混淆=是赋值,==是判断相等
  8. if 后加分号,导致逻辑失效
  9. 短路求值导致自增 / 自减不执行
  10. 浮点数用==判断相等(精度问题)
  11. else 悬空,配对错误
http://www.jsqmd.com/news/727001/

相关文章:

  • 3个维度12种组合:Windows系统如何通过macOS鼠标指针实现跨平台美学统一
  • 港务费风波背后:数字孪生船舶与港口的“智”胜之道
  • 【数据治理核心宝典】必备的12个高频专业术语详解(建议收藏)
  • 为OpenClaw智能体工作流配置Taotoken作为后端模型服务
  • 保姆级教程:手把手复现AGPCNet红外小目标检测(附PyTorch源码与数据集)
  • 测试博文标题 at 20260430
  • 别再混用了!Express里res.send、res.json、res.write/end到底怎么选?附场景代码对比
  • 2026全国二三四五线城市硬笔书法加盟品牌实力排行 - 奔跑123
  • 太原中高考、少儿、艺考生美术集训营排行:五家机构核心实力对比 - 奔跑123
  • 怎样轻松掌握哔哩下载姬:5个高效批量下载B站视频的实用秘诀
  • 2026年3月口碑好的半挂生产厂家口碑推荐,压路机配件/工程机械/6 吨压路机/压路机/二手挖机,半挂租赁怎么选择 - 品牌推荐师
  • WindowsCleaner:终极Windows系统清理优化完整指南
  • 告别握手烦恼:用FIFO封装Xilinx DDR3 MIG IP,让图像处理数据流更丝滑
  • 如何高效使用InfluxDB Studio:时间序列数据库管理的完整实战指南
  • 使用 taotoken 后如何清晰观测各模型调用用量与成本分布
  • VisDrone2019数据集转YOLO格式
  • Sora 视频生成 API 集成教程
  • 使用node js快速构建接入taotoken的ai客服原型
  • 2026太原少儿、中高考、艺考生美术培训学校排行:合规性与成果双维度测评 - 奔跑123
  • 从Verilog代码到综合网表:一个直连警告案例的完整调试与避坑指南
  • 从Blue机器人看准直驱(QDD):它真的是协作机器人降本的“银弹”吗?
  • Sunshine游戏串流5步掌握:如何实现跨设备游戏自由?
  • 终极音乐解锁指南:如何在浏览器中免费解密加密音乐文件
  • TRUNCATE TABLE(清空表)
  • 如何用MarkMap思维导图工具快速可视化你的Markdown笔记
  • 语雀文档批量导出终极解决方案:高效自动化迁移技术指南
  • 思源黑体TTF:免费开源多语言字体构建终极指南
  • 长春特色餐饮店施工口碑排行 4家优质服务商盘点 - 奔跑123
  • 基于安卓的美食探店与菜谱分享系统毕设源码
  • TouchGal:重新定义Galgame社区的3大颠覆性创新