【C语言初阶】switch语句的基本语法

news2024/9/23 11:20:26

在这里插入图片描述

🎬 鸽芷咕:个人主页

 🔥 个人专栏:《速学C语言》《数据结构篇》

⛺️生活的理想,就是为了理想的生活!

文章目录

  • 前言
      • 💬 switch语句的介绍
      • 💬 switch语句的语法形式
        • 💭 在switch语句中的 break
        • 💭 default子句
      • 💬 switch语句的注意事项
      • 💬错误案例
        • 💭switch( ) 的括号使用 浮点数
        • 💭caes语句后面跟 变量
        • 💭const 修饰的常变量可以嘛?
      • 总结

前言

   🌈hello! 各位宝子们大家好啊,又是新的一天开始了,今天给大家带来的switch语句的全面讲解!
   ⛳️预计博主这俩天会把分支语句和循环语句给彻底更新完,然后向函数出发!
   📚本期文章收录在《C语言初阶篇》,大家有兴趣可以看看呐
  ⛺️ 欢迎铁汁们 ✔️ 点赞 👍 收藏 ⭐留言 📝!

💬 switch语句的介绍

📌前面的一篇:《if语句的详解》
我们已经学会了if语句那么大家来看看这种情况:

📚 那么我们想编写一下这段程序该怎么办:

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

如果用if的多分支来实现呢?

代码演示;

#include <stdio.h>
int main()
{
	int day = 0;
	//输入
	scanf("%d", &day);
	if (1 == day)
		printf("星期1\n");
	else if (2 == day)
		printf("星期2\n");
	else if (3 == day)
		printf("星期3\n");
	else if (4 == day)
		printf("星期4\n");
	else if (5 == day)
		printf("星期5\n");
	else if (6 == day)
		printf("星期6\n");
	else if (7 == day)
		printf("星期天\n");
	else
		printf("输入错误\n");

	return 0;
}
  • 大家发现没,用 if...else if ...else if 的形式太复杂,所以我们C语言就有了switch这个语法形式。

📜 switch语句:

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

📑语法形式:

switch(整型表达式)
{
    case 整形常量表达式:
    语句;
}

💬 switch语句的语法形式

前面我们给大家简单介绍了一下:
switch语句的作用和语法形式那么该怎么使用呢?

  • ⛳️ 我们按照语法写看下对不对呢?
#include <stdio.h>
int main()
{
	int day = 0;
	//输入
	scanf("%d", &day);
	switch (day)
	{
	case 1:
		printf("星期一");
	case 2:
		printf("星期二");
	case 3:
		printf("星期三");
	case 4:
		printf("星期四");
	case 5:
		printf("星期五");
	case 6:
		printf("星期六");
	case 7:
		printf("星期天");
	}
	return 0;
}

📚 演示结果:
在这里插入图片描述
📌诶大家会发现,这和我们预计的根本不一样?

  • 🌱 我们预计的是,按3之后只输出星期三。
  • 🌱 实际是,程序把星期三后面的全部都给输出了。
  • 🌱 这时就会需要我们的 break语句
  • 🌱下面我们来介绍一下它的作用
💭 在switch语句中的 break

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

📚 而break是什么意思呢:

  • 🌲 break 英文意思是结束。
  • 🌲 而我们前面出现的问题就是, case语句 没有结束
  • 🌲 每次从我们选择的那个分支一直继续。
  • 🌲 所以我们需要每次在 case语句 后面加上 break语句 结束就好了。

📜 代码演示:

#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");
	case 7:
		printf("星期天\n");
		break;
	}
	return 0;
}

👑 代码结果:
请添加图片描述
哦豁,这下我们是不是就把问题给解决了。

  • 知识点
  • 🌱 在 switch语句 中,caes是我们分支语句的入口。
  • 🌱 break 是我们分支语句的出口,跳出分支

💡 而有时候我们的需求变了:

📚 该怎么编写呢?

  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;
}

🐣 这样我们就完美解决问题啦!

💭 default子句

