首页
/
行业洞察
/
正文
INDUSTRY INSIGHT · 深度
第5章 选择结构程序设计
📅 2026/10/31 14:42:30
✍️ 爱科研究院
👁 阅读 3,247
if语句的三种形式单分支、双分支、多分支else if链。if的嵌套与else 与最近 if 配对规则。条件运算符?:构成的三目表达式。switch语句的结构、执行流程、case标签要求、default的摆放。C 语言没有布尔类型C99前条件判断中非 0 为真、0 为假关系/逻辑表达式结果为1真或0假。else与离它最近的、尚未配对的if配对缩进格式不影响配对关系只有{}能改变。switch(表达式)的表达式类型为整型含char其各个case标签必须是整型常量表达式不能是变量default子句可放在任何位置不一定在最后。switch遇break立即跳出没有break则贯穿执行后续所有case与default直到switch结束。条件运算符exp1 ? exp2 : exp3优先级仅高于赋值运算符与逗号运算符结合方向自右向左如a b ? a : c d ? c : d等价于a b ? a :(c d ? c : d)。if判断实型数据避免直接判等浮点误差可能使0.1 0.2 0.3为假应判断误差范围如fabs(x) 1e-6。三、!!! 辨析错误是什么 / 正确是什么!!! 1悬空 else——else 配对错误期望else与外层if配对实际配给了内层if。int a 1, b 2;if (a 1)if (b 3) printf(A);else // 这个 else 实际与内层 if (b3) 配对printf(B);// 执行结果什么都不输出a1 真 → 进入外层b3 假 → 执行 else错// 实际else 属于内层 ifb3 为假时执行 printf(B)正确是什么用花括号明确归属关系。if (a 1) {if (b 3) printf(A);} else {printf(B); // 明确属于外层 if}!!! 2switch的case标签写成变量或实型int n 2;switch (n) {case 1.5: ... // 错误case 标签必须是整型常量表达式case n: ... //错误不能是变量哪怕它此刻是常量值}正确是什么case后只能是整型常量含字符常量、#define宏或常量表达式。#define TWO 2switch (n) {case 1 1: ... // 正确常量表达式case TWO: ... // 正确宏替换后仍是常量case A: ... // 正确字符常量按 ASCII 整数值处理}!!! 3switch漏写break造成贯穿switch (2) {case 1: printf(一);case 2: printf(二); // 漏写 breakcase 3: printf(三);}// 输出二三错误地贯穿到 case 3正确是什么每个分支末尾加break跳出switch。switch (2) {case 1: printf(一); break;case 2: printf(二); break;case 3: printf(三); break;default: printf(其他); break;}// 输出二!!! 4if条件中把赋值当判断强调选择结构场景if (flag 0) { ... }恒为假if (ch A) { ... }恒为真且修改了ch——逻辑被悄悄改变。正确是什么判断用把常量写到左边可以防错if (0 flag)一旦写成编译直接报错。??? 1switch语句中表达式的结果类型为 ______。任意类型或实型——switch只能对离散的整型值分支实型float/double不能作switch表达式。正确是什么整型含字符型字符按 ASCII 码处理。注意枚举类型本质也是整型可用于switch。??? 2if (a 3, b 5) printf(ok);能否输出 ok______。答不能因为if里不能用逗号或答输出a3,b5——混淆了逗号表达式与多个判断。正确是什么填能输出。(a 3, b 5)是逗号表达式先执行a3再执行b5整个表达式取最后一项的值5非0为真故输出ok。若把逗号换成if (a 3 b 5)则是另一种先算3 (b5)且a 3部分语法错——考试中逗号表达式作if条件是经典陷阱。if (0, 0) // 结果0假不执行if (0, 100) // 结果100真执行这里括号里是逗号表达式逗号运算符规则从左往右依次执行 a3再执行 b5整个逗号表达式的值 最右边表达式的值也就是 5C 语言里非 0 即为真5 是真值条件成立执行 printf(ok);??? 3以下程序的运行结果是 ______。int x 1, y 2;if (x y)if (x 3) printf(A);else printf(B);答输出B——凭缩进直觉以为else属于外层if (x y)。C语言的配对规则与缩进无关else与最近的未配对 if配对即内层if (x 3)。于是内层if-else整体成为外层if的子语句外层条件1 2为假该子语句被整体跳过。正确是什么填什么都不输出。若确实想让else属于外层if必须用花括号限定if (x y){if (x 3) printf(A);} else {printf(B); // 加 {} 后才属于外层 if此时才输出 B}int a 2, b 3, c 4;执行if (a b) if (b c) c a; a b; b c;后a、b、c依次为___2 3 2___。if (x 0) y 1; else y -1;不等价的语句是___D___。A.y x 0 ? 1 : -1;B.if (x 0) y -1; else y 1;C.y 1; if (x 0) y -1;D.if (x 0) y 1; if (x 0) y -1;标准结论if-else不等价于两个连续 if。if…else互斥分支只会走其中一个两个 if 顺序写是两次独立判断语法结构不等价
📌 标签:
工业官网
设计趋势
AI 建站
SEO
获取完整报告 →
RELATED ARTICLES
推荐阅读
2026/10/31 14:42:30
usb_serial_generic_register / usb_serial_driver
2026/10/31 14:42:30
【共创稿事节】食材百科页的懒加载改造:LazyForEach、IDataSource 与缓存窗口的三次迭代
2026/10/31 14:42:30
34 · 两行 GEMV 共享激活,只换来 0.6%:一个反向证明
2026/10/31 15:42:36
MySQL外键约束全解析:原理、锁竞争与生产实践取舍
2026/10/31 15:42:36
6卡serve Qwen失败排查:从显存爆到NCCL超时的完整定位方法
2026/10/31 15:42:36
MySQL外键约束取舍指南:InnoDB锁、索引与级联删除边界
2026/10/31 15:42:36
系统工程专属Agent实战:基于Mogick的变更影响分析
2026/10/31 15:42:36
阿里云淘宝安全系统请求参数配置与优化指南
2026/10/31 15:37:36
HTML入门与语义化标签实践指南
2026/10/31 0:00:18
猫狗目标检测数据集:VOC/COCO/YOLO三格式一体化实战包
2026/10/31 0:00:18
HDU2017多校标程复现:算法竞赛工程化真题沙盒
2026/10/31 0:00:18
Codex Sandbox 隔离环境拆解:AI Agent 的临时实验室如何运作
2026/10/31 0:57:03
全国计算机二级C语言真题PDF高效刷题指南
2026/10/31 0:56:56
requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南
2026/10/30 21:48:31
递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现
2026/10/30 3:44:27
我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
2026/10/30 3:44:25
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026/10/30 3:44:29
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)