八、C++中的循环 for while do...while及控制流语句

2023-05-16

(1) for、while、do...while循环

简单来讲,循环就是多次执行同样的代码

例,如何输出重复内容多次:①代码复制多次;②写个函数调用多次;③写循环重复执行代码5次

1、for循环

for循环括号中有三部分,每部分用“;”分隔开。

        第一部分是变量声明,一般在此处声明临时变量,通常为int i=0;i代表迭代器(iterator),实际上变量名与变量初值都无所谓。在for循环之前执行一次。

        第二部分是条件,满足条件时,一直执行for循环中的代码。布尔值,执行每一次循环前会检验。

        第三部分是下次for循环前会执行的代码。每次循环结束后执行的代码。

for循环下是循环体,即for循环中会重复执行代码(由条件决定是否多次执行,可能根本不执行)。

#include <iostream>
#include "Log.h"

int main() 
{
	for (int i = 0; i < 5; i++)
	{
		Log("Hello World!");
	}
			
	std::cin.get(); 
 }

首先执行for循环这一行,创造变量i,再检查条件是否为真。条件为真,跳进循环体,执行循环体代码,执行到}时,执行for()中的第三部分,即i++,i由0变1,然后再检查条件i<5?条件为真再执行循环体代码。直到i=4的一次循环最后i++变成了5,不满足条件然后退出循环。执行for循环下方的代码std::cin.get();

变量声明放在for前,然后空着第一部分也可以。第三部分放在循环体的最后结果也一样。for循环非常灵活。

#include <iostream>
#include "Log.h"

int main() 
{
    int i = 0;
    bool condition = true;
	for ( ; i < 5; )
	{
		Log("Hello World!");
        i++;
        if(!(i < 5))
            condition = false;
	}
			
	std::cin.get(); 
 }

for循环的三个部分中甚至可以调用函数。第二部分如果时true循环就变成了死循环。

2、while循环

while循环类似for循环,没有第一部分的声明和结尾第三部分的代码,只有第二部分的条件。

声明需要在while循环之前,循环末尾执行第三部分代码(循环后、下次循环前执行的代码)。

#include <iostream>
#include "Log.h"

int main()
{
	for (int i = 0; i < 5; i++ )
	{
		Log("Hello World!");
	}

	Log("-------分割线-------");

	int i = 0;//为while循环声明变量,for循环内定义的i作用域只在for循环内
	while (i < 5)
	{
		Log("Hello");
		i++;
	}
	std::cin.get();
}

什么时候使用while循环?什么时候使用for循环?主要取决于是否需要新变量。从经验上来讲,如果已经有用来检验的布尔值,选择while循环,不用每次循环都改变条件,循环前不用去声明变量(已通过布尔条件值进行了声明)。而在遍历数组的时候,数组大小确定时,选择for循环,因为每次循环都会产生新的变量,这个变量在访问数组的时候有用,访问数组元素时需要偏移量或者索引。

3、do...while循环

do {循环体 }while(条件);不太常用

do...while循环与while循环的区别:do...while循环至少会被执行一次

do...while循环即使条件为假,也会运行一下里面的代码,而不是想while循环一样跳过,运行到最后while的条件,发现为假,循环结束

#include <iostream>
#include "Log.h"

int main()
{
	for (int i = 0; i < 5; i++ )
	{
		Log("Hello World!");
	}

	Log("-------分割线-------");

	int i = 0;//为while循环声明变量,for循环内定义的i作用域只在for循环内
	while (i < 5)
	{
		Log("Hello");
		i++;
	}
	Log("-------分割线-------");
	do
	{
		Log("Hello");
		
	} while (i < 5);
	std::cin.get();
}

14

(2)控制流语句 continue、break、return

1、continue 只能用于循环内部;如果还能进行迭代的话,直接进入下一次迭代,否则就结束循环。

