第七节 循环结构;goto语句

news2024/9/24 19:27:17

目录

7.1 while循环

7.1.1 if 和 while的对⽐

7.1.2 while的执行流程

7.1.3 while的练习

7.2  for循环

7.2.1 语法形式

7.2.2 for循环的执⾏流程

7.2.3 for 循环的练习

7.3 while 和  for 循环的对比

7.4 do while 循环

7.4.1 do while 的语法形式

7.4.2 do while循环的执⾏流程

 7.4.3do while循环的练习

7.5  break和continue语句

 7.5.1 while循环中的break和continue

7.5.1 break举例

7.5.2 for循环中的break和continue

7.5.2 .1 break举例

7.5.2.2continue举例

7.5.3 do while循环中的break和continue

7. 6 循环的嵌套

7.7 goto语句


   在前面的内容中 我们学习了分支语句第六节 分支语句 (switch部分)-CSDN博客,第六节 分支语句 (switch部分)-CSDN博客同样循环语句也是C语言中常用的语句.C语⾔提供了3种循环语句,

7.1 while循环

while 就是其中⼀种,接下来就介绍⼀下 while 语句。 while 语句的语法结构和 if 语句⾮常相似。

7.1.1 if 和 while的对⽐

if 语句的写法

if(表达式)
    语句;

while语句的写法   

while(表达式)
    语句;

通过写法上,可以看到二者有很多的相似性,下面通过一个实例具体分析一下

#include <stdio.h>
int main()
{
    if(1)
    printf("hehe\n"); //if后边条件满⾜,打印⼀次hehe
    return 0;
}

#include <stdio.h>
int main()
{
    while(1)
    printf("hehe\n"); //while后边的条件满⾜,死循环的打印hehe
    return 0;
}

通过上述运行结果,我们也看出了他们的区别,while语句是可以实现循环效果的。 

7.1.2 while的执行流程

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

7.1.3 while的练习

在屏幕上打印 1~10 的值

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

7.2  for循环

7.2.1 语法形式

for 循环是三种循环中使⽤最多的, for 循环的语法形式如下:
for(表达式1; 表达式2; 表达式3)
    语句;//如果循环体想包含更多的语句,可以加上⼤括号
表达式1 ⽤于循环变量的初始化
表达式2 ⽤于循环结束条件的判断
表达式3 ⽤于循环变量的调整

7.2.2 for循环的执⾏流程

  ⾸先执⾏ 表达式 1 初始化循环变量,接下来就是执⾏ 表达式 2 的判断部分, 表达式 2 的结果如果
==0,则循环结束; 表达式 2 的结果如果!=0则执⾏循环语句,循环语句执⾏完后,再去执⾏表 达式 3 ,调整循环变量,然后再去 表达式 2 的地⽅执⾏判断, 表达式 2 的结果是否为0,决定循环是否继 续。 整个循环的过程中,表达式1初始化部分只被执⾏1次,剩下的就是表达式2、循环语句、表达式3在循环.

7.2.3 for 循环的练习

在屏幕上打印出1-10的内容,

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

7.3 while 和  for 循环的对比

   。
                

 for 和 while 在实现循环的过程中都有初始化、判断、调整这三个部分,但是 for 循环的三个部
分⾮常集中,便于代码的维护,⽽如果代码较多的时候 while 循环的三个部分就⽐较分散,所以从形 式上 for 循环要更优⼀些

7.4 do while 循环

7.4.1 do while 的语法形式

 在循环语句中 do while 语句的使⽤最少,它的语法如下

do
    语句;
while(表达式);
  while for 这两种循环都是先判断,条件如果满⾜就进⼊循环,执⾏循环语句,如果不满⾜就跳
出循环; ⽽ do while 循环则是先直接进⼊循环体,执⾏循环语句,然后再执⾏ while 后的判断表达式,表 达式为真,就会进⾏下⼀次,表达式为假,则不再继续循环。

7.4.2 do while循环的执⾏流程

 
do while 循环中先执⾏图上的“语句”,执⾏完语句,在去执⾏“判断表达式”,判断表达式的
结果是!=0,则继续循环,执⾏循环语句;判断表达式的结果==0,则循环结束。
所以在 do while 语句中循环体是⾄少执⾏⼀次的,这是 do while 循环⽐较特殊的地⽅。 ​​​​​​​

 7.4.3​​​​​​​do while循环的练习

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

⼀般 do while 使⽤在循环体⾄少被执⾏⼀次的场景下,所以较少⼀些。

7.5  break和continue语句

