当前位置: 首页 > news >正文

C语言分支和循环(2)

 我的相关博客:

C语言的分支与循环(1)

    

 1.switch语句

除了 if 语句外,C语⾔还提供了 switch 语句来实现分⽀结构。 switch 语句是⼀种特殊形式的 的 if...else 结构,⽤于判断条件有多个结果的情况。它把多重 else   if 改成更易⽤、可读性更好的形式

switch (expression)
{
case value1:statement1;break;
case value2:statement2;break;
default: statement3;break;
}

上面代码中,value1,value2对应的是expression的值,如果expression的值符合 value1,则进入statement1,执行其中的语句,紧接着遇到break,退出这个switch

如果expression的值符合value2,则进入statement2,执行其中的语句,紧接着遇到break,退出这个switch

而上面的default,指的是value1、和value2以外的所有情况,都会进入statement3,执行其中的语句

注意:

switch 后的 expression 必须是整型表达式
case   后的值必须是整形常量表达式 

2.if语句和switch语句的对比 

 实例::输⼊任意⼀个整数值,计算除2之后的余数

使用if语句时:

int n = 0;
scanf("%d", &n);
if (n % 2 == 0)printf("整除,余数为0\n");
elseprintf("余数是1\n");

而使用switch语句改写,则: 

int n = 0;
scanf("%d", &n);
switch (n % 2)
{
case 0:printf("整除,余数为0\n");break;
case 1:printf("余数是1\n");break;
}

 需要注意的是:

case和后边的数字之间必须有空格

每⼀个 case 语句中的代码执⾏完成后,需要加上break ,才能跳出这个switch语句

3.switch中的break

switch中的break非常重要,是正确跳出switch的关键

如果没有break,则执行相应的一条语句后,对之后的每一个case中的语句都会执行 

如下面这个例子: 

printf("输入1~7的数字,打印星期几\n");
int n = 0;
scanf("%d", &n);
switch (n)
{
case 1:printf("星期一\n");
case 2:printf("星期二\n");
case 3:printf("星期三\n");
case 4:printf("星期四\n");
case 5:printf("星期五\n");
case 6:printf("星期六\n");
case 7:printf("星期天\n");
default:printf("输入错误\n");
}

输入:2 

输出 :

​ 

如果要实现正确的功能,需要给加上 break,正确的代码为:

printf("输入1~7的数字,打印星期几\n");
int n = 0;
scanf("%d", &n);
switch (n)
{
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("输入错误\n");break;
}

 当然,我们也可以依此实现一些功能,如下面这个代码:

输入1-5,输出:工作日

输入6-7,输出:休息日 

int n = 0;
scanf("%d", &n);
switch (n)
{
case 1:
case 2:
case 3:
case 4:
case 5:printf("工作日\n");break;
case 6:
case 7:printf("休息日\n");break;
default:printf("输入错误\n");
}

 4.switch语句中的default

 在switch语句中,default归纳为 除了case之外的所有情况

满足这个条件就会进入default中,default可以理解为:非目标值,或者无用值

关于default与case不需要考虑顺序,可以case在前,也可以default在前,不影响代码效果的实现,一般习惯将default放在最后

5.循环 

 C语言提供了3种循环,分别是:for循环、while循环、do-while循环

5.1for循环 

for(语句1;语句2;语句3) 

{

        语句4;

}

for循环的小括号里面有3条语句 ,部分语句可以为空,但是必须有两个分号

一次循环语句的执行顺序为:

语句1——>语句2——>语句4——>语句3 

如果语句循环多次,执行的顺序为: 

 语句1——>语句2——>语句4——>语句3——>语句1——>语句2——>语句4......

(语句1 ,2,4,3...1,2,4,3的循环)

这个执行顺序是固定的,根据这个逻辑,可以完成大量的循环运算

 实例:计算1到10相加的和

int sum = 0;
for (int i = 1; i <= 10; i++)
{sum = sum + i;
}
printf("相加的和为%d", sum);

运行结果:

相加的和为55 

上面循环停止的关键在于 i <= 10 ,所以语句2一般是循环停止的条件

 实例:打印1到10

for (int i = 1; i <= 10; i++)
{printf("%d ", i);
}

 运行结果:

1 2 3 4 5 6 7 8 9 10

5.2while循环 

while 循环的语法结构 和 if 非常相似 

if(表达式)

{

        语句;

while(表达式)

{

        语句;

while循环的执行顺序为:表达式——>语句——>表达式——>语句——>...... 

⾸先上来就是执⾏判断表达式,若表达式的值为0,循环直接结束

表达式的值不为0,则执⾏循环语句,语句执⾏完后再继续判断,是否进⾏下⼀次循环语句

实例:计算1到10相加的和(可与上面的for循环对比)

int sum = 0;
int i = 1;
while (i <= 10)
{sum = sum + i;i++;
}
printf("和为%d\n", sum);

运行结果:

和为55 

 while循环和for循环对比:

while与for循环都有:初始化、判断,和调整这三个部分,但是for循环⾮常集中,便于代码的维护 

5.3do while循环 

do while语句的使用较少,语法是:

do

{

        语句;

}while(表达式) 

do while循环和while循环非常相似,只是先执行了一次语句再判断表达式是否成立

因此,即使表达式不成立,也会先执行一次语句(与C语言的代码,从上往下执行相对应)

如: 

int n = 0;
do
{printf("执行\n");
} while (n);

运行结果:

执行 

6.break和continue

在循环执⾏的过程中,如果某些状况发⽣的时候,需要提前终⽌循环,这是⾮常常⻅的现象

C语⾔中提供了 break 和 continue 两个关键字,就是应用到循环来终止的

6.1while循环中的break和continue 

先看一个实例:

1.break

#include <stdio.h>
int main()
{int i = 1;while (i <= 10){if (i == 5)break;printf("%d ", i);i = i + 1;}return 0;
}

运行结果:1 2 3 4 

2.continue 

#include <stdio.h>
int main()
{int i = 1;while (i <= 10){if (i == 5)continue;printf("%d ", i);i = i + 1;}return 0;
}

运行结果:1 2 3 4 (死循环)

上面代码中的if没有使用花括号{ },只能控制一条语句,即break,或者continue,而之后的代码不受if的控制 

通过对比,不难看出, while 中的 break 跳过相应的while整个循环

而 while 中的 continue 只是跳过本次循环,也跳过了i = i + 1这条语句,因此,i一直停留在4,陷入死循环

 6.2for循环中的break和continue

1.break

#include<stdio.h>
int main()
{for (int i = 1; i <= 10; i++){if (i == 5)break;printf("%d ", i);}return 0;
}

 这里break的含义是跳过for循环,因此,运行结果与while中的break相同

运行结果:1 2 3 4 

2.continue 

#include<stdio.h>
int main()
{for (int i = 1; i <= 10; i++){if (i == 5)continue;printf("%d ", i);}return 0;
}

 运行结果:1 2 3 4 6 7 8 9 10

这里的continue和while中的continue相同,跳过本次循环,但是由于i++还是会执行

所以 i 可以继续自增,往后执行

6.3do while中的break和continue 

do while中的 break 和 continue 与 while 中的几乎一模一样

相关文章:

C语言分支和循环(2)

我的相关博客&#xff1a; C语言的分支与循环&#xff08;1&#xff09; 1.switch语句 除了 if 语句外&#xff0c;C语⾔还提供了 switch 语句来实现分⽀结构。 switch 语句是⼀种特殊形式的 的 if...else 结构&#xff0c;⽤于判断条件有多个结果的情况。它把多重 else if…...

14.FreeRTOS 流媒体缓存 Stream Buffer

FreeRTOS 中的 Stream Buffer&#xff08;流媒体缓存&#xff09; 在实时操作系统&#xff08;RTOS&#xff09;中&#xff0c;处理流媒体数据是一项非常关键的任务。FreeRTOS 提供了一种名为 Stream Buffer&#xff08;流媒体缓存&#xff09;的机制&#xff0c;用于高效地管…...

利用ffmpeg把视频分解成图片(每秒x张图)再图片合成视频

1. 视频分解成图片 ffmpeg -i rawVideo.mp4 -r 5 -f image2 img/%04d.png-i rawVideo.mp4 输入文件 -r 5 每秒5帧(1秒5张图) 可不写&#xff0c;默认每秒24帧 -f image2 表示输出的格式图像 可不写&#xff0c;默认图像 img/ 图片放在img文件夹下 %04d.png 图片的命名…...

冯喜运:6.7今日外汇黄金原油走势分析及日内操作策略

【黄金消息面分析】&#xff1a;美国初请失业金人数超预期&#xff0c;市场对美联储9月降息预期升温&#xff0c;全球降息潮起&#xff0c;黄金市场受支撑。北京时间本周四&#xff0c;美国劳工部公布的数据显示&#xff0c;截至6月1日当周初请失业金人数增加至22.9万人&#x…...

[网络基础]——计算机网络(OSI)参考模型 详解

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f310;网络通信基础TCP/IP专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年6月2日21点59分 &#x1f004;️文章质量&#xff1a;93分 目录 &#x1f39f;️OSI基本概念 &#x1f384;分层架构…...

使用 Java 获取图片的 MD5 编码

在许多应用场景中&#xff0c;我们需要验证文件的完整性或唯一性&#xff0c;常用的方法是计算文件的哈希值。MD5&#xff08;Message Digest Algorithm 5&#xff09;是一种广泛使用的哈希函数&#xff0c;可以生成一个128位的哈希值&#xff08;32位的十六进制数字&#xff0…...

GO——泛型

泛型 对于强类型语言&#xff0c;在编写代码时不事先指定类型&#xff0c;在实例化的时候作为参数指明类型 参考&#xff1a;https://www.liwenzhou.com/posts/Go/generics/ 什么时候使用泛型&#xff1f; 方法中的代码实现与类型T无关参考&#xff1a;https://juejin.cn/p…...

TSP(Python):Qlearning求解旅行商问题TSP(提供Python代码)

一、Qlearning简介 Q-learning是一种强化学习算法&#xff0c;用于解决基于奖励的决策问题。它是一种无模型的学习方法&#xff0c;通过与环境的交互来学习最优策略。Q-learning的核心思想是通过学习一个Q值函数来指导决策&#xff0c;该函数表示在给定状态下采取某个动作所获…...

【精通NIO】NIO介绍

一、什么是NIO NIO&#xff0c;全称为New Input/Output&#xff0c;是Java平台中用于替代传统I/O&#xff08;Blocking I/O&#xff09;模型的一个功能强大的I/O API。NIO在Java 1.4版本中被引入&#xff0c;其设计目标是提供一种非阻塞的、低延迟的I/O操作方式&#xff0c;以…...

ssh远程管理

一、Openssh概述 Openssh是一种安全通道协议&#xff0c;用来实现字符界面的远程登录、远程复制、远程文本传输。 Openssh对通信双方的数据进行了加密。有两种方式&#xff1a; 用户名和密码登录&#xff1a;比较常用密钥对认证方式&#xff1a;可以实现免密登录 ssh端口&a…...

【ai】pycharm远程ssh开发

方式1: gateway的方式是远程放一个pycharm 专业版,经常下载失败 方式2: 类似vs,源码本地,同步到远程进行运行。 参考大神的分享: Pycharm远程连接服务器(2023-11-9) Pycharm远程连接服务器(windows下远程修改服务器代码)[通俗易懂] cpolar 建议同时内网穿透 选 远程开…...

leetcode 9 回文数

给你一个整数 x &#xff0c;如果 x 是一个回文整数&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 回文数是指正序&#xff08;从左向右&#xff09;和倒序&#xff08;从右向左&#xff09;读都是一样的整数。 例如&#xff0c;121 是回文&#xff0c;而…...

学习Python的基础知识

目录 摘要 Python 的主要特点 基本语法 1. 变量和数据类型&#xff1a; 2. 条件语句&#xff1a; 3. 循环&#xff1a; 4. 函数&#xff1a; 5. 类和对象&#xff1a; 6. 列表和字典&#xff1a; 7. 文件I/O&#xff1a; Python 的学习路线 如何高效使用 Python 的…...

第五届上海市青少年算法竞赛网络同步赛(小学组)

第五届上海市青少年算法竞赛网络同步赛(小学组)T1. 符号译码_网络同步赛 内存限制: 256 Mb 时间限制: 1000 ms 题目描述 小爱为标点符号设计了一套编码系统,编码规则如下: [ 的编码为 010 ] 的编码为 101 < 的编码为 00 > 编码为 11 + 的编码为 011 - 编码为 100 根…...

【区分vue2和vue3下的element UI Cascader 级联选择器组件,分别详细介绍属性,事件,方法如何使用,并举例】

在Vue 2的Element UI和Vue 3的Element Plus中&#xff0c;el-cascader&#xff08;级联选择器&#xff09;组件用于从嵌套的数据中进行选择。以下是对这两个版本下el-cascader组件的属性、事件和方法的详细介绍&#xff0c;并附带示例。 Vue 2的Element UI el-cascader 属性…...

pottery,一个超酷的 Python 库!

更多Python学习内容&#xff1a;ipengtao.com 大家好&#xff0c;今天为大家分享一个超酷的 Python 库 - pottery。 Github地址&#xff1a;https://github.com/brainix/pottery 在分布式系统和高并发环境中&#xff0c;Redis 作为一种高性能的键值存储数据库&#xff0c;被广泛…...

【Android面试八股文】在Java中重载和重写是什么意思,区别是什么?

文章目录 在Java中重载和重写是什么意思,区别是什么?这道题想考察什么 ?考察的知识点考生应该如何回答重载(Overloading)重写(Overriding)重载和重写的区别在Java中重载和重写是什么意思,区别是什么? 这道题想考察什么 ? Java基础 考察的知识点 面向对象多态的基…...

【第二篇】SpringSecurity源码详解

一、SpringSecurity中的核心组件 在SpringSecurity中的jar分为4个,作用分别为 jar作用spring-security-coreSpringSecurity的核心jar包,认证和授权的核心代码都在这里面spring-security-config如果使用Spring Security XML名称空间进行配置或Spring Security的Java configura…...

基于Python+FFMPEG环境下载B站歌曲

题主环境 WSL on Windows10 命令如下 # python3.9 pip install --pre yutto yutto --batch https://www.bilibili.com/video/BV168411o7Bh --audio-only ls | grep aac | xargs -I {} ffmpeg -i {} -acodec libmp3lame {}.mp3WinAmp...

静态 VxLAN 浅析及配置示例(头端复制)

一、概念&#xff1a; VxLAN&#xff1a;Visual eXtensible Local Area Network 虚拟扩展本地局域网&#xff0c;一种隧道技术&#xff0c;能在三层网络的基础上建立二层以太网网络隧道&#xff0c;从而实现跨地域的二层互连&#xff0c;VxLAN端口&#xff1a;4789EVPN&#x…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh&#xff1f; debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码&#xff1a; https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息&#xff0c;但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN&#xff0c;但是…...

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

Xen Server服务器释放磁盘空间

disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)

引言 在人工智能飞速发展的今天&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;已成为技术领域的焦点。从智能写作到代码生成&#xff0c;LLM 的应用场景不断扩展&#xff0c;深刻改变了我们的工作和生活方式。然而&#xff0c;理解这些模型的内部…...

【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅

目录 前言 操作系统与驱动程序 是什么&#xff0c;为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中&#xff0c;我们在使用电子设备时&#xff0c;我们所输入执行的每一条指令最终大多都会作用到硬件上&#xff0c;比如下载一款软件最终会下载到硬盘上&am…...