C语言选择结构详解:if-else与switch语句用法对比
C语言通过条件判断实现程序流程控制,核心工具包括 if-else 和 switch。本文将演示如何构建从简单条件到复杂多分支的逻辑结构,重点阐明 break 中断机制与 default 兜底处理的使用场景。
一、if-else 语句的条件判断
第1步:使用 if 实现单分支选择
当逻辑只需在满足特定条件时执行一段代码,其余情况忽略时,使用 if 语句。其基本语法为判断表达式,若返回真则执行花括号内的代码块。
if(表达式)
{
代码块(仅当表达式为真时执行)
}
注意:若代码块内只有一行语句,可省略花括号,但建议养成规范书写习惯。
实例:判断整数是否为3的倍数。
int main()
{
int i = 10;
// 10 % 3 != 0,条件不成立,printf不会执行
if (i % 3 == 0)
printf("是3的倍数\n");
return 0;
}第2步:使用 if-else 实现双分支选择
当需要在“条件成立”和“条件不成立”两个路径中二选一时,采用 if...else 结构。else 始终匹配离它最近的未匹配的 if。
if(表达式)
{
语句一(条件为真执行)
}
else
{
语句二(条件为假执行)
}
实例:判断考试成绩是否及格。
#include<stdio.h>
int main()
{
int score = 0;
scanf("%d", &score);
if (score >= 60)
printf("及格\n");
else
printf("不及格\n");
return 0;
}第3步:使用 else if 实现多分支选择
当存在多个互斥条件范围时,可通过链式 if...else if...else 进行分段处理。程序会从上至下依次检测条件,一旦某条件满足即执行对应代码并跳出整个结构。
if(表达式1)
{
语句1
}
else if(表达式2)
{
语句2
}
...
else
{
// 以上所有条件均不满足时执行
}
实例:根据年龄段输出称谓。
#include <stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if (age < 18)
printf("少年\n");
else if (age >= 18 && age < 30)
printf("青年\n");
else if (age >= 30 && age < 50)
printf("中年\n");
else if (age >= 50 && age < 80)
printf("老年\n");
else
printf("老寿星\n");
return 0;
}二、switch 语句处理等值分支
当需要对变量与多个确定的常量值逐一比对时,switch 语句比长串的 if-else if 更为清晰且易于维护。
第4步:掌握 switch-case 基础语法
switch 接受一个整型表达式作为入口,内部包含多个 case 标签指向不同常量。进入对应的 case 后,代码将按顺序逐行执行,直到遇到 break 或结束 switch 大括号。
switch(整型表达式)
{
case 常量值1:
语句;
break;
case 常量值2:
语句;
break;
default:
默认语句;
}
第5步:理解 case 穿透现象与 break 作用
若在 case 末尾遗漏了 break,程序发生“穿透”,即继续执行下一个 case 的代码直至遇到 break。这在需要多个情况执行相同逻辑时有用,但在星期判断这类场景中通常是逻辑错误。
演示:无 break 的异常输出
若输入 day = 2,由于没有 break 截断,程序会从星期二一直打印到星期天。
// 缺少 break 的 switch
switch (day)
{
case 2:
printf("星期二\n");
// 丢失 break,导致继续执行后续代码
case 3:
printf("星期三\n");
...
}
正确做法是在每个独立逻辑处理后添加 break 终止执行流。
switch (day)
{
case 1:
printf("星期一\n");
break; // 必须添加以阻断后续执行
case 2:
printf("星期二\n");
break;
...
}
第6步:使用 default 处理意外输入
虽然非报错,但不符合预期的输入会导致程序什么都不做。使用 default 子句可以捕获所有未被显式列出的值,增强代码健壮性。
#include <stdio.h>
int main()
{
int day = 0;
scanf("%d", &day);
switch (day)
{
case 1:
printf("星期一\n");
break;
case 2:
printf("星期二\n");
break;
case 3:
printf("星期三\n");
break;
case 4:
printf("星期四\n");
break;
case 5:
printf("星期五\n");
break;
case 6:
printf("星期六\n");
break;
case 7:
printf("星期天\n");
break;
default:
printf("输入无效\n");
break; // default 后的 break 可选,但有助于保持结构一致
}
return 0;
}
总结
以上就是C语言if-else与switch选择结构的详细内容,更多关于C语言条件判断的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