⛳️前面我们详细讲解了,switch语句

  • 但是有没有想过一个问题如果我们输入9会怎么样?
#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");
	case 7:
		printf("星期天\n");
		break;
	}
	return 0;
}

请添加图片描述

📖说明:

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

📑 代码演示:

#include <stdio.h>
int main()
{
	int day = 0;
	//输入
	scanf("%d", &day);
	switch (day)
	{
	case 1:
		printf("星期一\n");
		break;
	case 2:
		printf("星期二\n");
		break;
	default:
			printf("输入错误!\n");
	}
	return 0;
}

👑 代码结果:

请添加图片描述


⛳️ default的意思:

  • 🌱 当 switch 表达式的值并不匹配所有 case 标签的值时
  • 🌱 这个 default 子句后面的语句就会执行。
  • 🌱 所以,每个switch语句中只能出现一条default子句。
  • 🌱 但是它可以出现在语句列表的任何位置
  • 🌱 而且语句流会像执行一个case标签一样执行default子句。

📝 编程好习惯

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

💬 switch语句的注意事项

⛳️ switch语句我们都介绍完了,但是这些细节可别忘记哦!

  • 🌱 switch( ) 的括号里面必须是 整形表达式
  • 🌱 caes语句 后面必须跟 整形表达式整形常量表达式
  • 下面我给大家示范一下错误案例。

💬错误案例

💭switch( ) 的括号使用 浮点数

📚 代码演示:

#include <stdio.h>
int main()
{
	float day = 0;
	//输入
	scanf("%d", &day);
	switch (day)
	{
	case 1:
		printf("星期一\n");
		break;
	case 2:
		printf("星期二\n");
		break;
	default:
			printf("输入错误!\n");
	}
	return 0;
}

📑 代码结果:
请添加图片描述
请添加图片描述

💭caes语句后面跟 变量

📚 代码演示:

#include <stdio.h>
int main()
{
	int day = 0;
	int n = 1;//后面的f表示是个浮点数一般建议加上
	//输入
	scanf("%d", &day);
	switch (day)
	{
	case n:
		printf("星期一\n");
		break;
	case 2:
		printf("星期二\n");
		break;
	default:
			printf("输入错误!\n");
	}
	return 0;
}

📑 代码结果:
请添加图片描述

请添加图片描述

💭const 修饰的常变量可以嘛?

📚 代码演示:

#include <stdio.h>
int main()
{
	int day = 0;
	const int n = 1;//后面的f表示是个浮点数一般建议加上
	//输入
	scanf("%d", &day);
	switch (day)
	{
	case n:
		printf("星期一\n");
		break;
	case 2:
		printf("星期二\n");
		break;
	default:
			printf("输入错误!\n");
	}
	return 0;
}

📑 代码结果:
请添加图片描述
🔥 注:在C++标准里面const修饰的常变量,就不在是一个变量了,而是一个常量所以在switch里面是可以跟在case后面的!
📚 代码演示:

#include <stdio.h>
int main()
{
	int day = 0;
	const int n = 1;//后面的f表示是个浮点数一般建议加上
	//输入
	scanf("%d", &day);
	switch (day)
	{
	case n:
		printf("星期一\n");
		break;
	case 2:
		printf("星期二\n");
		break;
	default:
			printf("输入错误!\n");
	}
	return 0;
}

📑 代码结果:

请添加图片描述

🔥 注:.cpp是C++程序的后缀名。

总结

✅ 归纳:
好了以上就是关于分支语句 switch 的用法,和注意事项就全部讲解完毕啦!
  switch的介绍
  switch的语法
  switch中的break
  default语句
  switch的注意事项
☁️ 把本章的内容全部掌握,铁汁们就可以熟练应用switch语句啦!
看到这里了还不给博主扣个:
⛳️ 点赞☀️收藏 ⭐️ 关注

💛 💙 💜 ❤️ 💚💓 💗 💕 💞 💘 💖
拜托拜托这个真的很重要!
你们的点赞就是博主更新最大的动力!
有问题可以评论或者私信呢秒回哦。
在这里插入图片描述

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

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

