【C语言】分支与循环(下)

 目录 

6.  while 循环

7.  for 循环

8.  do-while 循环

9.  break 和 continue 循环

10.  循环的嵌套

11.  goto 语句


正文开始——

6.  while 循环  

C语言提供了三种循环,while 就是其中一种。

while 语句的语法结构与 if 语句非常相似。

6.1  if 和 while 的对比  

1  if(表达式)

2         语句;

4  while(表达式)

5                语句;// 如果循环体想要更多的语句,可以加上大括号

对比一下,上代码!

while 语句是实现可以循环的效果。

6.2  while 语句的执行流程  

【重点】

首先是执行判断表达式,表达式的值为0,循环直接结束;表达式的值不为0,则执行循环语句,语句执行之后再继续判断,是否进行下一次循环。

6.3  while 循环的实践  

练习:在屏幕上打印 1~10 的值

6.4  练习  

题目:输入一个正的整数,逆序打印这个整数的每一位

例如,输入: 123,输出: 321

解析:对这个原整数取余得到末位;

           对原整数 /10 后再取余得到倒数第二位;

           循环以上步骤,直至 while 后面的数为0。

7.  for 循环  

7.1  语法形式  

1   for(表达式1;表达式2;表达式3)

2           语句;// 如果循环体想包含更多的语句,可以加上大括号

表达式1  用于循环变量的初始化

表达式2  用于循环结束条件的判断

表达式3  用于循环变量的调整

7.2  for 循环的执行流程  

【重点】

执行表达式1初始化循环变量——>执行表达式2的判断部分,表达式2的结果如果是0,则循环结束,非0,则执行循环语句,循环语句结束之后——>执行表达式3,调整循环变量——>再去判断表达式2,看表达式2的结果,决定循环是否继续。

整个循环过程中,表达式1初始化部分只被执行一次,剩下的就是表达式2、循环语句、表达式3在循环。(留意,后面会用)

7.3  for 循环的实践  

题目:在屏幕上打印1~10的值

7.4  while 循环和 for 循环的对比  

【对比】

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

7.5  练习  

题目:计算1~100之间3的倍数的数字之和

8.  do-while 循环  

8.1  语法形式  

在循环语句中 do-while 循环使用最少。

1   do

2          语句;

3   while(表达式);

【重点】

while 和 for 这两种循环都是先判断,条件满足再进入循环执行循环语句,如果不满足就跳过出循环;而 do-while 循环则是先直接进入循环体执行循环语句,然后再执行 while 后的判断表达式,表达式为真,就会进行下一次,表达式为假,则不再继续循环。

8.2  do-while 循环的执行流程  

【重点】

do-while 循环中先执行 do 后的语句,执行完语句,再去执行判断表达式,判断表达式的结果是!=0,则继续循环,执行循环语句;判断表达式的结果==0,则循环结束。

特殊之处:do-while 语句中循环体至少被执行一次,这是 do-while 循环比较特殊的地方。

8.3  do-while 循环的实例  

题目:在屏幕上打印1~10的值

一般 do-while 使用在循环体至少被执行一次的情况下,所以较少一些。

8.4  练习  

题目:输入一个正整数,计算这个整数是几位数?

例如,输入:1234,输出:4

这里并非必须使用 do-while 语句,但是这个代码就比较适合使用 do-while 循环,因为 n 即使是0,也是1位数,要统计位数的。

9.  break 和 continue 语句  

9.1  break 和 continue 举例  

9.1.1  break 举例  

如结果显示,打印到5就停止了,不再打印,终止循环了。

所以 break 的作用就是永久的终止循环,只要 break 被执行,break 外的第一层循环就终止了。那以后我们在循环中,想在某种情况下终止循环,则可以使用 break 来完成我们想要达到的效果。

9.1.2  continue 举例  

continue 是继续的意思,在循环中的作用就是跳过本次循环中 continue 后边的代码,继续进行下一次循环的判断。

上面代码中,把 break 换成 continue 会是什么样的效果呢?

当 i =5 后,就执行 continue ,直接跳过 continue 的代码,去循环的判断的地方,因为跳过了 i++,所以 i 就一直为5,程序进入死循环。

【重点】

 continue 是跳过某一次循环 continue 后边的代码,直接到循环的判断部分,进入下一次循环的判断,如果循环的调整是在 continue 后边的话,可能会造成死循环。

9.2  for循环中的 break 和 continue  

9.2.1  break 举例  

其实和 while 循环中的 break 一样,for 循环中的 break 也是用来终止循环的,不管循环还需要循环多少次,只要执行到了 break ,循环就彻底终止,上代码:

break 的作用是永久的终止循环,未来我们在某个条件发生的时候,不想再继续循环的时候,就可以使用 break 来达到我们想要的效果。

