C语言 循环控制流程的跳转语句

news2024/11/24 1:38:00

本文 我们来说 控制流程的跳转语句

C语言 提供三种 控制流程的跳转语句

1. break 语句

我们之前讲 switch 时 大家已经看到过这个 break 了 作用是跳出当前 switch
在循环中 它的作用也差不多

这里 我们举个生活中的例子 例如 我们在操场上跑步
计划跑十圈 但是 还没跑完 我们感到了身体不适,就需要提前退场 不跑了 但其实并没有跑完
代码逻辑 举例如下图
在这里插入图片描述
我们开启一个计数循环 跑十圈 但 如果判断到身体不适 我们就需要 break 终止循环
break 的作用就是强制跳出当前循环

然后 又如 小红 想让妈妈买糖
如果不买 小红就哭到妈妈买 循环逻辑就是哭
但是 妈妈一直不买 条件没达到 但是小红哭累了 提前break结束循环
如下图
在这里插入图片描述
这里 我们做个代码小案例

#define _CRT_SECURE_NO_WARNINGS//禁用安全函数警告
#pragma warning(disable:6031)//禁用 6031 的安全警告
#include <stdio.h>

int main() {
    for (int i = 1;i <= 10;i = i + 1) {
        printf("i的值为 %d\n", i);
        if (i == 5) {
            break;
        }
    }
}

按逻辑走 循环应该执行 10次
但是 我们判断 到第五次 就会 break
运行代码
在这里插入图片描述
到 第五次 就被迫停止了

2.continue 语句

continue 语句和break语句一样,也可用于对循环进行内部控制,起到条件跳转的作用,但二者对流程的控制效果是不同的。

例如 我们这样写

#define _CRT_SECURE_NO_WARNINGS//禁用安全函数警告
#pragma warning(disable:6031)//禁用 6031 的安全警告
#include <stdio.h>

int main() {
    for (int i = 1;i <= 10;i = i + 1) {
        if (i == 5) {
            continue;
        }
        printf("i的值为 %d\n", i);
    }
}

逻辑 和我们上一个案例基本是一致的

然后 我们运行代码
在这里插入图片描述
可以看到 输出了 1 到 10 但少了 5 因为 5那次循环执行到 continue 就直接被跳出去 执行下一次循环了
简单说 遇到 break 整个循环就停了 而 continue只是跳出了这一次 循环 执行下一次去了

3. goto 语句

这是用于嵌套语句跳出的逻辑

#define _CRT_SECURE_NO_WARNINGS//禁用安全函数警告
#pragma warning(disable:6031)//禁用 6031 的安全警告
#include <stdio.h>

int main() {
    for (int i = 1;i <= 10;i = i + 1) {
        for (int i = 1;i <= 10;i = i + 1) {
            if (i == 5) {
                break;
            }
            printf("i的值为 %d\n", i);
        }
        printf("外层执行\n");
    }
}

在这里插入图片描述
break 只能实现 每次 到 5把里面这个循环关了

但是 如果我们想一起关掉

#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable:6031)
#include <stdio.h>

int main() {
    for (int i = 1; i <= 10; i = i + 1) {
        for (int j = 1; j <= 10; j = j + 1) { // 使用 j 代替内层循环的变量名
            if (j == 5) {
                goto PRN;
            }
            printf("j的值为 %d\n", j);
        }
        printf("外层执行\n");
    }
    PRN:
    printf("跳出内层循环\n");

    return 0;
}

运行结果如下
在这里插入图片描述
这里 我们做了 goto 表示为 PRN
自动跳到 PRN 的位置

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

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

相关文章

【数据结构初阶】希尔排序

鼠鼠最近学习了希尔排序&#xff0c;做个笔记&#xff01; 希尔排序也是插入排序的一种捏&#xff01;本篇博客也是用排升序来举例捏&#xff01; 希尔排序是基于直接插入排序的&#xff0c;是由大佬D.L.Shell提出的。 目录 1.希尔排序 1.1.预排序 1.2.直接插入排序 2.希…

