【精通C语言】:分支结构switch语句的灵活运用

个人头像
🎥 屿小夏 : 个人主页
🔥个人专栏 : C语言详解
🌄 莫道桑榆晚,为霞尚满天!

文章目录

  • 📑前言
  • 一、switch语句
    • 1.1 语法
    • 1.2 代码示例
  • 二、switch的控制语句
    • 2.1 break
    • 2.2 defualt子句
  • 三、switch的嵌套
  • 🌤️全篇总结

在这里插入图片描述

📑前言

在C语言中,switch语句是一种特殊的分支语句,常用于处理多分支的情况。通过switch语句,我们可以根据不同的整型表达式的值执行相应的代码块,使程序的逻辑更加清晰和简洁。除了基本的switch语句语法,我们还将深入探讨了break语句和default子句的作用,以及switch语句的嵌套使用,为读者提供了更全面的认识和理解。

一、switch语句

switch语句也是一种分支语句。
常常用于多分支的情况。

例如:

输入1,输出星期一
输入2,输出星期二
输入3,输出星期三
输入4,输出星期四
输入5,输出星期五
输入6,输出星期六
输入7,输出星期日

1.1 语法

那我没写成 if…else if …else if 的形式太复杂,那我们就得有不一样的语法形式。
这就是switch 语句。

switch(整型表达式)
{语句项;
}  

而语句项是什么呢?

//是一些case语句:
//如下:
case 整形常量表达式:语句;

1.2 代码示例

在switch语句中,我们没办法直接实现分支,搭配break使用才能实现真正的分支。

