让一个整数选项,
决定程序走哪条路线
今天学习 switch 多分支选择与 break,亲手观察漏写 break 后的 case 穿透,并完成带除零保护的整数运算菜单。
switch 匹配固定选项
switch (choice) 使用变量当前保存的值,寻找相同的 case 作为执行入口。所有固定选项都不匹配时,程序进入 default。
day11.c
switch (choice)
{
case 1:
printf("执行加法\n");
break;
case 2:
printf("执行减法\n");
break;
default:
printf("无效选项\n");
break;
}case 后面的冒号表示分支入口。与适合范围和组合条件的 if 不同,switch 更适合菜单中 1、2、3、4 这样的固定值。
break 阻止 case 穿透
实验时故意删除 case 2 的 break。输入 2 后,程序先输出“你选择了添加记录”,随后继续执行 case 3,又输出“你选择了退出程序”。
进入匹配的 case 后,程序不会重新判断后续标签,而会继续向下执行,直到遇见 break 或到达 switch 末尾。
如果多个分支都需要独立结束,就要分别写好 break。完成穿透实验后,缺失的 break 已经恢复。
完成安全整数运算菜单
最终程序先读取菜单选项和两个整数,再用四个 case 分别完成加法、减法、乘法、除法与取余。除法分支内部继续使用 if 检查第二个整数。
day11.c
case 4:
if (second != 0)
{
printf("%d / %d = %d\n", first, second, first / second);
printf("余数 = %d\n", first % second);
}
else
{
printf("除数不能为 0\n");
}
break;四条路线均已实际验证:1, 9, 4 得到 13;4, 9, 4 得到整数商 2、余数 1;4, 9, 0 正确提示除数不能为 0;选项 8 进入 default。所有运行都正常退出,代码为 0。
执行顺序带来的新发现
测试无效选项 8 时,程序仍然先要求输入两个整数。这不是 default 失效,而是两次 scanf_s() 写在 switch 前面:程序先完成输入,之后才判断选项。
今天真正掌握的内容
- 会用
switch / case / default组织固定选项 - 理解
break会结束当前switch - 通过实际输出理解 case 穿透及其执行路线
- 能在
case内继续使用if保护除法 - 能根据代码位置解释输入与判断的先后顺序
下一步将学习 C 语言的 while 循环和计数变量更新,让程序能够按照条件重复执行。