switch语句和while循环

switch语句和while循环

  • switch语句
    • break的用法
    • default的用法
    • switch语句中的case和default的顺序问题
  • while语句
    • while语句的执行流程
    • while语句的具体例子

switch语句

switch 语句是⼀种特殊形式的 if…else 结构,用于判断条件有多个结果的情况。它把多重
的 else if 改成更易用、可读性更好的形式。
我们可以这样理解:if语句适用于判断条件较少的情况,因为if语句如果判断条件情况太多,我们就可能会用到if语句嵌套,或者用的else if太多。
具体的情况大概会这样:

  if(条件1if(条件2{if(条件3}``
//或者
if(条件1{××××××;}else if(条件2{××××××;}else if(条件3{××××××;}else if(条件4{××××××;}......
else(条件){××××××;}

显然这样就太复杂了,因此为了简便,我们可以用switch语句。
而switch语句的具体用法如下:

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

上面代码中,根据表达式为不同的值,执行相应的 case 分支。如果找不到对应的值,
就执行 default 分支。
特别注意:
switch 后的表达式必须是整型表达式
case 后的值,必须是整形常量表达式
我们举个例子:
输入任意⼀个整数值,计算除3之后的余数
使用switch语句

#include <stdio.h>
int main()
{int n = 0;scanf("%d", &n);switch (n % 3){case 0:printf("整除,余数为0\n");break;case 1:printf("余数是1\n");break;case 2:printf("余数是2\n");break;}return 0;
}

上述的代码中,我们要注意的点有:

  1. case 和后边的数字之间必须有空格
  2. 每⼀个 case 语句中的代码执行完成后,需要加上 break ,才能跳出这个switch语句。

break的用法

前面的代码中我们应该大致了解到了switch语句的用法,那如果我们去掉case语句中的break,会出现什么情况呢?

#include <stdio.h>
int main()
{int n = 0;scanf("%d", &n);switch (n % 3){case 0:printf("整除,余数为0\n");case 1:printf("余数是1\n");case 2:printf("余数是2\n");}return 0;
}

当我们输入7时,运行结果如图:
在这里插入图片描述
我们发现,7除以3本来余数是1,但是我们发现程序运行的结果多了⼀行“余数是2”的打印。
这是为什么呢?
原因是 switch 语句也是分支效果的,只有在 switch 语句中使用 break 才能在跳出 switch 语
句,如果某⼀个 case 语句的后边没有 break 语句,代码会继续玩下执行,有可能执行其他 case语句中的代码,直到遇到 break 语句或者 switch 语句结束。就比如上面的代码就执行了 case2 中的语句。
所以在 switch 语句中 break 语句是非常重要的,能实现真正的分支效果。
当然, break 也不是每个 case 语句都得有,这就得根据实际情况来看了。
下面有几个例子:

练习:
输⼊⼀个1~7的数字,打印对应的星期⼏
例如:
输⼊:1 输出:星期⼀
输⼊:2 输出:星期⼆
输⼊:3 输出:星期三
输⼊:4 输出:星期四
输⼊:5 输出:星期五
输⼊:6 输出:星期六
输⼊:7 输出:星期天
#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;}return 0;
}
如果需求发⽣变化,变为:
1. 输⼊1-5,输出的是“⼯作⽇”;
2. 输⼊6-7,输出“休息⽇
#include <stdio.h>
int main()
{int day = 0;scanf("%d", &day);switch (day){case 1case 2:case 3:case 4:case 5:printf("⼯作⽇\n");break;case 6:case 7:printf("休息⽇\n");break;}return 0;
}

上面的例子中,我们发现应该根据实际的情况,来在代码中觉得是否使用 break ,或者在哪里使用break ,才能正确完成实际的需求。

default的用法

在使用 switch 语句的时候,我们经常可能遇到⼀种情况,比如 switch 后的表达式中的值无法匹配代码中的 case 语句的时候,这时候要不就不做处理,要不就得在 switch 语句中加入default 子句。

switch (表达式) {case 整形常量1: 语句case 整形常量2: 语句default:语句
}

switch 后边的 表达式 的结果不是整形常量1 ,也不是整形常量2 的时候,就会执行default 语句。
也就是说default语句是处case语句以外的结果
就比如:前面做的打印星期的练习,如果 day 的输入不是1~7的值,如果我们要提示:输入错误,则可以这样完成代码:

#include <stdio.h>
int main()
{int day = 0;scanf("%d", &day);switch (day){case 1:case 2:case 3:case 4:case 5:printf("⼯作⽇\n");break;case 6:case 7:printf("休息⽇\n");break;default:printf("输⼊错误\n");break;}return 0;
}

switch语句中的case和default的顺序问题

在 switch 语句中 case 子句和 default 子句有要求顺序吗? default 只能放在最后吗?
其实,在 switch 语句中 case 语句和 default 语句是没有顺序要求的,只要你的顺序是满足实际需求的就可以。不过我们通常是把 default 子句放在最后处理的
我们也可以理解为:switch表达式的结果为5时就是从case 5开始,因此无论我们把case5与其他case语句以及default语句交换顺序时,都是从case5开始。

while语句

C语言提供了3种循环语句, while 就是其中⼀种,接下来就介绍⼀下 while 语句。
while 语句的语法结构和 if 语句非常相似。
我们将if语句以及while语句进行对比:

if(表达式)语句;while(表达式)语句;//如果循环体想包含更多的语句,可以加上⼤括号

具体代码如下:

//代码1
#include <stdio.h>
int main()
{if (1)printf("快关注点赞\n"); //if后边条件满⾜,打印⼀次快关注点赞return 0;
}
//代码2
#include <stdio.h>
int main()
{while (1)printf("快关注点赞\n"); //while后边的条件满⾜,死循环的打印快关注点赞return 0;
}

while语句的执行流程

在这里插入图片描述
⾸先上来就是执行判断表达式,表达式的值为0,循环直接结束;表达式的值不为0,则执行循环语
句,语句执行完后再继续判断,是否进行下⼀次判断

while语句的具体例子

//例子1
在屏幕上打印1~10的值
#include <stdio.h>
int main()
{int i = 1;while (i <= 10){printf("%d ", i);i = i + 1;}return 0;
}
//例子2
输⼊⼀个正的整数,逆序打印这个整数的每⼀位
例如:
输⼊:1234,输出:4 3 2 1
输⼊:521,输出:1 2 5
#include <stdio.h>
int main()
{int n = 0;scanf("%d", &n);while (n){printf("%d ", n % 10);n /= 10;}return 0;
}

1.要想得到n的最低位,可以使⽤n%10的运算,得到的余数就是最低位,如:1234%10得到4
2. 要想去掉n的最低位,找出倒数第⼆位,则使⽤ n=n/10 操作就可以去掉最低位的,如:
n=1234/10得到123,123相较于1234就去掉了最低位,123%10就得到倒数第二位3。
3. 循环1和2两个步骤,在n变成0之前,就能到所有的位

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

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

相关文章

Markdown语法与Latex公式汇总

1 基本语法 1.1 标题 语法如下&#xff1a; 效果如下&#xff1a; 1.2 字体样式 语法效果普通正文字体普通正文字体*倾斜字体*倾斜字体**加粗字体**加粗字体***倾斜加粗字体***倾斜字体~~划线字体~~倾斜字体 1.3 分割线 语法如下&#xff1a; 效果如下&#xff1a; …

鸿蒙项目签名配置

配置需要以下四个文件&#xff1a; 1. p12文件 2. csr文件 3. cer文件 打开AGC平台 点击申请调试证书 4. p7b文件 最后在项目中进行配置 配置项目的module.json5中

NASAVIIRS数据下载

目录 Visible Infrared Imaging Radiometer Suite&#xff08;VIIRS&#xff09;NOAA 数据下载用户注册 数据查找1.选择产品类型2. 数据索引3. 提交订单 Visible Infrared Imaging Radiometer Suite&#xff08;VIIRS&#xff09; 来自 Suomi NPP 的可见光红外成像辐射计套件 …

学习如何更好向GPT提问

如今以chatgpt为首的各种语言大模型应运而出&#xff0c;已经逐渐应用到平时的工作和学习中&#xff0c;但就算是使用同一种大模型提问同一个问题也有不同的答案&#xff0c;如何更快更好的获取优质答案是应该关心和学习的重点。 本文在《成为提问工程师》书的基础上加以整理总…

【Python系列】 Python 中的枚举使用

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

求解组合优化问题的具有递归特征的无监督图神经网络

文章目录 ABSTRACT1 Introduction2 Related Work3 QRF-GNN方法4 数值实验4.1 MAX-CUT4.2 COLORING5 conclusionABSTRACT 介绍了一种名为QRF-GNN的新型算法,有效解决具有二次无约束二进制优化(QUBO)表述的组合问题。依赖无监督学习,从最小化的QUBO放松导出的损失函数。该架构…

【软件工程】软件生命周期(生存周期)

考点3 软件生命周期&#xff08;生存周期&#xff09; 一、定义 软件产品或软件系统从设计、投入使用到被淘汰的全过程。 二、3周期 题目 一、判断题 二、选择题

mac电脑里面的 磁盘分区,容器,宗卷,宗卷组的理解和使用

在mac电脑里面我们一般都是使用宗卷&#xff0c;他和我们常见的pc机器硬盘的分区是有区别的。 对于物理硬盘来说 不管是分区还是宗卷&#xff0c;他们都是逻辑上面的概念。 分区 mac电脑里面的分区 和 pc电脑中的分区差不多&#xff0c; 他们都是针对的物理硬盘&#xff0c;…

Linux系列之基础篇

文章目录 开篇明义基础篇实际操作篇高级篇Linux之JavaEELinux在哪些地方使用Linux应用领域 Linux入门基本介绍Linux和Unix关系 VM和Linux的安装基本说明安装VM17.5安装Centos7.6网络连接解释 虚拟机克隆虚拟机快照虚拟机迁移和删除安装vmtools设置共享文件夹 Linux目录结构 开篇…

144. 腾讯云Redis数据库

文章目录 一、Redis 的主要功能特性二、Redis 的典型应用场景三、Redis 的演进过程四、Redis 的架构设计五、Redis 的数据类型及操作命令六、腾讯云数据库 Redis七、总结 Redis 是一种由 C 语言开发的 NoSQL 数据库&#xff0c;以其高性能的键值对存储和多种应用场景而闻名。本…

计算机网络概述(协议层次与服务模型)

目录 1.协议层次 2.服务模型 1.协议层次 层次化方式实现复杂网络功能&#xff1a; 将网络复杂的功能分成明确的层次&#xff0c;每一层实现了其中一个或一组功能&#xff0c;功能中有其上层可以使用的功能&#xff1a;服务本层协议实体相互交互执行本层的协议动作&#xff0…

EXCEL文件如何批量加密,有什么方法

EXCEL文件的加密&#xff0c;通常在EXCEL软件上进行设置&#xff0c;它有打开密码与写保护密码&#xff0c;如果有多个文件的话&#xff0c;想通过一键设置的方法进行密码设置&#xff0c;那么它通常需要用到第三方软件进行批处理&#xff0c;因为EXCEL软件只能对当前打开的文件…

排序算法刷题笔记【牛客网】

排序算法刷题笔记【牛客网】 排序算法刷题记录&#xff0c;来自牛客网&#xff0c;主要是有些题目会去搜一下相关知识&#xff0c;这里就用来做笔记&#xff0c;类似错题本了。 会持续更新…… 8.28&#xff0c;一编&#xff0c;3题 其实就是把45前面的排好了&#xff0c;然后…

watchdog: BUG: soft lockup

故障现象&#xff1a; 故障原因&#xff1a; 不知道。 解决办法&#xff1a; 由12个改成2个&#xff1b;然后重新开机虚拟机&#xff0c; 临时解决了。

Kaggle克隆github项目+文件操作+Kaggle常见操作问题解决方案——一文搞定,以openpose姿态估计项目为例

文章目录 前言一、Kaggle克隆仓库1、克隆项目2、查看目录 二、安装依赖三、文件的上传、复制、转移操作1.上传.pth文件到input目录2、将权重文件从input目录转移到工作目录 三、修改工作目录里的文件内容1、修改demo_camera.py内容 四、运行&#xff01; 前言 想跑一些深度学习…

使用Blender云渲染的好处是什么?

​Blender是一款功能强大的开源3D创作软件&#xff0c;用于包括建模、动画、仿真、渲染、合成和视频编辑在内的多种应用。然而&#xff0c;Blender的渲染过程有时可能非常耗费资源&#xff0c;特别是处理复杂的3D场景时。作为CG行业不可或缺的一部分&#xff0c;云渲染通过使用…

Excel下拉框多选

记录一下学会一个新的知识&#xff01; 两种方式 第一种方式&#xff1a;先在表格里写好需要的值&#xff0c;再在数据关联里面直接引入。 1.新建excel表格&#xff0c;输入下拉框需要的值。 2.点击——数据>有效性 3.选择——序列 4.数据来源——框住刚才写好的数据——…

实现一个命令行解释器

1、初始化命令行解释器 在计算机系统中&#xff0c;操作系统内核是一个很大得到软件模块&#xff0c;用户不能直接去使用。因此计算机提供一个外壳shell&#xff0c;用户能够通过这个外壳执行各种应用程序&#xff0c;从而完成操作系统各种功能。 shell&#xff1a;命令解释器…

51单片机——LED点阵屏

1、点阵屏简介 LED点阵屏由若干个独立的LED组成&#xff0c;LED以矩阵的形式排列&#xff0c;以灯珠亮灭来显示文字、图片、视频等。LED点阵屏广泛应用于各种公共场合&#xff0c;如汽车报站器、广告屏以及公告牌等 LED点阵屏分类 按颜色&#xff1a;单色、双色、全彩 …

【202408最新】Anaconda+VSCode+CUDA+Pytorch安装配置保姆级教程

最近新换了电脑&#xff0c;又开始从头配置代码环境&#xff0c;到处看教程真的一个头两个大&#xff0c;干脆自己整理了一下&#xff0c;方便以后一站式重装。也提供给大家参考。 1.Anaconda下载安装 Anaconda和Python是替代品&#xff08;也不是&#xff09;&#xff0c;下…