9.2.2  continue 举例  

上面的代码我们把 break 换成 continue 会怎样?

在 for 循环中 continue 的作用是跳过本次循环中的 continue 后的代码,直接跳到循环的调整部分。 

9.3  do-while循环中的break和continue  

10.  循环的嵌套  

前面学习了三种循环,for、while、do-while,这三种循环嵌套在一起才能更好地解决问题,也就是循环嵌套。

10.1  练习  

找出100~200之间的素数,并打印在屏幕上。

10.2  题目解析  

  1. 首先找出100~200之间的数,使用循环解决。
  2. 假设要判断 i 是否为素数,就要拿 2~i-1 之间的数字去试除 i,需要产生 2~i-1 之间的数字,也可以使用循环解决。 

10.3  参考代码  

11.  goto 语句   

C语言提供了一种非常好的语法,goto 语句可以实现在同一个函数内跳转到设置好的标号处

例如:

【注意】

goto 语句如果使用不当,就会导致在函数内部随意乱跳转,打乱程序的执行流程,所以我们的建议是能不用尽量不去使用,但是 goto 语句也非一无是处,在多层循环的代码中,如果想快速跳出使用 goto 就非常方便了。

1   for(...)

2   {

3          for(...)

4          {

5                 for(...)

6                 {

7                          if(disaster)

8                                  goto error;

9                  }

10         }

11   } 

12

13   error:

14            //

本来 for 循环想提前退出得使用 break,一个 break 只能跳出一层循环,如果三层循环嵌套需要三个 break 才能跳出整个循环,所以在这种情况下我们使用 goto 语句会更加方便快捷。


完——

Whataya Want from Me

Whataya Want from Me_Adam Lambert_高音质在线试听_Whataya Want from Me歌词|歌曲下载_酷狗音乐酷狗音乐为您提供由Adam Lambert演唱的高清音质无损Whataya Want from Memp3在线听,听Whataya Want from Me,只来酷狗音乐!icon-default.png?t=N7T8https://t4.kugou.com/song.html?id=4p1eBe7COV2


What do you want to be ?

只要你有百分之十甚至百分之一的念头,那就要用百分之一百二的努力去实现它。 

让我们一起携手同行,未来掌握在我们手中,加油! 

祝各位端午节快乐!

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

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

相关文章

ubuntu中安装docker并换源

使用 Ubuntu 的仓库安装 Docker sudo apt update现在,你可以使用以下命令在 Ubuntu 中安装 Docker 以及 Docker Compose: sudo apt install docker.io docker-composeDocker 包被命名为 docker.io,因为在 Docker 出现之前就已经存在一个名为…

hashlib的简单使用

在 Python 中,hashlib 模块提供了常见的哈希算法,如 SHA1, SHA256, MD5 等。在安全性相关的应用中,比如用户密码存储,hashlib 通常用于生成哈希值以确保密码存储的安全性,因为直接存储用户密码是不安全的。 以下是如何…

【论文复现|智能算法改进】基于多策略融合灰狼算法的移动机器人路径规划

