C语言选择结构详解:if-else与switch语句用法对比

苏见山
苏见山
发布时间:2026-10-16 | 5人浏览过
原创

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语言条件判断的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表