C++ 少儿编程第 7 课:switch 语句完整教学(5-6 年级适用,附全套实战案例)
前言
大家好,我是泺喜科教小鱼老师。大家在用多层if else if做多等值判断时,代码会越写越长、可读性极差。本节课我们学习switch 多分支语句,专门解决「单一变量匹配固定常量」的场景,代码更简洁、逻辑更清晰。本文适配小学 5-6 年级编程课堂,完整还原 90-120 分钟授课流程,包含课前回顾、语法精讲、4 大实战项目、课堂练习题、课后挑战,学生可自学巩固。
一、课程基础信息
- 核心学习目标
- 熟练掌握 switch 完整语法格式,分清各组成部分作用
- 掌握 switch 表达式支持的数据类型(int、char 字符)
- 吃透 break 关键字,理解 case 穿透现象与规避方法
- 认识字符 char 类型,学会字符常量匹配
- 能独立完成四则运算、成绩分级、月份天数、星期判断、一年第天数 5 个实战项目
- 前置知识:if 多分支、常量 const、闰年判断、基础四则运算
二、课前重点回顾
正式讲 switch 前,先用 4 道复习题巩固上节课内容,同时引出本节课字符知识点:
- 多分支 if-else if 标准语法是什么?
- 输入三个数字,如何用分支求出最大值?
- C++ 定义常量的关键字是?(答案:
const) - 闰年完整判断条件?(能被 4 整除且不能被 100 整除,或能被 400 整除)
课堂实操:复盘旧项目【四则运算】
先用 if 多分支完成简易计算器,运行后让学生发现痛点:运算符判断分支过多,代码臃肿。同时引入新数据类型:char 字符,单个字母、+ - * /都属于字符常量,为 switch 字符匹配做铺垫。
三、新知探索:switch 语句核心讲解
3.1 为什么有 if,还要学 switch?
- if 适用:范围判断、多条件组合(分数区间、大小比较)
- switch 适用:单一变量 == 固定常量(运算符、月份、星期、等级)优势:分支越多,代码越简洁,逻辑分层一目了然,适合菜单类、选项类程序。
3.2 switch 标准语法模板
switch(表达式)
{
case 常量1:
执行代码;
break; // 跳出switch,防止穿透
case 常量2:
执行代码;
break;
// 可写多个case
default: // 所有case都不匹配时执行(可选,建议必写)
兜底代码;
break;
}
3.3 语法重难点拆解
- switch (表达式) 限制表达式只能是整型 int、字符 char,不能是小数、区间、变量;
- case 后面必须是常量不能写变量、区间(如
case x、case 60~90均报错);多个 case 可共用同一组代码; - break 是重中之重缺少 break 会出现case 穿透:匹配对应 case 后,会继续执行下方所有 case 代码,造成逻辑错误;仅有意合并分支时可省略;
- default 默认分支类似 if 最后的 else,处理输入非法值,放在任意位置都生效,建议写在最后。
3.4 实战 1:优化【四则运算计算器】
用 switch+char 字符改写之前 if 版本计算器,直观感受代码简化效果。
#include <iostream>
using namespace std;
int main()
{
int a,b;
char op;
cout<<"输入数字1、运算符、数字2:";
cin>>a>>op>>b;
switch(op)
{
case '+':
cout<<a+b;
break;
case '-':
cout<<a-b;
break;
case '*':
cout<<a*b;
break;
case '/':
if(b==0) cout<<"除数不能为0";
else cout<<a/b;
break;
default:
cout<<"运算符输入错误";
}
return 0;
}
讲解要点:
- char 类型存储加减乘除符号,case 直接匹配字符常量;
- 每个运算符分支后必须加 break;
- default 拦截非法符号。
3.5 两大综合项目实战
项目 1:成绩等级划分
需求:输入 0-100 分数,90-100 输出 A,80-89 输出 B,70-79 输出 C,60-69 输出 D,低于 60 输出 E。思路:分数除以 10 取整,用 switch 匹配十位数字,利用 case 穿透合并相同等级。
#include <iostream>
using namespace std;
int main()
{
int score;
cin>>score;
switch(score/10)
{
case 10:
case 9:
cout<<"等级A";
break;
case 8:
cout<<"等级B";
break;
case 7:
cout<<"等级C";
break;
case 6:
cout<<"等级D";
break;
default:
cout<<"等级E";
}
return 0;
}
项目 2:输入年月,输出当月天数(本课重点强化)
需求:1、3、5、7、8、10、12 月 31 天;4、6、9、11 月 30 天;2 月分闰年 29、平年 28。核心:多 case 共用代码,switch 嵌套 if 判断闰年。
#include <iostream>
using namespace std;
int main()
{
int year,month,day;
cin>>year>>month;
switch(month)
{
case 1:case 3:case 5:case 7:case 8:case 10:case 12:
day=31;
break;
case 4:case 6:case 9:case 11:
day=30;
break;
case 2:
// 闰年判断
if((year%4==0&&year%100!=0)||year%400==0)
day=29;
else day=28;
break;
default:
cout<<"月份非法";
return 0;
}
cout<<"当月天数:"<<day;
return 0;
}
四、课堂强化练习
学完案例后分层练习,巩固语法、排查易错点:
练习 1:读程序写运行结果
给出 3 段缺少 break、多 case 合并、无 default 的 switch 代码,让学生手动推演输出,理解穿透现象。示例错题:
int x=2;
switch(x)
{
case 1:cout<<"一";
case 2:cout<<"二";
case 3:cout<<"三";
break;
}
答案:二三(无 break 发生穿透)
练习 2:综合编程题【今天星期几】
题目:输入数字 1-7,分别输出周一到周日;输入其他数字提示输入错误。参考核心代码:
int week;
cin>>week;
switch(week)
{
case 1:cout<<"星期一";break;
case 2:cout<<"星期二";break;
case 3:cout<<"星期三";break;
case 4:cout<<"星期四";break;
case 5:cout<<"星期五";break;
case 6:cout<<"星期六";break;
case 7:cout<<"星期日";break;
default:cout<<"星期数字只能1-7";
}
练习 3:选择题专项
典型考题:switch 表达式不能使用以下哪种类型?A.int B.char C.double 答案:C
五、课堂知识总结
- 核心概念梳理
- switch:等值多分支语句,替代多层 if-else if;
- break:终止当前 case,防止穿透,绝大多数场景必须写;
- char 字符:单个符号、字母,可作为 switch 匹配值;
- default:兜底分支,处理非法输入。
- 适用场景区分
- switch:固定数值 / 字符匹配(月份、星期、运算符、菜单)
- if:区间判断、多条件组合(分数、大小比较)
- 课堂互动:让学生自主分享本节课学会的知识点,朗读 switch、case、break、char 等专业单词,理解词义。
六、课后挑战作业
挑战项目:输入年月日,计算这是一年的第几天
解题思路:
- switch 匹配月份,累加前面所有月份总天数;
- 判断闰年,2 月后总天数 + 1;
- 最后加上当月日期。核心代码片段:
int y,m,d,sum=0;
cin>>y>>m>>d;
switch(m)
{
case 12:sum+=30;
case 11:sum+=31;
case 10:sum+=30;
case 9:sum+=31;
case 8:sum+=31;
case 7:sum+=30;
case 6:sum+=31;
case 5:sum+=30;
case 4:sum+=31;
case 3:sum+=28;
case 2:sum+=31;
case 1:sum+=0;break;
}
// 闰年修正
if(m>2&&((y%4==0&&y%100!=0)||y%400==0)) sum++;
sum+=d;
cout<<"本年第"<<sum<<"天";
拓展思考:本题刻意利用 case 穿透简化累加,体会穿透的合理使用场景。
七、本节课易错点汇总(学生必看)
- 漏写 break,引发 case 穿透,输出多余内容;
- case 后写变量、小数、区间,编译报错;
- switch 表达式使用 float/double 浮点类型;
- 忘记写 default,非法输入无提示;
- 字符匹配时漏写单引号
' '; - 月份天数、闰年逻辑混淆。
八、写在最后
switch 是信奥基础分支必考知识点,等值判断场景优先使用。本节课由浅入深,从计算器到日期计算,贴合小学生认知逻辑,课堂练习 + 课后挑战双重巩固。初学建议先规范书写每个 case 的 break,熟练后再灵活运用 case 穿透简化代码。
更多推荐



所有评论(0)