📚 什么是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;
case 2:
cout << "二" << endl;
break;
case 3:
cout << "三" << endl;
break;
}
cout << "\n无break的情况:" << endl;
switch (num) {
case 1:
cout << "一" << endl;
case 2:
cout << "二" << endl;
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),输出对应的英文单词。
输入数字后点击"生成代码"...