程序的世界和现实一样充满了如果……就……的选择。比如如果余额足够就扣款如果密码正确就登录成功。这一节我们学习 C 中两个最常用的条件判断工具if和switch。1. if 语句最基础的条件判断1.1 基本语法if(条件){// 条件为 true 时执行的代码}举个例子判断一个人是否成年#includeiostreamusingnamespacestd;intmain(){intage20;if(age18){cout你已成年endl;}return0;}age 18是一个布尔表达式结果要么是true要么是false。当结果为true时花括号里的代码才会执行。1.2 if-else两种情况if(条件){// 条件为 true}else{// 条件为 false}改进上面的例子if(age18){cout你已成年endl;}else{cout你还未成年endl;}1.3 if-else if-else多种情况当需要判断多个条件时用else if串联起来#includeiostreamusingnamespacestd;intmain(){intscore;cout请输入成绩;cinscore;if(score90){cout优秀endl;}elseif(score80){cout良好endl;}elseif(score60){cout及格endl;}else{cout不及格endl;}return0;}注意判断顺序很重要——这里从高到低判断所以score 80的时候说明前面score 90已经不成立了成绩一定在 80 到 89 之间。1.4 条件表达式中常用的运算符等于注意不是是赋值!不等于大于、小于大于等于、小于等于逻辑与两个条件都满足||逻辑或至少一个条件满足!逻辑非取反例如判断一个年份是否为闰年if((year%40year%100!0)||(year%4000)){coutyear 是闰年endl;}2. switch 语句精确匹配的多分支当你需要根据一个变量的精确值来做不同处理时switch比一长串if-else if更清晰。2.1 基本语法switch(表达式){case值1:// 表达式等于值1时执行break;case值2:// 表达式等于值2时执行break;default:// 都不匹配时执行}2.2 实例根据数字输出星期#includeiostreamusingnamespacestd;intmain(){intday;cout请输入 1-7 的数字;cinday;switch(day){case1:cout星期一endl;break;case2:cout星期二endl;break;case3:cout星期三endl;break;case4:cout星期四endl;break;case5:cout星期五endl;break;case6:cout星期六endl;break;case7:cout星期日endl;break;default:cout输入无效endl;}return0;}2.3 break 不能忘每个case后面的break非常重要。如果不写break程序会穿透到下一个 case 继续执行这通常不是你想要的。看一个故意利用穿透的例子switch(month){case1:case3:case5:case7:case8:case10:case12:cout31 天endl;break;case4:case6:case9:case11:cout30 天endl;break;case2:cout28 或 29 天endl;break;default:cout无效月份endl;}这里故意让多个 case 共享同一段代码利用穿透来简化逻辑。但这种情况不多见日常使用记得加break。3. if 和 switch 怎么选简单原则比较范围大于、小于、区间→ 用if精确匹配等于某个具体值→ 用switchswitch只能用于整数类型int、char、enum不能用于浮点数或字符串实际开发中if用得更多switch在处理枚举状态、菜单选项等场景下比较方便。4. 嵌套条件判断条件判断可以嵌套但不建议超过三层否则代码会变得难以阅读。如果发现嵌套太深可以考虑用函数拆分逻辑或者用提前return来减少嵌套层级。5. 小结这一节我们学了两种条件判断方式if适合范围判断和复杂条件组合switch适合精确值匹配。重点掌握if-else if-else的多分支写法和switch的break用法。下一节我们将学习循环结构让程序能够重复执行某些操作。