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

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

时间:2024-08-01 23:29:44浏览次数:12  
标签: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

相关文章

  • C语言运算符深度解析--超详细
    引言在C语言的浩瀚宇宙中,运算符如同点亮星辰的魔法棒,它们不仅连接着数据的海洋,更驱动着程序的逻辑流转。从基础的算术运算到复杂的位操作,每一个运算符都承载着特定的功能,是构建程序逻辑的基石。掌握C语言的运算符,就如同手握开启编程世界大门的钥匙,让你能够自如地编写出高效、精准......
  • C++和C语言if else
    一、if。if(/*表达式*/)//如果表达式成立,执行大括号里的代码。如果表达式不成立,执行大括号下面的代码。{//代码}二、else。 else//else一般和if配对,如果if表达式不成立,执行else。如果if表达式成立,不执行else{//代码} 所以执行如上代码输出的是"1是单数"。......
  • 嵌入式软件--C语言高级 DAY 8 函数
    函数是C语言尤为重要的知识点,再嵌入式的学习过程中,对51和32的单片机的学习是重中之重。一、函数的基本概念1.介绍函数是一种可重复使用的代码块,用于执行特定的任务或操作。函数允许我们将代码逻辑组织成独立的单元,从而提高了代码的可读性、可维护性和重用性。一个C程序可......
  • 酸奶配面包的c语言世界(3)
    第三讲:分支与循环(上)写自己的东西不要做留声机不要做写满字的纸要做孤天的鹤                    ——24.7.291.if语句if语句的语法形式:if(表达式)语句c语言中,0表示假,非0表示真表达式为非0(真),那么语句执行,表达式为0(假),则语......
  • 嵌入式开发C语言学习day26-华清作业8.1
    思维导图作业//使用两个线程完成两个文件的拷贝,分支线程1拷贝前一半,分支线程2拷贝后一半,主线程回收两个分支线程的资源#include<myhead.h>#defineMAX1024structBuf{charfile1[20];charfile2[20];intsize;};//进程1拷贝前半内容void*copy......
  • 易优CMS模板标签switch条件判断支持多条件判断
    【基础用法】标签:switch描述:简单条件判断,比if判断标签少些不等于相同功能,视个人习惯而用。用法:{eyou:switchname='$eyou.field.has_children'}{eyou:casevalue='1'}当前栏目列表的栏目ID有1个下级栏目{/eyou:case}{eyou:casevalue='2'}当前栏目列表的栏目ID有2个下级栏目{/e......
  • 图的遍历及其C语言实现
    目录1.为什么需要两种遍历方法?2.深度优先搜索(DeepthFirstSearch,DFS)思想:具体过程:伪代码:时间复杂度:3.广度优先搜索(BreadthFirstSearch,BFS) 思想:具体过程: 伪代码: 时间复杂度:图示: ​编辑 C语言代码演示1.为什么需要两种遍历方法?解决不同问题:DFS适用......
  • 第 6 行 else print('不好') ^^^^^ 语法错误:预期为 ':'
    salary=int(input('enteryoursalary:\n'))hours=int(input('enteryourhours:\n'))total_salary=salary*hoursiftotal_salary<200000:print('good')else:print('notgood')你错过了(:)否则这就是它不起作用的原因......
  • 3.校验,格式化,ModelSerializer使用
    【一】反序列化校验1)三层校验字段自己校验直接写在字段类的属性上局部钩子在序列化中写validata_字段名全局钩子#serializers.pyclassBookSerializer(serializers.Serializer):#1)name字段的要大于1小于10name=serializers.CharField(min_length=......
  • C语言——循环语句
            C语言是结构化的程序设计语言,这里的结构是指:顺序结构、循环结构、选择结构。在C语言中,有三种循环语句,下文将一一介绍如何在C语言编程时使用。1.while语句        while语句的语法形式如下:1while(表达式);2{    语句;    }   ......