int main()
{
	for (int i = 0; i < 5; i++ )
	{
		Log("Hello World!");
		continue;//此处continue不会影响整体循环
	}

	std::cin.get();
#include <iostream>
#include "Log.h"

int main()
{
	for (int i = 0; i < 5; i++ )
	{
		if (i % 2 == 0)
			continue;//跳过偶数次迭代(i=0、2、4)
		Log("Hello World!");
		std::cout << i << std::endl;
	}

	std::cin.get();
}

 输出结果:

只要运行到continue,就开始了下一次循环的迭代

2、break 主要用于循环,但也经常出现在switch语句中 功能:直接跳出循环

#include <iostream>
#include "Log.h"

int main()
{
	for (int i = 0; i < 5; i++ )
	{
		if (i > 1)
			break;//i=2时遇到break,循环结束
		Log("Hello World!");
		std::cout << i << std::endl;
	}

	std::cin.get();

运行结果:

 i=2时执行break语句,跳出循环。运行到break时循环就结束。

3、return 直接完全退出函数 函数需要返回值,当输入return上下文(context)自动返回

yoid可以直接用return。如果函数需要返回值,在输入return的时候就必须要提供值。

return是需要一个整数作为返回值的函数


#include <iostream>
#include "Log.h"

int main()
{
	for (int i = 0; i < 5; i++ )
	{
		if (i > 1)
			std::cin.get();//保持输出窗口常开
			return 1;
		Log("Hello World!");
		std::cout << i << std::endl;
	}

	std::cin.get();
}

结果:返回代码为1.

遇到return,自动退出当前函数并返回值,return不用像break和continue那样在循环内使用。return可以被写在任何地方。

控制流语句控制程序的运行,循环、控制流、条件语句本身就是逻辑编程的本质,是用来控制程序运行的工具。

15

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

八、C++中的循环 for while do...while及控制流语句 的相关文章

  • C语言之根据摄氏温度求华氏温度

    求摄氏温度26 C对应的华氏温度 计算公式 xff1a f 61 9 c 5 43 32 xff0c 式中 xff1a c表示摄氏温度 xff0c f表示华氏温度 输入输出示例 xff1a celsius 61 26 fahr 61 78
  • python文件的操作和异常之异常

    异常 xff1a python使用称为异常的特殊类对象来管理程序执行期间发生的错误 xff0c 每当发生让python不知所措的错误时 xff0c 他都会创建一个异常的对象 如果你编写了处理该异常的代码 xff0c 程序将继续进行 xff0
  • Java---抽象类和接口

    抽象类 xff1a 抽象类的基本概念 xff1a 在面向对象的概念中 xff0c 所有的对象都是通过类来描述并创建的 xff0c 但是有一种特殊的类 xff0c 并不能用完整的信息来描述一个具体的对象 xff0c 这样的类就是抽象类 xff
  • 通过基于注解的声明式事务实现事务功能~

    编程式事务 xff1a 事务功能的相关操作全部通过自己编写代码来实现 xff1a span class token class name Connection span conn span class token operator 61 s
  • 《DRM 专栏》| 彻底入门 DRM 驱动

    https cloud tencent com developer article 2021477 前面的 DRM 应用程序系列文章中 xff0c 我们学习了如何使用 libdrm 接口编写 DRM 应用程序 本篇我们将进入一个全新的世界
  • 声明式事务的属性~

    说明 xff1a 本篇文章的代码是基于上篇文章之上的 xff0c 如有需要 xff0c 请移至这篇文章 声明式事务的属性 xff1a 只读 xff0c 超时 xff0c 回滚策略 xff1a 事务属性 xff1a 只读 对一个查询操作来说
  • 配置SpringMVC的前端控制器DispatcherServlet时,<url-pattern>中“/“和“/*“的区别

    span class token comment lt 表示所匹配的请求可以是login或 html或 js或 css方式的请求路径 xff0c 但是 不能匹配 jsp请求路径的请求 xff0c 因此就可以避免在访问jsp页面时 xff0c
  • 解决在idea中构建项目出现不能创建java类,只能创建文件的问题~

    注意 xff1a 一定要根据箭头的指向顺序进行 修改完成 xff0c 如下所示 xff1a
  • 解决在idea中构建项目时,出现的java:错误:不支持发行版本 5

    错误描述 xff0c 如下所示 xff1a 错误原因 xff1a idea中默认配置中有几个地方的jdk版本与实际不一致 解决办法 xff1a 第一步 xff1a 第二步 xff1a 第三步 xff1a 第四步 xff1a 第五步 xff1
  • 【C++】搭建HTTP服务器

    目录 项目介绍 网络协议栈介绍 协议分层 数据的封装与分用 HTTP相关知识介绍 HTTP的特点 URL格式 URI URL URN HTTP的协议格式 HTTP的请求方法 HTTP的状态码 HTTP常见的Header CGI机制介绍 CG
  • vscode 出现“未定义标识符cout”

    1 检查是否有 xff1a include lt iostream gt using namespace std 2 若有 xff0c 可以修改一下vscode的设置 xff1a 将C Cpp intelli Sense Engine的 D
  • FreeRtos.STM32f103c8t6调用vTaskDelay时间不准问题

    1 选择晶振要选择正确 2 内核选择的主频要和实际一致 define configCPU CLOCK HZ unsigned long 72000000 系统主频 define configTICK RATE HZ TickType t 1
  • FreeRtos外部中断使用

    首先是config文件里的宏 ARM Cortex M 架构自身允许最多 256 个不同的优先级 xff08 最多有 8 个 优先级位 xff0c 因此从 0 到 0xff 的优先级都是可能的 xff09 xff0c 但绝大多数使用 ARM
  • MPU-6050资源介绍

    介绍 作用 xff1a 测量三轴加速度和三轴角速度 测三轴加速度 xff1a 加速度计 测三轴角速度 xff1a 陀螺仪 加速度计具有静态稳定性 xff0c 动态不稳定性 陀螺仪具有静态不稳定性 xff0c 动态稳定性 需要互补滤波 xff
  • STM32硬件I2C

    以I2C2为例子 硬件I2C不需要我们手动去翻转电平 首先配置I2C xff1a 配置GPIO xff0c 配置复用功能I2C 配置复用开漏 xff0c 使能I2C I2C起始条件函数 64 param I2Cx where x can b
  • 最简单的 DRM 应用 & drm设备不工作

    https zhuanlan zhihu com p 341895843 https zhuanlan zhihu com p 75321245 编写最简单的 DRM 应用 主程序 xff1a int main int argc char
  • spi通信

    特点 常规四线通信方式 一根片选线 xff0c 一根时钟线 xff0c 两根数据线 xff1a 一根是主进从出线 xff0c 一根主出从入线 同步 xff0c 全双工 xff0c 通信方式 和谁通信就将谁的片选线拉低 xff0c 每增加一个
  • FreeRtos任务通信之消息队列

    入队阻塞 xff1a 往队列写数据时 xff0c 队列满时的阻塞 当阻塞结束时 xff0c 优先级最高的任务优先进入就绪态 xff0c 同 优先级时 xff0c 阻塞时间最长的进入就绪态 出队阻塞 xff1a 读队列时 xff0c 队列为空
  • STM32F103C8T6 ADC功能

    12位逐次逼近型ADC 1us转换时间 输入电压0 3 3v和转化范围0 2 12 1 xff08 0 4095 xff09 成线性关系 2个ADC资源 xff0c ADC1和ADC2 xff0c 10个外部通道 有两种转换单元组 xff1
  • stm32串口实验

    目录 xff08 一 xff09 STM32 串口简介 二 软件设计 xff08 三 xff09 效果 xff1a 1 实现功能 xff1a STM32 通过串口和上位机的对话 xff0c STM32 在收到上位机发过来的字符串后 xff0

随机推荐

  • 基于stm32的GPS解析数据

    目录 1 GPS模块 2 GPS发送的数据格式 3 软件设计 3 1配置好串口 3 2然后写串口中断函数 效果 1 GPS模块 2 GPS发送的数据格式 GPRMC lt 1 gt lt 2 gt lt 3 gt lt 4 gt lt 5
  • 大疆遥控控制M3508电机二(基于HAL库)

    接上一篇文章 xff0c 话不多说直接开始 一 打开我们创建的工程文件 xff0c 先就建立一个文件夹用来存放我们写的子文件 xff08 不建立也行 xff09 xff0c 然后建立pid h xff0c pid c存入我们建立的文件夹中
  • aruco_ros 在相机图像中显示的坐标轴姿态与TF发布的姿态不一致 解决方法

    aruco ros 在相机图像中显示的坐标轴姿态与TF发布的姿态不一致 解决方法 运行环境问题描述解决方案 运行环境 系统版本 xff1a Ubuntu 16 04 ROS版本 xff1a Kinetic 问题描述 在进行手眼标定过程中 x
  • 安装vscode的时候没有勾选快捷方式用vscode打开文件,如何用vscode快速打开文件或者文件夹

    1 需要在注册表里面添加内容可以实现 xff0c 下面有一种简单的方式来完成这个操作 2 需要在电脑桌面新建一个Open File With VS code reg 文件然后用打开文件 xff0c 将以下代码复制 Windows Regis
  • C语言学习笔记->const和define区别

    1 define 是预编译指令 xff0c 而const 是普通变量的定义 define定义的宏是在预处理阶段展开的 xff0c 而const定义的只读变量在编译运行中使用 2 const定义的是变量 xff0c 而define定义的是常量
  • 基于栈、寄存器的优缺点

    基于栈的优点 xff1a 对硬件的依赖不高 xff0c 跨平台性 缺点 xff1a 使用的指令集高基于寄存器的优点 xff1a 相对于栈来说 xff0c 寄存器的性能高 xff0c 使用的指令集少 Java代码执行流程 xff1a java
  • Makefile文件的编写(实例详解)

    1 什么是Makefile xff1f 一个工程中的源文件不计其数 xff0c 其按类型 功能 模块分别放在若干个目录中 xff0c Makefile定义了一系列的规则来指定哪些文件需要先编译 xff0c 哪些文件需要后编译 xff0c 哪
  • 用C语言实现万年历的代码及思路(详细教程)

    万年历程序要求 xff1a 1 当选择1的时候 xff0c 输入年 xff0c 打印输入的这一年12月的日历 2 当选择2的时候 xff0c 输入年 月 xff0c 打印输入这一年这一月的日历 实现效果 xff1a 选择1时 span cl
  • 有符号数和无符号数参与运算时的问题

    陷阱题目 xff1a 下面的代码输出是 xff08 xff09 span class token macro property span class token directive hash span span class token di
  • 【Linux网络编程】基于UDP实现多人聊天室

    文章目录 一 UDP的概念1 1 UDP1 2 UDP特点 二 采用UDP实现多人聊天室原因三 多人聊天室项目功能四 实现多人聊天室项目流程分析4 1 前期准备4 1 1 定义结构体4 1 2 定义链表 4 2 多人聊天室服务器4 2 1
  • 【C++】C向C++的知识过度(上)

    文章目录 一 C与C 43 43 的区别1 1 C是面向过程的1 2 C 43 43 是面向对象的1 3 编译器的区别 二 C与C 43 43 默认代码的不同三 命名空间3 1 关键字 96 namespace 96 去定义自己的名字空间
  • 【C++】四种类型转换 | C++异常处理机制 | C++11新特性之右值引用和移动构造

    文章目录 一 C 43 43 中的四种类型转换1 1 静态类型转换1 1 1 C 43 43 中内置类型的转换1 1 2 C 43 43 中的有继承关系存在的场景下的类型强转 1 2 动态类型转换1 3 常类型转换1 4 解释类型转换 二
  • 【Linux操作系统】进程详解(上)

    文章目录 一 进程的定义二 进程的特征三 进程的组成及其作用四 进程控制块4 1 进程控制块定义4 2 task struct的内容 五 进程与程序的区别六 进程与线程的区别七 进程的种类八 PID8 1 PID定义8 2 特殊PID的进程
  • 【Linux操作系统】进程详解(下)

    文章目录 前言一 父子进程共用光标问题1 1 验证1 2 规避共用光标问题使用多进程拷贝同一个文件 二 进程相关函数2 1 getpid getppid函数2 2 exit exit函数2 3 wait waitpid函数 三 守护进程3
  • git补丁操作(git diff、git format-patch、git apply、git am)

    https blog csdn net qq 42138454 article details 119058431 实际使用补丁用的 xff1a patch p1 lt device nuwa diff 一 打补丁的两种方法 Git 提供了
  • 三、C++ 链接器 linker

    cilinking 从C 43 43 源码到可执行二进制的过程 compile文件之后进行链接 xff0c 找到每个符号 函数的位置 xff0c 并将其链接在一起 每个文件被编译成一个独立的 obj文件作为translation unit
  • 五、C++中的头文件 Header Files

    头文件 Header Files传统上用于声明某些函数类型 xff0c 以便可以用于整个程序中 例如 xff1a 在一个文件1中创建函数 xff0c 然后想在另一个文件2中使用 xff0c 尝试编译此文件2时 xff0c C 43 43 不
  • 六、如何使用VS调试代码、条件语句

    how to use Visual Studio to debug our code 查看程序断点 调试程序 1 设置断点 断点 xff0c 调试器将中断 xff0c break xff0c 程序调试是将会中断 xff0c continue
  • 七、如何设置C++项目 set up C++ project

    Visual Studio设置项目文件目录 组织项目文件 打开Visual Studio Start Page 起始页 xff0c 新建项目 New Project xff0c C 43 43 下的General Empty Project
  • 八、C++中的循环 for while do...while及控制流语句

    xff08 1 xff09 for while do while循环 简单来讲 xff0c 循环就是多次执行同样的代码 例 xff0c 如何输出重复内容多次 xff1a 代码复制多次 xff1b 写个函数调用多次 xff1b 写循环重复执行