在循环执⾏的过程中,如果某些状况发⽣的时候,需要提前终⽌循环,这是⾮常常⻅的现象。C语⾔中 提供了 break continue 两个关键字
break 的作⽤是⽤于永久的终⽌循环,只要 break 被执⾏,直接就会跳出循环,继续往后执
⾏。
continue 的作⽤是跳过本次循环 continue 后边的代码,在 for 循环和 while 循环中有所
差异的​​​​​​​

 7.5.1 while循环中的break和continue

7.5.1 break举例

#include <stdio.h>
int main()
{
    int i = 1;
    while(i<=10)
 {
    if(i == 5)
        break;//当i等于5后,就执⾏break,循环就终⽌了
    printf("%d ", i);
    i = i+1;
 }
 return 0;
}

运行后,再打印了1,2,3,4后,当i等于5的时候,循环正 break 的地⽅终⽌,不再打印,不再循环。
所以 break 的作⽤就是永久的终⽌循环 ,只要 break 被执⾏, break 外的第⼀层循环就终⽌了。
那以后我们在循环中,想在某种条件下终⽌循环,则可以使⽤ break 来完成。
7.5.1continue举例
#include <stdio.h>
int main()
{
    int i = 1;
    while(i<=10)
    {
    if(i == 5)
        continue;     //当i等于5后,就执⾏continue,直接跳过continue的代码,去循环的判断的地⽅//    
    printf("%d ", i);
    i = i+1;                      //因为这⾥跳过了i = i+1,所以i⼀直为5,程序陷⼊和死循环
        
    }
    return 0;
}

运行后, continue 在循环中的作⽤就是跳过本次循环中 continue 后边的代码,继续进⾏
下⼀次循环的判断。 continue 可以帮助我们跳过某⼀次循环 continue 后边的代码,直接 到循环的判断部分,进⾏下⼀次循环的判断,如果循环的调整是在 continue 后边的话,可能会造成 死循环

7.5.2 for循环中的break和continue

7.5.2 .1 break举例

       和 while 循环中的 break ⼀样, for 循环中的 break 也是⽤于终⽌循环的,不管循环还需

要循环多少次,只要执⾏到了 break ,循环就彻底终⽌​​​​​​​

#include <stdio.h>
int main()
{
    int i = 1;
    for(i=1; i<=10; i++)
    {    
        if(i == 5)
            break;
        printf("%d ", i);
    }
return 0;
}
break 的作⽤是永久的终⽌循环,再打印了1,2,3,4后,当i等于5的时候,循环正 break 的地⽅终⽌,不再打印,

7.5.2.2continue举例

#include <stdio.h>
int main()
{
    int i = 1;
    for(i=1; i<=10; i++)
{
    if(i == 5)
        continue;//这⾥continue跳过了后边的打印,来到了i++的调整部分
    printf("%d ", i);
}
return 0;
}

for 循环中 continue 的作⽤是跳过本次循环中 continue 后的代码,直接去到循环的调
整部分。通过i的自增,继续执行剩余代码
我们对⽐⼀下 while 循环和 for 循环中 continue 的区别:
       
                                                           ​​​​​​​
while循环中continue跳出本次循环后,i的数值没有自增,for循环中continue跳出本次循环后,i的数值自增,代码将继续执行

7.5.3 do while循环中的break和continue

do.while 语句中的 break continue 的作⽤和 while 循环中⼏乎⼀模⼀样,
                                  

7. 6 循环的嵌套

前⾯学习了三种循环 while do while for ,这三种循环往往会嵌套在⼀起才能更好的解决
问题,也就是我们所说的:循环嵌套,这⾥我们看⼀个例⼦。
找出100~200之间的素数,并打印在屏幕上。
  题⽬分析:
1. 要从100~200之间找出素数,⾸先得有100~200之间的数,这⾥可以使⽤循环解决。
2. 假设要判断i是否为素数,需要拿2~i-1之间的数字去试除i,需要产⽣2~i-1之间的数字,也可以使⽤
循环解决。
3. 如果2~i-1之间有数字能整除i,则i不是素数,如果都不能整除,则i是素数。

参考代码

#include <stdio.h>
int main()
{
    int i = 0;
    for(i=100; i<=200; i++)
    {
     
    int j = 0;
    int flag = 1;//假设i是素数
    for(j=2; j<i; j++)
    {
        if(i % j == 0)
        {
            flag = 0;
            break;
        }
     }
       if(flag == 1)
            printf("%d ", i);
 }
    return 0;
}

7.7 goto语句

C语⾔提供了⼀种⾮常特别的语法,就是 goto 语句和跳转标号, goto 语句可以实现在同⼀个函数
内跳转到设置好的标号处。
#include <stdio.h>
int main()
{
    printf("hehe\n");
    goto next;
    printf("haha\n");

next:
    printf("跳过了haha的打印\n");
    return 0;
} 

