C语言学习笔记 - 64.流程控制18 - 选择结构中的if与switch

📅 2026/6/27 2:59:14
C语言学习笔记 - 64.流程控制18 - 选择结构中的if与switch
一、本节学习定位本节内容属于流程控制中的选择结构部分。C 语言中的选择结构主要包括两类if 语句switch 语句在实际入门学习中if 语句使用频率更高也是学习流程控制的重点。switch 语句主要用于处理“表达式的值等于某些固定常量”的多分支问题适合菜单选择、等级分类、命令分发等场景。本节当前重点是继续深入掌握if 语句后续再系统学习switch 语句。二、选择结构的基本概念选择结构用于根据条件选择不同的执行路径。例如if (score 60) { printf(及格\n); } else { printf(不及格\n); }程序会先判断score 60如果条件成立则执行printf(及格\n);否则执行printf(不及格\n);这就是典型的二分支选择结构。三、C语言中的两种选择语句语句类型主要用途适用场景学习重点if条件判断范围判断、复杂逻辑判断、大小比较当前重点switch多分支匹配固定值匹配、菜单命令、等级字符判断后续补充四、if语句是选择结构的学习重点1. if语句适用范围更广if 语句可以判断任意表达式的真假适合处理各种复杂条件。例如成绩区间判断if (score 90 score 100) { printf(优秀\n); } else if (score 80 score 90) { printf(良好\n); } else if (score 60 score 80) { printf(及格\n); } else { printf(不及格\n); }这里每一个条件都是一个逻辑表达式因此使用if...else if...else更自然。2. if语句可以处理范围判断例如score 90 score 100表示score 大于等于 90并且 score 小于等于 100这种“范围判断”是if 语句的典型应用场景。3. if语句可以处理复杂逻辑例如if (age 18 score 60) { printf(符合条件\n); }该条件同时判断年龄和成绩只有两个条件都成立时才执行输出语句。五、switch语句的基本作用switch 语句用于实现多分支选择结构。它根据某个表达式的值跳转到对应的case分支执行。基本形式如下switch (表达式) { case 常量1: 语句1; break; case 常量2: 语句2; break; case 常量3: 语句3; break; default: 默认语句; break; }其中关键字含义switch根据表达式的值进行多分支选择case表示一个匹配入口break跳出 switch 结构default当前面所有 case 都不匹配时执行六、switch语句示例按等级输出分数段1. 程序功能从键盘输入一个成绩等级字符输入字符输出分数段A85~100B70~84C60~69D60其他字符输入错误2. 示例程序#include stdio.h int main(void) { char grade; printf(请输入成绩等级 A/B/C/D); scanf(%c, grade); printf(Your score: ); switch (grade) { case A: printf(85~100\n); break; case B: printf(70~84\n); break; case C: printf(60~69\n); break; case D: printf(60\n); break; default: printf(enter data error!\n); break; } return 0; }3. 程序讲解代码作用char grade;定义字符变量用于保存成绩等级scanf(%c, grade);从键盘输入一个字符switch (grade)根据grade的值选择分支case A:当grade等于A时执行break;执行完当前分支后跳出switchdefault:当前面所有case都不匹配时执行七、switch语句的执行流程以输入A为例输入A程序执行流程如下读取字符A存入变量grade执行switch (grade)将grade的值依次与各个case常量比较找到匹配项case A:执行printf(85~100\n);遇到break;跳出整个switch结构。最终输出Your score: 85~100八、switch中的break非常重要1. 正确写法case A: printf(85~100\n); break;break的作用是终止当前switch结构防止程序继续向下执行后面的case分支。2. 缺少break的后果如果省略breakswitch (grade) { case A: printf(85~100\n); case B: printf(70~84\n); case C: printf(60~69\n); case D: printf(60\n); default: printf(enter data error!\n); }当输入A时程序会从case A开始一直向下执行直到switch结束。可能输出85~100 70~84 60~69 60 enter data error!这通常不是预期结果。九、switch与if的区别对比维度if语句switch语句判断方式判断表达式真假匹配表达式的固定值适合场景范围判断、复杂条件固定常量匹配条件形式可以是任意关系表达式或逻辑表达式通常是整型或字符型表达式分支数量可多可少适合多个固定分支是否需要break不需要通常每个 case 后需要可读性复杂多分支时可能冗长固定值多分支时更清晰十、什么时候用if什么时候用switch1. 适合使用if的情况当条件是范围判断或复杂逻辑时应优先使用if。例如if (score 90 score 100) { printf(优秀\n); }这里判断的是一个区间适合用if。2. 适合使用switch的情况当判断对象是某个固定值时可以使用switch。例如switch (grade) { case A: printf(优秀\n); break; case B: printf(良好\n); break; case C: printf(及格\n); break; default: printf(输入错误\n); break; }这里判断的是字符A、B、C等固定值适合用switch。十一、switch使用注意事项switch后面的表达式通常应为整型表达式或字符型表达式。case后面必须是常量或常量表达式不能是变量或范围表达式。每个case常量不能重复。default不是必须的但建议保留用于处理异常输入。一般情况下每个case分支最后都应写break;。如果故意省略break;应明确知道会发生“继续向下执行”的效果。case只是入口标号不是独立的条件判断。十二、错误示例不能用switch直接判断分数范围以下写法是错误思路switch (score) { case score 90: printf(优秀\n); break; }原因是score 90不是case所要求的固定常量。如果要判断成绩范围应使用if...else if...elseif (score 90 score 100) { printf(优秀\n); } else if (score 80 score 90) { printf(良好\n); } else if (score 60 score 80) { printf(及格\n); } else { printf(不及格\n); }十三、VSCode中验证switch程序1. 新建源文件建议文件名switch_grade.c2. 编写代码将以下代码保存到文件中#include stdio.h int main(void) { char grade; printf(请输入成绩等级 A/B/C/D); scanf(%c, grade); switch (grade) { case A: printf(85~100\n); break; case B: printf(70~84\n); break; case C: printf(60~69\n); break; case D: printf(60\n); break; default: printf(enter data error!\n); break; } return 0; }3. 编译程序在 VSCode 终端中执行gcc switch_grade.c -o switch_grade.exe如果想查看更多潜在警告可以使用gcc -Wall switch_grade.c -o switch_grade.exe4. 运行程序./switch_grade.exe5. 测试输入输入预期输出A85~100B70~84C60~69D60Eenter data error!十四、本节要点总结C 语言选择结构主要包括if和switch。当前学习重点是if 语句因为它适用范围更广。switch适合处理固定值匹配的多分支问题。if适合处理范围判断和复杂逻辑条件。switch中的case只是入口标号不是条件判断语句。break用于跳出switch一般不能省略。default用于处理所有case都不匹配的情况。判断成绩区间时通常使用if...else if...else不适合直接用switch。使用 VSCode 练习时应通过不同输入观察程序分支执行结果。十五、参考出处《C程序设计第五版》谭浩强第 3 章“最简单的 C 程序设计——顺序程序设计”C 语言控制语句分类包含if、switch、break等控制语句。《C程序设计第五版》谭浩强第 4 章“选择结构程序设计”if语句与switch语句多分支选择结构。《C程序设计第五版》谭浩强第 4.7 节“用 switch 语句实现多分支选择结构”switch、case、default、break的使用方法。郝斌《C语言自学入门教程》对应内容选择结构中if与switch的学习顺序和重点。VSCode-C/C 环境配置实践使用 GCC 编译、运行和测试 C 程序。