jetson实操(二):jetson nano发送短信到指定用户

文章目录 一、准备工作二、代码实现 一、准备工作 腾讯云网址&#xff1a;点击 注&#xff1a;需先申请“短信签名”和“短信正文”&#xff0c;按照要求填写申请即可&#xff0c;腾讯云的审核效率还是很快的&#xff0c;一般在1-2个小时内就会有结果&#xff0c;链接&…

Linux环境创建普通用户,授权root权限。报错:usermod: group ‘sudo‘ does not exist

在Linux环境下&#xff0c;创建普通用户并授权root权限需要以下步骤&#xff1a; 1. 以root用户登录终端。 2. 执行以下命令创建一个新的用户&#xff0c;其中username为你想要创建的用户名&#xff0c;可根据实际情况自行更改。 adduser username 3. 设置该用户的密码&…

数据库原理与应用实验三 嵌套查询

实验目的和要求 加深和掌握对嵌套查询的理解和应用 实验环境 Windows10 SQLServer 实验内容与过程 图书&#xff08;书号&#xff0c;书名&#xff0c;价格&#xff0c;出版社&#xff09; 读者&#xff08;卡号&#xff0c;姓名&#xff0c;年龄&#xff0c;所属单位&a…

luci框架相关笔记

luci架构 LuCI 架构采用了MVC&#xff08;Model-View-Controller&#xff09;设计模式&#xff0c;各个目录的作用如下&#xff1a; model&#xff08;模型&#xff09;: 位于 /usr/lib/lua/luci/model 下&#xff0c;存放了与系统配置相关的模型脚本。这些脚本负责与底层系统…

有免费的通配符SSL证书吗?通配符证书的申请

首先要了解通配符SSL证书&#xff0c;需要先知晓我们常用的普通单域名SSL证书、多域名SSL证书与之的区别。 单域名SSL证书最容易理解&#xff0c;一张证书有且只能绑定与保护一个域名&#xff0c;例如www.123456.com 证书安装部署完成后则会激活对于该域名的https、即加密访问…

【Leetcode 42】 接雨水

基础思路&#xff1a; &#xff08;1&#xff09;需要将问题最小化&#xff0c;首先计算第i个位置最多容纳多少雨水&#xff08;细长的一条水柱&#xff09;&#xff0c;然后求和就是总的雨水量&#xff1b; &#xff08;2&#xff09;第i个位置容纳雨水量 min(左侧最高, 右…

【数据结构】单链表和双链表的基操实现

文章目录 一、链表的概念及结构二、链表的分类三、无头单向非循环链表1.单链表创建2.尾插和头插3.尾删和头删4.打印5.查找6.插入7.删除8.销毁 四、带头双向循环链表1.双链表的创建2.初始化3.判断链表是否为空4.尾插和头插5.尾删和头删6.查找7.插入8.删除9.销毁 五、总结链表和顺…

vulnhub靶场之FunBox-2

一.环境搭建 1.靶场描述 Boot2Root ! This can be a real life scenario if rockies becomes admins. Easy going in round about 15 mins. Bit more, if you are find and stuck in the rabbit-hole first. This VM is created/tested with Virtualbox. Maybe it works with…

【C++】vector的迭代器失效问题(什么是迭代器失效?那些操作会导致迭代器失效?如何避免迭代器失效?)

目录 一、前言 二、什么是迭代器失效&#xff1f; 三、哪些操作会导致迭代器失效&#xff1f; 四、如何避免迭代器失效&#xff1f; &#x1f95d; insert迭代器失效 ✨迭代器失效 ------ 扩容导致的野指针 ✨迭代器失效 ------ 迭代器指向的位置意义发生改变 &#x1f347…

揭秘无尘布:科技与清洁的完美结合

