第二讲 if与switch的分支结构设计 教学课件-山东省春季高考《编程语言基础—C语言》考纲技能通

2025-07-01
| 32页
| 236人阅读
| 3人下载
精品

内容正文:

目录/CONTENTS 1. 分支结构概念与关系、逻辑表达式 2. if语句 3. switch语句与break、continue关键字 1 考纲分析与历年考试试题分析 利用if语句、switch语句实现分支结构的程序设计 输入一个整数,判断它是奇数还是偶数,并输出结果。 #include <stdio.h> int main() { int n; scanf("%d", &n); // 判断奇偶性(处理负数情况) if (n % 2 == 0) { printf("偶数 "); } else { printf("奇数 "); } return 0; } 2 关系与逻辑表达式 山东省计算机类高考技能教学 3 分支结构的概念 在 C 语言中,分支结构(选择结构)是一种根据条件判断结果来决定执行不同代码路径的逻辑结构,类似于现实中的 “十字路口”,让程序能根据不同情况做出选择。 类比生活场景: "如果今天下雨,就带伞;否则不带伞" → 这就是典型的分支逻辑 关系表达式 与 逻辑表达式 关系表达式:比较大小与条件判断 定义:通过关系运算符比较两个操作数的大小关系,结果为逻辑值(真或假)。 在 C 语言中,逻辑值用整数表示: 真:非 0 值(如 1、5、-3 等) 假:0 注意: ==(等于) vs =(赋值): a == 5 是判断 a 是否等于 5(关系运算); a = 5 是将 5 赋值给 a(赋值运算)。 常见错误:误将 if (a == 0) 写成 if (a = 0),导致逻辑错误。 关系运算符列表 关系表达式的运算规则 表达式格式: 操作数1 关系运算符 操作数2 例:x > y、a + b <= c - d、ch != 'A'。 结果类型:整数(0 或 1) int a = 3, b = 5;  printf("%d ", a > b);  // 输出0(假)  printf("%d ", a != b);  // 输出1(真) 优先级 与 结合性 优先级 高于赋值运算符(=),低于算术运算符。 例:3 + 2 > 4 等价于 (3+2) > 4,结果为 1(真)。 结合性(从左到右) int x = 10;  x > 5 > 3  // 等价于 (10>5)>3 → 1>3 → 0(假) 逻辑表达式:组合多个条件 定义: 通过逻辑运算符将多个关系表达式或逻辑值组合起来,形成更复杂的条件判断。 结果仍为逻辑值(0 或 1)。 逻辑运算符的运算规则 逻辑与(&&) 规则:仅当左操作数和右操作数都为真时,结果为真(1),否则为假(0)。 示例: int a = 5, b = 3, c = 0; printf("%d ", a > 0 && b < 5);  // 5>0为真,3<5为真 → 结果1(真) printf("%d ", a > 10 && b < 2); // 5>10为假,直接短路,结果0(假) 逻辑或(||) 规则:当左操作数或右操作数至少一个为真时,结果为真(1),否则为假(0)。 示例: int a = 5, b = 3, c = 0; printf("%d ", a < 0 || b > 2); // 5<0为假,3>2为真 → 结果1(真) printf("%d ", a > 0 || c++ > 5); // a>0为真,直接短路,c不参与运算 → 结果1(真) 逻辑非(!) 规则:对操作数的真假取反:若操作数为真(非 0),结果为假(0);若为假(0),结果为真(1)。 示例: int a = 5, b = 0; printf("%d ", !a); // 5为真 → 取反后0(假) printf("%d ", !b); // 0为假 → 取反后1(真) 短路求值(重要!) 逻辑与(&&):若左操作数为假,右操作数不会执行(因为结果已确定为假)。 int x = 1, y = 2; (x == 0) && (y++ > 0); // x==0为假,y++不执行,y仍为2 逻辑或(||):若左操作数为真,右操作数不会执行(因为结果已确定为真)。 int x = 1, y = 2; (x == 1) || (y++ > 0); // x==1为真,y++不执行,y仍为2 逻辑运算符 的 关键特性 运算符优先级 !(逻辑非)优先级最高,高于算术运算符和关系运算符。 例:!a == b 等价于 (!a) == b。 && 的优先级高于 ||,但低于关系运算符。 例:a > b && c < d || e == f 等价于 (a > b && c < d) || (e == f)。 建议用括号明确运算顺序,避免错误。 逻辑值与数值的转换: 在 C 语言中,非 0 值视为真(逻辑结果为1),0 值视为假(逻辑结果为0)。 例:int a = 3; if (a) { ... } 等价于 if (a != 0)。 区分逻辑运算符与位运算符: && 和 || 是逻辑运算符,用于判断真假; & 和 | 是位运算符,用于二进制位运算; 注意事项 if语句 山东省计算机类高考技能教学 16 单分支if语句 if (条件表达式) { 条件为真(非0)时执行的代码块 } 执行逻辑:先计算条件表达式的值,若为真(非 0),则执行大括号内的代码;若为假(0),则跳过代码块。 关键点说明 条件表达式:可以是关系表达式(如a > b)、逻辑表达式(如x && y)或数值(非 0 即真)。 代码块规范:若代码块仅含一条语句,大括号可省略(但建议保留,避免漏写)。 // 规范写法(推荐) if (score >= 60) {     printf("及格!"); }   // 省略大括号的写法(仅一条语句时允许) if (temperature < 0) printf("结冰警告!"); if (条件表达式) {     // 条件为真时执行的代码块 } else {     // 条件为假时执行的代码块 } 执行逻辑:若条件为真,执行if代码块;否则,执行else代码块(二者必选其一)。 适用场景:二选一的场景(如:判断性别、区分奇偶)。 关键点说明 else的位置:必须紧跟在if代码块之后,中间不能插入其他语句。 避免逻辑错误:条件表达式需覆盖所有可能情况(如:判断奇偶时,num%2==1为真则奇数,否则偶数)。 多分支if-else if-else语句 if (条件1) {     // 条件1为真时执行 } else if (条件2) {     // 条件1为假且条件2为真时执行 } else if (条件3) {     // 条件1、2为假且条件3为真时执行 } ... else {     // 以上所有条件都为假时执行(可选) } 执行逻辑:按顺序判断条件,一旦某个条件为真,执行对应代码块,后续条件不再判断;若所有条件为假,执行else代码块(若无else,则不执行任何分支)。 适用场景:多条件分级处理(如:成绩等级、商品折扣、季节判断)。 关键点说明 条件顺序:优先判断范围小或优先级高的条件(如:判断成绩等级时,先判断>=90再判断>=80)。 避免冗余判断:后续条件无需重复前序条件的相反情况(如:else if隐含 “前序条件为假”)。 switch语句与break、continue关键字 山东省计算机类高考技能教学 23 switch 语句的语法结构 基本语法格式: switch (表达式) {     case 常量表达式1:         语句块1;         [break;]  // 可选,用于跳出switch结构     case 常量表达式2:         语句块2;         [break;]     ...     default:  // 可选,处理所有case都不匹配的情况         语句块n;         [break;] } 关键规则 表达式类型:通常为整数类型(如int、char)或枚举类型,不能是浮点数或变量。 常量表达式: 每个case后的常量表达式必须是唯一的(不能重复)。 常量表达式的值必须与switch表达式的类型兼容(如int类型表达式对应case 1、case 'a'等)。 执行流程: ①计算switch表达式的值。 ②按顺序匹配case后的常量表达式,找到匹配项后执行对应语句块。 ③若未遇到break,会继续执行后续所有case的语句块,直到switch结束或遇到break。 ④若所有case都不匹配,执行default(若存在)。 break 关键字的作用 跳出当前 switch 结构:当执行到break时,立即终止switch语句的执行,跳转到switch后的下一条语句。 避免穿透效应:若没有break,程序会从匹配的case开始,依次执行后续所有case和default的语句块(即使不匹配),这种现象称为 “穿透”。 示例(无 break,穿透现象) int num = 2; switch (num) {     case 1:         printf("One ");     case 2:         printf("Two ");  // 匹配,继续执行下一个case     case 3:         printf("Three ");  // 无break,继续执行     default:         printf("Other "); } // 输出:Two Three Other 示例(有 break) int num = 2; switch (num) {     case 1:         printf("One ");         break;  // 跳出switch     case 2:         printf("Two ");  // 匹配,执行后跳出         break;     default:         printf("Other "); } // 输出:Two continue 关键字的作用 跳过本次循环的剩余语句:仅用于循环结构(如for、while、do-while),而非switch语句。 继续下一次循环:执行continue后,程序会立即跳转到循环条件判断处,开始下一次循环。 break 与 continue 的核心区别 switch 语句中误用 continue 的情况 错误示例(编译会报错): switch (num) {     case 1:         continue;  // 错误!continue不能用于switch     // ... } if和switch结构 适用场景对比 谢 谢 观 看 32 $$

资源预览图

第二讲 if与switch的分支结构设计 教学课件-山东省春季高考《编程语言基础—C语言》考纲技能通
1
第二讲 if与switch的分支结构设计 教学课件-山东省春季高考《编程语言基础—C语言》考纲技能通
2
第二讲 if与switch的分支结构设计 教学课件-山东省春季高考《编程语言基础—C语言》考纲技能通
3
第二讲 if与switch的分支结构设计 教学课件-山东省春季高考《编程语言基础—C语言》考纲技能通
4
第二讲 if与switch的分支结构设计 教学课件-山东省春季高考《编程语言基础—C语言》考纲技能通
5
第二讲 if与switch的分支结构设计 教学课件-山东省春季高考《编程语言基础—C语言》考纲技能通
6
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。