相关文章

景联文科技提供4D-BEV标注工具:提升自动驾驶感知能力的精准数据支持

4D-BEV标注是一种用于自动驾驶领域的数据标注方法。在3D空间的基础上&#xff0c;加入了时间维度&#xff0c;形成了四个维度。这种方法通过精准地跟踪和记录动态对象&#xff08;如车辆、行人&#xff09;的运动轨迹、姿势变化以及速度等信息&#xff0c;全面理解和分析动态对…

JWT的登录认证与自校验原理分析

目录 一、JWT的概述 1.什么是JWT&#xff1f; 2.JWT的用户认证 3.JWT解决了什么问题&#xff1f; 4.关于JWT中的签名如何理解&#xff1f; 5.JWT的优势 二、JWT的结构 1.令牌的组成&#xff1a; 2.JWT的工具类 3.JWT所需的依赖 4.JWT登录生成Token的原理 三、JWT的自…

Linux中关于glibc包导致的服务器死机或者linux命令无法使用的情况

glibc是gnu发布的libc库&#xff0c;即c运行库。glibc是linux系统中最底层的api&#xff0c;几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外&#xff0c;它本身也提供了许多其它一些必要功能服务的实现。由于 glibc 囊括了几乎所有的 UNIX …

智能巡检系统可以应用在哪些地方?巡检系统有什么优势?

智能巡检系统可以广泛应用于学校、物业、工厂、酒店和民宿、运维商以及能源行业等不同领域的巡检管理之中&#xff0c;为用户提供了巡检任务安排管理、签到打卡、工单上报处理以及数据统计分析等多种功能。 一、巡检系统的应用场景   1、学校&#xff1a;为了确保学校各项设施…

【抓包分析】通过ChatGPT解密还原某软件登录算法实现绕过手机验证码登录

文章目录 &#x1f34b;前言实现效果广告抓包分析一、定位加密文件二、编辑JS启用本地替换 利用Chatgpt进行代码转换最后 &#x1f34b;前言 由于C站版权太多&#xff0c;所有的爬虫相关均为记录&#xff0c;不做深入&#xff01; 今天发现github上没有这个东西&#xff0c;抓…

Centos7 防火墙的关闭

Centos7 防火墙的关闭 Centos7默认使用的是firewall作为防火墙&#xff1b; 查看防火墙状态&#xff1a;firewall-cmd --state 停止防火墙&#xff1a;systemctl stop firewalld.service; 禁止防火墙开机启动&#xff1a;systemctl disable firewalld.service; 放行端口…

项目总结-新增商品-Pagehelper插件分页查询

&#xff08;1&#xff09;新增商品 工具类&#xff1a; /** * Title: FileUtils.java * Package com.qfedu.common.utils * Description: TODO(用一句话描述该文件做什么) * author Feri * date 2018年5月29日 * version V1.0 */ package com.gdsdxy.common.u…

webpack 解决:TypeError: merge is not a function 的问题

1、问题描述&#xff1a; 其一、存在的问题为&#xff1a; TypeError: merge is not a function 中文为&#xff1a; 类型错误&#xff1a;merge 不是函数 其二、问题描述为&#xff1a; 想执行 npm run dev 命令&#xff0c;运行起项目时&#xff0c;控制台报错 TypeErro…

066:mapboxGL的marker的drag,dragstart,dragend三种触发事件示例