goto 语句如果使⽤的不当,就会导致在函数内部随意乱跳转,打乱程序的执⾏流程,所以能不⽤尽量不去使⽤;但是 goto 语句也不是⼀⽆是处,在多层循环的代码中,如果想快速跳出 ,使⽤ goto 就⾮常的⽅便了。
for (...)
{
        for (...)
                {
                for (...)
                        {
                        if (disaster)
                                goto error;
                        }
               }

}
error:
本来 for 循环想提前退出得使⽤ break ,⼀个 break 只能跳出⼀层 for 循环,如果3层循环嵌套,就得使⽤3个 break 才能跳出循环,所以在这种情况下我们使⽤ goto 语句就会更加的快捷。

持续更新中~ ✨

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

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

相关文章

Jamba前生今世:1.5开源来袭

AI21服务于企业&#xff0c;为企业构建基础模型和AI系统以加速GenAI在生产中的使用。AI21 成立于2017年&#xff0c;已从NVIDIA、Intel、Google等公司共筹集了3.36亿美元。它是最早将生成式AI推向大众的公司之一&#xff0c;借助AI21平台&#xff0c;企业可以构建自己的生成式A…

菲菲更名宝贝:批量处理,文件命名不再繁琐

你是否有这样的经历&#xff1f;曾几何时&#xff0c;在堆积如山的文件中迷失方向&#xff0c;为了一个个手动重命名文件而加班到深夜&#xff1f;是否渴望有一种魔法&#xff0c;能瞬间让你的文件整理得井井有条&#xff0c;让繁琐的命名工作变得轻松愉快&#xff1f;那么&…

大数据毕业设计开题报告100例

文章目录 &#x1f6a9; 1 前言1.1 选题注意事项1.1.1 难度怎么把控&#xff1f;1.1.2 题目名称怎么取&#xff1f; 1.2 开题选题推荐1.2.1 起因1.2.2 核心- 如何避坑(重中之重)1.2.3 怎么办呢&#xff1f; &#x1f6a9;2 选题概览&#x1f6a9; 3 项目概览题目1 : 深度学习社…

前端网站优化-Brotli 压缩

杨绛先生说:“岁不声不响&#xff0c;你且不慌不忙。在凡俗的烟火里&#xff0c;愿以素心&#xff0c;阅来日方长。生活总是一地鸡毛&#xff0c;繁杂琐碎的日常&#xff0c;无力掌控的局面&#xff0c;以及猝不及防的变化&#xff0c;让日子多了几分慌张”。 市井长巷&#xf…

ssrf漏洞复现

环境搭建 zhuifengshaonianhanlu/pikachu: 一个好玩的Web安全-漏洞测试平台 (github.com) 直接将其复制到linux环境下拉取docker就行 我这里已经拉去过了&#xff0c;如果拉去速度慢话&#xff0c;可以在/etc/docker下的daemon.json中配置镜像加速 vim /etc/docker/daemon.js…

大模型学习笔记 - LLM 对齐优化算法 DPO

LLM - DPO LLM - DPO DPO 概述DPO 目标函数推导DPO 目标函数梯度的推导 DPO 概述 大模型预训练是从大量语料中进行无监督学习&#xff0c;语料库内容混杂&#xff0c;训练的目标是语言模型损失&#xff0c;任务是next token prediction&#xff0c;生成的token 不可控&…

MyBatis-Plus分页插件使用详解

一、简述 在使用mybatis开发项目的时候我们通常使用pagehelper来进行分页操作&#xff0c; 但是我们在使用MyBatis-Plus 开发时&#xff0c;MyBatis-Plus内置已经有分页功能了&#xff0c;其实不需要在额外引入pagehelper依赖了&#xff0c;而且两者同时引入有时候还会导致分页…

主流商品API接口在电商跨境电商企业应用/项目中的重要作用

618狂欢已经开启&#xff0c;为了获取更大利益&#xff0c;电商商家应使用价格接口系统。价格接口对电商商家有多方面的好处&#xff0c;主要体现在以下几个方面&#xff1a; 1、价格接口系统可以帮助品牌和商家实现更加科学和精准的定价策略。通过实时获取多个主流电商平台&a…

公众号里面的试卷怎么打印

经过我们的观察发现&#xff0c;微信公众号中的试卷通常有两种形式&#xff1a;图片和文档。如果试卷是以图片的形式嵌入在文章中作为配图&#xff0c;您只需点击图片并长按&#xff0c;选择“保存图片”到手机中。之后&#xff0c;您可以选择任何方便的方式完成打印。 不过&am…