目录 1.算法原理2.改进点3.结果展示4.参考文献5.代码获取 1.算法原理 【智能算法】灰狼算法(GWO)原理及实现 2.改进点 混沌反向学习策略 融合Logistic混沌映射和Tent混沌映射生成Logistic-Tent复合混沌映射: Z i 1 { ( r Z i ( 1 − Z i ) ( 4 −…

git - LFS 使用方法

安装Git LFS 访问 Git LFS官网 下载适用于您操作系统的版本。 Linux用户,解压缩下载的.tar.gz文件,并通过终端运行安装脚本。 tar -xvf git-lfs-linux-amd64-vX.Y.Z.tar.gz cd git-lfs-X.Y.Z sudo ./install.sh 初始化Git LFS # 全局启用 git lfs i…

window11 系统更新失败处理办法

方法一:运行 Windows 更新疑难解答 按 Win I 打开设置。选择“系统”。选择“疑难解答”,然后点击“其他疑难解答”。找到“Windows 更新”,并运行疑难解答。 方法二:使用 DISM 工具修复系统文件 在开始菜单中搜索“命令提示符…

618大促背后的智能力量:天润融通如何用AI大模型提升客户服务?

五一结束之后,消费零售企业马上又要进入一场紧锣密鼓的新战斗——618,一场上半年最重要的促销活动。 对品牌和商家来说,每年618都是一场新考验。因为618时间有限,而消费趋势总是在不断变化,市场竞争又越来越激烈。如何…

LogicFlow 学习笔记——5. LogicFlow 基础 主题 Theme

主题 Theme LogicFlow 提供了设置主题的方法,便于用户统一设置其内部所有元素的样式。设置方式有两种: 初始化LogicFlow时作为配置传入初始化后,调用LogicFlow的 setTheme 方法 主题配置参数见主题API 配置 new LogicFlow 时作为将主题配…

掌握高等数学、线性代数、概率论所需数学知识及标题建议

在数学的广袤领域中,高等数学、线性代数和概率论作为三大核心分支,不仅在理论研究中占据重要地位,更在实际应用中发挥着举足轻重的作用。为了深入理解和掌握这三门学科,我们需要掌握一系列扎实的数学知识。 高等数学所需数学知识 …

Tensorflow-GPU工具包了解和详细安装方法

目录 基础知识信息了解 显卡算力 CUDA兼容 Tensorflow gpu安装 CUDA/cuDNN匹配和下载 查看Conda driver的版本 下载CUDA工具包 查看对应cuDNN版本 下载cuDNN加速库 CUDA/cuDNN安装 CUDA安装方法 cuDNN加速库安装 配置CUDA/cuDNN环境变量 配置环境变量 核验是否安…

算法与数据结构--决策树算法

欢迎来到 Papicatch的博客 文章目录 🍉决策树算法介绍 🍈原理 🍈核心思想包括 🍍递归分割 🍍选择标准 🍍剪枝 🍈解题过程 🍍数据准备 🍍选择最佳分割特征 &…

Qt 实战(4)信号与槽 | 4.2、自定义信号与槽

文章目录 一、自定义信号与槽1、自定义信号2、自定义槽3、连接信号与槽4、总结 前言: 在Qt框架中,信号(signals)和槽(slots)机制是对象间通信的核心。这种机制允许对象在特定事件发生时发出信号&#xff0c…

【GD32】 TIMER通用定时器学习+PWM输出占空比控制LED

扩展:对PWM波形的输出进行捕获 目录 一、简介二、具体功能描述1、时钟源的选择:2、预分频器:3、计数模式:向上计数模式:向下计数模式:中央对齐模式: 4、捕获/比较通道 输入捕获模式 输出比…

仙侠手游【天道情缘】修复版服务端+GM后台+详细教程

下载地址:仙侠手游【天道情缘】修复版服务端GM后台详细教程

【电子信息工程专业课】学习记录

数字信号处理 离散时间信号与系统 周期延拓 一个连续时间信号经过理想采样后,其频谱将沿着频率轴以采样频率Ωs 2π / T 为间隔而重复。 混频 各周期的延拓分量产生频谱交替的现象 奈奎斯特采样定理 fs > 2fh Z变换 收敛域:使任意给定序列x(n)的Z变…

ROS机器人小车建模仿真与SLAM

文章目录 一、URDF二、创建小车模型1.创建功能包2.导入依赖3.创建urdf,launch文件:4.可视化 三、添加雷达1.xacro文件2.集成和修改launch3.添加摄像头和雷达 三.GAZEBO仿真四、orbslam2kitti1.下载2.安装编译ORB_SLAM23.运行Kitee数据集 一、URDF ​ URDF&#xff…

传输层——TCP

在学习计算机网络的过程中,我们知道OSI七层协议模型,但是在实际开发应 用中我们发现OSI七层协议模型并不适合实施,因为OSI上三层通常都是由开 发人员统一完成的,这三层之间在实现过程中没有一个明确的界限,所以我 们更…

爬虫相关面试题

一,如何抓取一个网站? 1,去百度和谷歌搜一下这个网站有没有分享要爬取数据的API 2, 看看电脑网页有没有所需要的数据,写代码测试调查好不好拿,如果好拿直接开始爬取 3,看看有没有电脑能打开的手机网页&a…

Vue前端发起promise请求,若请求2分钟之内能完成就直接完成,若两分钟之后还未完成就直接路由跳转到其他页面

在Vue中,你可以使用JavaScript的Promise和setTimeout来实现这个需求。这里是一个基本的实现思路: 创建一个Promise,该Promise内部发起你的API请求(假设你使用的是axios)。同时设置一个setTimeout来在2分钟后执行一个操…

面向对象初级的内存分布图

1.一个对象的内存图 2.二个对象的内存图 3.二个引用指向同一个对象 4.this的内存布局图 创建了一个Student类的对象s1,因为有new,所有在堆区开辟了一些内存空间,比如把这些内存空间的地址值叫001 形参name是竹小玲, 也就是对象s调用method方法的地址值, this表示方法调用者的地…

怎么不使用springboot Helper或Spring Initializr来创建spring项目

1. 创建项目目录结构 首先,创建项目的基本目录结构。一个典型的 Maven 项目结构如下: my-spring-project ├── src │ ├── main │ │ ├── java │ │ │ └── com │ │ │ └── example │ │ │ └…