首页 > 其他分享 >C语言中的条件判断与分支选择:深入解析if, else, else if与switch

C语言中的条件判断与分支选择:深入解析if, else, else if与switch

时间:2024-08-01 23:29:44浏览次数:26  
标签:case 语句 C语言 break switch printf else

引言

在C语言编程中,条件判断与分支选择是构建复杂逻辑、实现不同场景下代码执行路径分流的基石。if、else、else if以及switch语句作为C语言提供的强大工具,让我们能够根据条件表达式的真假值,灵活地控制程序的执行流程。本文将带您深入探索这些判断语句的语法细节、使用场景及最佳实践,助您编写出更加高效、易读的C语言代码。


对比

特性/语句 if else else if switch
基础功能 根据条件判断执行代码块 if条件不满足时执行 提供if之后的另一个条件判断 根据表达式的值与多个常量值比较执行不同代码块
语法结构 if (条件) { 语句; } 紧随if之后,else { 语句; } 插入在ifelse之间,可多个else if连续使用 switch (表达式) { case 常量值: 语句; break; ... default: 语句; }
条件类型 任意表达式,结果为真(非0)或假(0) 无独立条件,依赖if if,用于另一个条件判断 常量表达式(整型、枚举、字符型等),不支持范围判断
执行流程 如果条件为真,执行语句块;否则跳过 如果if条件为假,执行else语句块 如果if条件为假,且else if条件为真,则执行;否则继续检查下一个else ifelse 表达式与case标签匹配时执行相应代码块,遇到break跳出;若无匹配项且存在default,则执行default
适用场景 简单的条件判断 if条件不满足时的备选执行路径 在多个条件中选择一个执行 根据单一表达式的不同值选择不同执行路径,适用于多分支选择
代码清晰度 清晰直观,适合少量条件判断 if配合,提高代码可读性 适用于多个条件判断,但过多时可能降低可读性 对于基于枚举或固定值的分支选择,代码更加简洁明了
性能差异 微小,主要取决于编译器优化 if if 在某些情况下,编译器可能通过“跳转表”优化提高性能,但通常与if-else系列差异不大

以上表格概述了C语言中ifelseelse ifswitch语句的基本特性、语法结构、条件类型、执行流程、适用场景、代码清晰度以及性能差异。在实际编程中,应根据具体需求和上下文环境选择合适的语句。


代码演示

1. if-else的基本应用

int number = 5;    //定义了一个整型变量number,并将其初始化为5 
  
//如果符合number大于0则执行if里面的代码(显然这里5>0)
if (number > 0) 
{  
    printf("The number is positive.\n");  
}
//如果不符合number大于0则执行else里面的代码
else 
{  
    printf("The number is not positive.\n");   
}  

2. else if分支选择的基本应用

/*编写一个C语言程序,用于根据用户输入的分数来判定成绩等级。成绩等级判定规则如下:

如果分数大于等于90,则成绩等级为A。
如果分数大于等于80且小于90,则成绩等级为B。
如果分数大于等于70且小于80,则成绩等级为C。
如果分数大于等于60且小于70,则成绩等级为D。
如果分数小于60,则成绩等级为F。*/

#include <stdio.h>  
 
int main() {  
    int score;  
    scanf("%d", &score);    

    if (score >= 90) {  
        printf("Grade: A\n");  
    } else if (score >= 80) {  
        printf("Grade: B\n");  
    } else if (score >= 70) {  
        printf("Grade: C\n");  
    } else if (score >= 60) {  
        printf("Grade: D\n");  
    } else {  
        printf("Grade: F\n");  
    }  
  
    return 0;  
}

3. switch的基本应用

/*编写一个简短的C语言程序,该程序通过用户输入的星期几的数字(1-7),使用switch语句来判断并输出对应的星期名称。
其中,1代表星期一,7代表星期日。*/

#include <stdio.h>  
  
int main() {  
    int day;  
    printf("请输入星期几的数字(1-7):");  
    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("无效的输入,请输入1到7之间的数字。\n");  
    }  
  
    return 0;  
}

代码分析

  • 在这段代码中,程序首先提示用户输入一个代表星期几的数字(1-7),然后使用switch语句根据输入的数字选择对应的case分支来输出星期的名称。

  • 如果输入的数字不在1到7的范围内,则执行default分支,输出一个错误消息。

  • 每个case分支后面都跟着一个break语句,用于结束switch语句的执行,防止发生“穿透”现象(即执行完一个case分支后继续执行下一个case分支的代码)。

标签:case,语句,C语言,break,switch,printf,else
From: https://www.cnblogs.com/kdgoat/p/18337784

相关文章