ELK企业级日志分析系统(分布式文件系统与企业级应用)

一、ELK 概述 1、ELK简介 ELK平台是一套完整的日志集中处理解决方案&#xff0c;将 ElasticSearch、Logstash 和 Kiabana 三个开源工具配合使用&#xff0c; 完成更强大的用户对日志的查询、排序、统计需求。 ElasticSearch 是基于Lucene&#xff08;一个全文检索引擎的架构…

笔记整理—uboot启动过程(4)BL2干了什么及内存排布

uboot的第一阶段结束于start_armboot&#xff0c;第二阶段的uboot代码主要负责soc外部硬件&#xff08;inand、网卡、......&#xff09;、uboot本身构建&#xff08;uboot指令、环境变量、......&#xff09;最后进入命令行&#xff0c;等待命令然后倒数&#xff0c;等待bootc…

Pytest框架环境切换实战教程

测试人员每天都跟不同的环境打交道&#xff0c;比如线上环境&#xff0c;测试环境&#xff0c;预上线环境等等&#xff0c;那么作为自动化测试人员写的代码&#xff0c;我们也要具备能自由切换环境的能力&#xff0c;那么今天小编就给大家聊一下&#xff0c;如何能让我们python…

linux 安装kafaka单体服务

1.下载kafka的linux安装包 前往Apache Kafka官方网站下载页面&#xff08;Apache Kafkahttps://kafka.apache.org/downloads&#xff09;&#xff0c;选择最新稳定版的Kafka二进制分发文件&#xff0c;通常是以.tgz结尾的文件。 手动下载kafka_2.13-3.8.0.tgz到本地&#xff0…

Spring Boot 与 Spring Security 的集成及 OAuth2 实现

我的主页&#xff1a;2的n次方_ 在现代 Web 应用开发中&#xff0c;安全性是至关重要的。无论是保护用户的敏感数据&#xff0c;还是确保 API 只允许经过授权的请求访问&#xff0c;开发者都需要一个强大且灵活的安全框架来实现这些需求。Spring Security 作为 Spring 框架的…

MATLAB 生成指定范围、角度、厚度的含噪平面点云(77)

模拟生成点云并可视化显示,可以验证算法有效性,尤其是针对验证算法的某方面 MATLAB 生成指定范围、角度、厚度的含噪平面点云(77) 一、算法介绍二、使用步骤1.代码2.效果一、算法介绍 如题,模拟生成一组平面点云,含有噪声点,确定算法稳定性,可以指定生成平面的范围,厚…

混合A*算法

混合A*算法是一种改进版的A*算法&#xff0c;特别针对车辆动力学进行了优化。这种算法在经典A*的基础上引入了新的维度和概念&#xff0c;以生成更加实际可行的路径。 首先&#xff0c;混合A*算法不仅考虑x和y的位置&#xff0c;还引入了θ维度来表示车辆的朝向。这意味着搜索…

Unity视频播放插件-VideoPro(Windows)

Unity视频播放插件-VideoPro-windows &#x1f32e;介绍&#x1f364;使用方法&#x1f959;示例&#x1f333;rtsp&#x1f333;本地视频&#x1f333;网络视频 &#x1f32e;介绍 1.支持播放格式&#xff1a;rtsp、http、本地视频。 2.exe试用&#x1f308; 3.经测试i9 cpu 空…

【STM32开发笔记】搭建基于ST官方VSCode扩展的STM32开发环境

搭建基于ST官方VSCode扩展的STM32开发环境 一、安装软件1.1 安装VSCode1.2 安装STM32CubeMX1.3 安装STM32CubeCLT1.4 安装ST-MCU-FINDER-PC 二、安装插件2.1 安装 STM32 VS Code Extension 三、创建项目3.1 创建STM32CubeMX项目3.2 查阅原理图3.3 修改引脚功能3.4 生成CMake项目…

完成单位信息宣传工作考核投稿别输在投稿方法上

在信息化迅速发展的今天,弘扬社会正能量已经成为各个企事业单位的重要使命。作为单位的信息宣传员,我深知信息宣传工作的重要性和复杂性。每个月,我们都肩负着信息宣传考核的任务,需要在指定的媒体上投稿发表文章。然而,刚接触这一工作时,我却经历了一段艰辛而焦虑的历程。 我一…

ubuntu install Miniconda3(轻量级conda)

ubuntu install Miniconda3&#xff08;轻量级conda&#xff09; Miniconda3 是一个包含 conda 和 Python 的小型发行版&#xff0c;适合需要灵活定制python环境的用户。 一、下载Miniconda3 sudo apt-get update wget https://repo.anaconda.com/miniconda/Miniconda3-latest…