🔀 C++ switch语句判断 - L8 进阶概念

掌握多分支选择结构,简化复杂条件判断

📚 什么是switch语句?

switch的作用

switch语句用于多分支选择,当需要根据一个变量的不同取值执行不同代码时使用。

  • ✅ 替代多个if-else if
  • ✅ 代码更清晰简洁
  • ✅ 执行效率更高
  • ✅ 适合离散值判断

基本语法结构

#include <iostream> using namespace std; int main() { int day = 3; switch (day) { case 1: cout << "星期一" << endl; break; case 2: cout << "星期二" << endl; break; case 3: cout << "星期三" << endl; break; default: cout << "其他" << endl; } return 0; }
💡 语法要点:
switch 后面跟着圆括号和表达式
case 后面是常量值和冒号
break 跳出switch结构(重要!)
default 处理所有未匹配的情况

⚙️ break的重要性

有break vs 无break

#include <iostream> using namespace std; int main() { int num = 2; cout << "有break的情况:" << endl; switch (num) { case 1: cout << "一" << endl; break; // 跳出switch case 2: cout << "二" << endl; break; // 跳出switch case 3: cout << "三" << endl; break; } cout << "\n无break的情况:" << endl; switch (num) { case 1: cout << "一" << endl; // 没有break,继续执行 case 2: cout << "二" << endl; // 没有break,继续执行 case 3: cout << "三" << endl; } return 0; }
⚠️ 注意事项:
• 忘记break会导致"穿透"现象
• 从匹配的case开始,一直执行到break或switch结束
• 有时可以利用穿透实现特殊逻辑
• 建议每个case都加break
🎮 互动实验:break测试器

输入数字,观察有break和无break的区别

输入数字后点击"测试"...

🛠️ default分支

处理未匹配的情况

#include <iostream> using namespace std; int main() { int month; cout << "请输入月份(1-12):"; cin >> month; switch (month) { case 3: case 4: case 5: cout << "春季" << endl; break; case 6: case 7: case 8: cout << "夏季" << endl; break; case 9: case 10: case 11: cout << "秋季" << endl; break; case 12: case 1: case 2: cout << "冬季" << endl; break; default: cout << "无效的月份!" << endl; } return 0; }
💡 default的作用:
• 处理所有未明确列出的情况
• 提供错误提示或默认行为
• 可以放在任何位置(通常在最后)
• 不是必需的,但建议使用
🎯 季节判断器

输入月份,自动判断季节

输入月份后点击"判断季节"...

🚀 switch的高级用法

case合并(利用穿透)

#include <iostream> using namespace std; int main() { char grade; cout << "请输入等级(A-F):"; cin >> grade; switch (grade) { case 'A': case 'a': cout << "优秀(90-100分)" << endl; break; case 'B': case 'b': cout << "良好(80-89分)" << endl; break; case 'C': case 'c': cout << "中等(70-79分)" << endl; break; case 'D': case 'd': cout << "及格(60-69分)" << endl; break; case 'F': case 'f': cout << "不及格(0-59分)" << endl; break; default: cout << "无效等级" << endl; } return 0; }
💡 技巧说明:
• 多个case共用一段代码
• 只在最后一个case后写break
• 大小写字母可以同时处理
• 减少代码重复

switch的限制

  • ❌ 只能用于整数类型(int, char, enum)
  • ❌ 不能用于浮点数(float, double)
  • ❌ 不能用于字符串(string)
  • ❌ case必须是常量表达式
  • ✅ 可以用if-else处理这些情况

📝 实战练习

📝 小练习:switch理解

以下代码的输出是什么?

#include <iostream> using namespace std; int main() { int x = 2; switch (x) { case 1: cout << "A"; case 2: cout << "B"; case 3: cout << "C"; break; default: cout << "D"; } return 0; }
选择答案查看解析...
💻 编程挑战

题目:根据输入的星期几(1-7),输出对应的英文单词。

输入数字后点击"生成代码"...