#include <stdio.h>
int main()
{int day = 0;switch(day){case 1printf("星期一\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;}return 0;
}

根据需求,有时候我们的代码需要变化:

  1. 输入1-5,输出的是“weekday”;
  2. 输入6-7,输出“weekend
#include <stdio.h>
//switch代码演示
int main()
{int day = 0;switch(day){case 1case 2:case 3:case 4:case 5:printf("weekday\n");break;case 6:case 7:printf("weekend\n");break;}return 0;
}

二、switch的控制语句

2.1 break

break语句 的实际效果是把语句列表划分为不同的分支部分。

break语句用于终止当前的case分支,并跳出switch语句。当switch语句中的某个case条件满足时,执行对应的代码块,然后遇到break语句时,会跳出switch语句,不再执行后续的case条件。如果没有break语句,程序会继续执行后续case条件的代码块,直到遇到break语句或者switch语句结束。因此,break语句在switch语句中的作用是控制程序的流程,避免不必要的代码执行。

编程习惯:

  • 在最后一个 case 语句的后面加上一条 break语句。
  • 之所以这么写是可以避免出现在以前的最后一个 case 语句后面忘了添加 break语句。

2.2 defualt子句

如果表达的值与所有的case标签的值都不匹配怎么办?
其实也没什么,结构就是所有的语句都被跳过而已。
程序并不会终止,也不会报错,因为这种情况在C中并不认为是个错误。
但是,如果你并不想忽略不匹配所有标签的表达式的值时该怎么办呢?
你可以在语句列表中增加一条default子句,把下面的标签
default:
写在任何一个 case 标签可以出现的位置。
当 switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。
所以,每个switch语句中只能出现一条default子句。
但是它可以出现在语句列表的任何位置,而且语句流会像执行一个case标签一样执行default子句 。

编程好习惯:

在每个 switch 语句中都放一条default子句是个好习惯,甚至可以在后边再加一个 break 。

三、switch的嵌套

#include <stdio.h>
int main()
{int n = 1;int m = 2;switch (n){case 1:m++;case 2:n++;case 3:switch (n){//switch允许嵌套使用case 1:n++;case 2:m++;n++;break;}case 4:m++;break;default:break;}printf("m = %d, n = %d\n", m, n);return 0;
}

switch语句可以嵌套在另一个switch语句中,以实现更复杂的条件判断和逻辑控制。

🌤️全篇总结

本文深入了解了C语言中switch语句的各种用法,包括基本语法、break语句的作用、default子句的使用以及switch语句的嵌套。这些知识不仅帮助我们更好地掌握C语言中的分支结构,还能够提高代码的可读性和可维护性。无论是处理简单的多分支情况还是实现复杂的逻辑控制,希望本文的内容能够帮助读者更好地应用switch语句,编写出高效、清晰的程序。

篇总结

本文深入了解了C语言中switch语句的各种用法,包括基本语法、break语句的作用、default子句的使用以及switch语句的嵌套。这些知识不仅帮助我们更好地掌握C语言中的分支结构,还能够提高代码的可读性和可维护性。无论是处理简单的多分支情况还是实现复杂的逻辑控制,希望本文的内容能够帮助读者更好地应用switch语句,编写出高效、清晰的程序。

C语言结尾图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/605867.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PKI 公钥基础设施,公钥私钥,信息摘要,数字签名,数字证书

PKI 公钥基础设施 https 基于 PKI 技术。PKI&#xff08;Public Key Infrastructure&#xff0c;公钥基础设施&#xff09;是一种安全体系结构&#xff0c;用于管理数字证书和密钥对&#xff0c;以确保安全的数据传输和身份验证。PKI 采用了公钥加密技术&#xff0c;其中每个实…

【中小型企业网络实战案例 八】配置映射内网服务器和公网多出口、业务测试和保存配置

相关学习文章&#xff1a; 【中小型企业网络实战案例 一】规划、需求和基本配置 【中小型企业网络实战案例 二】配置网络互连互通【中小型企业网络实战案例 三】配置DHCP动态分配地址 【中小型企业网络实战案例 四】配置OSPF动态路由协议【中小型企业网络实战案例 五】配置可…

H266/VVC网络适配层概述

视频编码标准的分层结构 视频数据分层的必要性&#xff1a;网络类型的多样性、不同的应用场景对视频有不同的需求。 编码标准的分层结构&#xff1a;为了适应不同网络和应用需求&#xff0c;视频编码数据根据其内容特性被分成若干NAL单元&#xff08;NAL Unit&#xff0c;NALU…

Docker学习笔记(一):Docker命令总结

Docker命令总结 一、Docker介绍1.1 镜像与容器区别 二、Docker命令 一、Docker介绍 Docker是一个开源的应用容器引擎&#xff0c;它允许开发者在几乎任何环境中运行应用程序&#xff0c;而无需担心运行环境的问题。Docker的核心概念是容器&#xff0c;它可以将应用程序及其依赖…

PLC远程上下载功能实现的基本原理

PLC远程上下载功能实现的基本原理 首先&#xff0c;需要一个支持PLC远程上下载的物联网网关&#xff0c;该网关通常具有网口、RS485、232等接口&#xff0c;以连接PLC和其他物联网设备。远程上下载物联网网关是一种用于实现PLC程序远程上传和下载的技术。PLC与物联网网关之间需…

c# entity freamwork 插入批量数据如何提升性能 AutoDetectChangesEnabled

在C#的Entity Framework&#xff08;EF&#xff09;中&#xff0c;AutoDetectChangesEnabled 是一个影响上下文行为的重要属性&#xff0c;它默认设置为 true。这个属性控制着DbContext实例自动检测实体对象 ** 中更改的能力。 当AutoDetectChangesEnabled 设置为 true时&…

2024--Django平台开发-基础信息(一)

一、前置知识点 - Python环境搭建 (Python解释器、Pycharm、环境变量等) - 基础语法(条件、循环、输入输出、编码等) - 数据类型(整型、布尔型、字符串、列表、字典、元组、集合等) - 函数(文件操作、返回值、参数、作用域等) - 面向对象 (类、对象、封装、继承、多态等)包和模…

Jtti:为什么建议企业使用存储型服务器?

随着企业业务的不断发展&#xff0c;数据存储已成为企业运营中不可或缺的一部分。存储服务器作为数据存储的重要设备之一&#xff0c;在企业中发挥着越来越重要的作用。本文将探讨企业为什么需要使用存储服务器&#xff0c;以及存储服务器对于企业的重要性。 可以满足企业不断增…

【动态规划】C++算法312 戳气球

作者推荐 【动态规划】【字符串】扰乱字符串 本文涉及的基础知识点 动态规划 LeetCode312 戳气球 有 n 个气球&#xff0c;编号为0 到 n - 1&#xff0c;每个气球上都标有一个数字&#xff0c;这些数字存在数组 nums 中。 现在要求你戳破所有的气球。戳破第 i 个气球&…

Simpy简介:python仿真模拟库-01/5

一、说明 在计算机编程领域&#xff0c;仿真在理解复杂系统、进行实验和做出明智决策方面发挥着关键作用。SimPy 是“Simulation Python”的缩写&#xff0c;是一个功能强大且多功能的仿真框架&#xff0c;允许开发人员和研究人员使用 Python 创建和分析离散事件仿真。无论您是…

视频如何制作微信表情?仅需一招在线制作

Gif动画表情包是当下一种非常流行的图片展示格式&#xff0c;能够通过gif格式的图片来调节聊天氛围或是传递信息&#xff0c;非常有趣。而gif动图现在也被各行各业的商家用作宣传使用&#xff0c;很吸引大众的目光。 那么&#xff0c;这种非常吸引人的gif动图是怎么制作的呢&a…

Power BI - 5分钟学习修改数据类型

每天5分钟&#xff0c;今天介绍Power BI修改数据类型 Power BI加载数据时&#xff0c;会尝试将源列的数据类型转换为更高效的存储、计算和数据可视化的数据类型。 例如&#xff0c;如果从Excel导入的值的列没有小数值&#xff0c;Power BI Desktop会将整个数据列转换为整数数据…

信息学奥赛一本通1268:【例9.12】完全背包问题代码+详解

题目链接&#xff1a;1268 题目 1268&#xff1a;【例9.12】完全背包问题 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 40600 通过数: 21799 【题目描述】 设有n&#xfffd;种物品&#xff0c;每种物品有一个重量及一个价值。但每种物品的数量是无限的&…

Spanner on a modern columnar storage engine 中文翻译

文章目录 0. 摘要1. 存储引擎2. 存储引擎迁移的挑战2.1 可靠性、可用性和数据完整性2.2 性能和成本2.3 复杂性 3. 迁移可靠性的系统原则方法3.1 可靠性原则和自动化架构3.2 迁移方案和按周迁移3.3 客户 部署感知 调度3.4 管理可靠性、可用性和性能 4. 项目管理和驱动指标概括 0…

基于领域驱动设计的低代码平台的设计与实现

本文介绍了基于领域驱动设计&#xff08;DDD&#xff09;的低代码平台的设计与实现方法。低代码平台是一种能够通过图形化界面和少量编码&#xff0c;快速构建应用程序的工具。通过结合DDD的思想&#xff0c;我们可以将领域专家的知识转化为具体的领域模型&#xff0c;并将其作…

网络层协议及IP编址

0x00 前言 本节为网络层协议及IP编址内容 IP地址的范围&#xff1a;0.0.0.0-255.255.255.255 IP分为网络位以及主机位。子网划分就是向主机位借位。 网络层协议 IPICMP&#xff08;internet Control message protocol&#xff09;IPX IP协议的作用 为网络层的设备提供逻…

手把手教你新建一个winform项目(史上最全)

文章目录 前言&#xff1a;第1步、打开Microsoft Visual Studio&#xff08;简称vs&#xff09;&#xff0c;本人这里使用的是Visual Studio 2017 专业版&#xff0c;如下图&#xff1a;1.2 Visual Studio Community 2019下载1.3 Visual Studio Community 2019 安装 第2步、点击…

2024年【A特种设备相关管理(锅炉压力容器压力管道)】报名考试及A特种设备相关管理(锅炉压力容器压力管道)模拟考试题库

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 A特种设备相关管理&#xff08;锅炉压力容器压力管道&#xff09;报名考试是安全生产模拟考试一点通总题库中生成的一套A特种设备相关管理&#xff08;锅炉压力容器压力管道&#xff09;模拟考试题库&#xff0c;安全…

nodejs版本管理工具nvm的安装与使用

提示&#xff1a;nodejs版本管理工具nvm的安装与使用 文章目录 前言一、安装二、淘宝镜像配置三、安装所需版本的nodejs四、切换nodejs版本五、参考文档总结 前言 需求&#xff1a;新建一个vue3项目&#xff0c;&#xff0c;提示写法错误 查原因为node版本过低 随着技术更新迭…

Python Asyncio网络编程方法全面解析与实战应用!

更多Python学习内容&#xff1a;ipengtao.com Python的asyncio库是一种强大的异步编程工具&#xff0c;它使得编写高效的网络应用程序变得更加容易。在本文中&#xff0c;我们将深入探讨使用asyncio进行网络编程的方法&#xff0c;包括异步IO、协程、事件循环等方面的内容&…