在现代科技的浪潮下&#xff0c;人们对于清洁工作的要求越来越高&#xff0c;尤其是对于精密仪器、光学设备、电子产品等高科技产品的清洁需求更为迫切。在这样的背景下&#xff0c;无尘布作为一种特殊的清洁工具&#xff0c;备受关注并得到广泛应用。本文将深入揭秘无尘布的科…

怎么口语外教一对一课程?这篇文章告诉你答案!

怎么口语外教一对一课程&#xff1f;在当今全球化的时代&#xff0c;英语口语能力已经成为许多人追求的重要技能。为了满足这一需求&#xff0c;市场上涌现出了许多提供一对一口语外教课程的软件。这些软件不仅提供了与母语为英语的外教进行实时交流的机会&#xff0c;还通过互…

德国韦纳WENAROLL滚压刀,液压缸,滚光刀,挤压刀,滚轧刀

德国韦纳WENAROLL滚压刀,液压缸&#xff0c;滚光刀,挤压刀&#xff0c;滚轧刀&#xff08;百度一下&#xff0c;西安尚融&#xff09; 德国韦纳&#xff08;WENAROLL&#xff09;的滚压刀、液压缸、滚光刀、挤压刀和滚轧刀在工业领域享有很高的声誉&#xff0c;这些产品因其高…

【深度学习实战(27)】「分布式训练」DDP单机多卡并行指南

一、DDP实现流程 &#xff08;1&#xff09;初始化进程 &#xff08;2&#xff09;model并行 &#xff08;3&#xff09;BN并行 &#xff08;4&#xff09;data并行 &#xff08;5&#xff09;进程同步 二、DDP代码实现 &#xff08;1&#xff09;初始化进程 #------------…

vivado Virtex 和 Kintex UltraScale+ 比特流设置

下表所示 Virtex 和 Kintex UltraScale 器件的器件配置设置可搭配 set_property <Setting> <Value> [current_design] Vivado 工具 Tcl 命令一起使用。

Vue 基础语法

【1】模板语法 &#xff08;1&#xff09;差值表达式 {{}}是 Vue.js 中的文本插值表达式。 它用于在模板中输出数据或表达式的值。当数据或表达式的值发生变化时&#xff0c;插值表达式会自动更新。 补充&#xff1a;三目运算符 它的基本语法是 Condition ? A : B&#xff0…

python绘图(pandas)

matplotlib绘图 import pandas as pd abs_path rF:\Python\learn\python附件\pythonCsv\data.csv df pd.read_csv(abs_path, encodinggbk) # apply根据多列生成新的一个列的操作&#xff0c;用apply df[new_score] df.apply(lambda x : x.数学 x.语文, axis1)# 最后几行 …

3W 3KVDC 隔离单输出 DC/DC 电源模块——TPG-3W 系列

TPG-3W系列是一款额定功率为3W的隔离产品&#xff0c;国际标准引脚&#xff0c;宽范围工作、温度–40℃ 到 105℃&#xff0c;在此温度范围内都可以稳定输出3W&#xff0c;并且效率非常高&#xff0c;高达88%&#xff0c;同时负载调整率非常低&#xff0c;对于有输出电压精度有…

61-ARM与FPGA间SPI通信电路设计

视频链接 ARM与FPGA间SPI通信电路设计01_哔哩哔哩_bilibili ARM与FPGA间SPI通信电路设计 第22课&#xff1a;SPI Flash 电路设计 第65课&#xff1a;实战S1-FPGA板级实战导学 1、SPI简介 1.1、SPI概述 SPI是(Serial Peripheral Interface) 串行外设接口&#xff0c;由Mot…

产业空间集聚DO指数计算

1.前言 创始人 :Duranton and Overman&#xff08;2005&#xff09; 目前应用较多的产业集聚度量指数主要基于两类&#xff0c;一是根据不同空间地理单元中产业经济规模的均衡性进行构造&#xff0c;如空间基尼系数与EG指数&#xff1b;二是基于微观企业地理位置信息形成的产业…