第066个 点击查看专栏目录 本示例是演示如何在vue+mapbox中处理marker的三种触发事件drag,dragstart,dragend。 marker通过on(‘XXX’, callback),的方式进行触发处理。 直接复制下面的 vue+mapbox源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(…

医学YOLOv8 | 脑肿瘤检测 Accuracy 99%

在医疗保健领域&#xff0c;准确和高效地识别脑肿瘤是一个重大挑战。本文中&#xff0c;我们将探讨一种使用 YOLOv8&#xff0c;一种先进的目标检测模型&#xff0c;将脑肿瘤进行分类的新方法&#xff0c;其准确率达到了 99%。通过将深度学习与医学图像相结合&#xff0c;我们希…

Python算法例1 完美平方

例1 完美平方 1. 问题描述 给定一个正整数n&#xff0c;找到若干个完全平方数&#xff08;例如&#xff1a;1&#xff0c;4&#xff0c;9&#xff0c;…&#xff09;&#xff0c;使得它们的和等于n&#xff0c;完全平方数的个数最少。 2.问题示例 给出n8&#xff0c;返回2&…

【51单片机】:智能施工电梯系统

项目效果&#xff1a; 基于51单片机的智能施工电梯系统 摘 要 智能施工电梯系统目前广泛应用于人们建筑工程中&#xff0c;为人们施工时上下搬运提供了极大的便利。智能施工电梯系统包括密码开启、超重提示&#xff0c;电梯运作及相关信息显示等等功能&#xff0c;施工电梯为我…

数组中出现次数超过一半的数字整型数组有一个数字出现的次数超过总数的一半,请找出该数字

例如长度为 9 的数组{1,2,3,2,4,2,5,2,2}。 由于 2 出现的次数是 5 次,超过一半,所以结果为2。 算法一&#xff1a; 先排序,然后中间值就是要找的数字 图解&#xff1a; int Cmp_int(const void* vp1, const void* vp2) //定义排序规则 {return * (int*)vp1 - *(int*)vp2; } …

ts | js | 爬虫小公举分享

Curl转Code 快速将curl转为各种语言的代码; 便于提取请求头之类, 或者微改直接使用 https://curlconverter.com/node-axios/ (有点慢, 但是很全)https://www.lddgo.net/convert/curl-to-code (没有axios, 我喜欢用axios) 使用… 抓取地址, 使用浏览器或者其他抓包工具都可, 这…

IP地址在互联网中有哪些作用?

在互联网中&#xff0c;IP地址是一种用于唯一标识网络中设备的地址。IP地址不会与其他网络地址&#xff08;如MAC地址、URL、域名等&#xff09;发生冲突&#xff0c;因为它们各自在不同的网络层次上起作用&#xff0c;用于不同的目的。 IP地址&#xff08;Internet Protocol A…

vue3中常用的新组件

一、Fragment vue2中&#xff0c;组件必须有一个根标签 vue3中&#xff0c;组件可以没有根标签&#xff0c;内部会将多个标签包含在一个Fragment虚拟元素中。 优点&#xff1a;减少标签层级。 二、Teleport&#xff08;传送门&#xff09; 作用&#xff1a;将组件的 html …

企事业单位/公司电脑文件透明加密保护 | 防泄密软件\系统!

推荐——「天锐绿盾电脑文件防泄密系统」 一款全面的企业/公司数据透明加密防泄密系统&#xff0c;旨在从源头上保障数据的安全和使用安全。 PC访问地址&#xff1a; https://isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-6757c5dfedee 它具有以下特点&#xff1a…

小程序 swiper滑动 层叠滑动效果

整个红色区域为可滑动区域&#xff0c;数字1区域为展示区域&#xff0c;数字2为下一个展示模块 <scroll-view class"h_scroll_horizontal" enhanced"ture" bind:touchend"touchEnd" bind:touchstart"touchStart"><view clas…

vs c++ 代码 c2362错误

c 开发调试bug 报错 c2362错误 goto语句的使用错误。 我的使用是这样的&#xff1a; goto __end; int nLen value; gto _end; int pBuffer value2;end:我的 nlen 和 pBuffer 直接初始化了&#xff0c;而 goto 与标签之间有任何初始化的语句都不可以&#xff0c;除非用括号把…

CTF-Crypto-第一天-常见编码and古典密码(入门学习笔记)(详)

文章目录 前言0x1 常见编码0x01 编码0x02 ASCII码0x03 Base系列编码0x04其他编码- URL编码-莫尔斯电码&#xff08;Morse Code&#xff09;-HTML实体编码-其他中的其他... 0x05编码与加密的关系 古典密码凯撒密码简单替换密码维吉尼亚密码栅栏密码其他古典密码替换加密移位加密…