C++重新入门-循环

目录

1.循环类型

while循环:

for循环

基于范围的for循环(C++11)

do...while 循环

2.循环控制语句

3.无限循环


有的时候,可能需要多次执行同一块代码。一般情况下,语句是顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推。

编程语言提供了允许更为复杂的执行路径的多种控制结构。

循环语句允许我们多次执行一个语句或语句组,下面是大多数编程语言中循环语句的一般形式:

1.循环类型

C++ 编程语言提供了以下几种循环类型。

while循环:

在C++中,while 循环是一种常见的控制流结构,用于重复执行一段代码,直到给定的条件为假为止。while 循环的语法如下:

while (condition) {// 在条件为真时执行的代码块
}

condition 是一个表达式,它会在每次循环迭代开始时被求值。只要 condition 的值为真(非零),循环中的代码块就会被执行。一旦 condition 的值为假(0),循环将终止,控制流将跳到循环之后的代码。

下面是一个简单的示例,展示了 while 循环的基本用法:

#include <iostream>int main() {int count = 0;while (count < 5) {std::cout << "Count: " << count << std::endl;count++;}std::cout << "Loop finished." << std::endl;return 0;
}

在这个示例中,while 循环重复执行了一个打印语句,直到 count 的值达到 5 为止。每次循环迭代时,count 的值都会增加,直到达到终止条件。

需要注意的是,如果 condition 初始值为假,循环中的代码块将不会被执行,例如:

#include <iostream>int main() {int count = 10;while (count < 5) {std::cout << "This won't be printed." << std::endl;count++;}std::cout << "Loop finished." << std::endl;return 0;
}

在这个示例中,count 的初始值为 10,因此 while 循环的条件 count < 5 为假,循环中的代码块不会执行,直接跳到循环之后的代码。

需要谨慎避免进入无限循环,即循环条件永远为真的情况,这将导致程序陷入无限循环中,永远无法终止。

for循环

for 循环是C++中另一种常见的循环结构,通常用于迭代固定次数的循环或者遍历容器等数据结构。for 循环的语法如下:

for (initialization; condition; update) {// 在条件为真时执行的代码块
}

其中:

  • initialization:循环开始前的初始化表达式,通常用于初始化计数器或声明迭代变量。
  • condition:循环迭代的条件表达式,类似于 while 循环的条件部分。
  • update:循环迭代后更新迭代变量的表达式。

 

for 循环会按照以下步骤执行:

  1. 执行 initialization 部分,通常用于初始化循环计数器或者迭代变量。
  2. 检查 condition 是否为真。如果为真,则执行循环中的代码块,然后执行 update 部分。
  3. 重复步骤2,直到 condition 为假,然后退出循环,执行循环后的代码。

下面是一个简单的示例,展示了 for 循环的基本用法:

#include <iostream>int main() {for (int i = 0; i < 5; i++) {std::cout << "Count: " << i << std::endl;}std::cout << "Loop finished." << std::endl;return 0;
}

在这个示例中,for 循环用于迭代从0到4的5个整数,并在每次迭代中打印当前的计数器值。循环终止条件是 i < 5,每次迭代后 i 的值会递增。

while 循环一样,for 循环也需要谨慎避免进入无限循环,确保循环条件能够在某个时刻变为假。

基于范围的for循环(C++11)

基于范围的 for 循环是 C++11 引入的一种循环结构,用于遍历容器中的元素或者其他可迭代对象的元素,语法简洁易读。使用基于范围的 for 循环可以更加方便地遍历数组、容器、字符串等数据结构,而不必关心索引或迭代器的细节。

基于范围的 for 循环的语法如下:

for (declaration : range) {// 在每次迭代中使用当前元素的代码
}

其中:

  • declaration:用于声明迭代变量的语句,通常是对应容器中元素类型的引用或者值的拷贝。
  • range:要遍历的范围,可以是数组、容器、字符串等。

 下面是一个简单的示例,展示了基于范围的 for 循环的用法:

#include <iostream>
#include <vector>int main() {std::vector<int> numbers = {1, 2, 3, 4, 5};// 使用基于范围的for循环遍历vector中的元素for (int num : numbers) {std::cout << num << " ";}std::cout << std::endl;std::string message = "Hello";// 使用基于范围的for循环遍历字符串中的字符for (char ch : message) {std::cout << ch << " ";}std::cout << std::endl;return 0;
}

在这个示例中,首先使用基于范围的 for 循环遍历了一个整型向量 numbers 中的元素,并打印每个元素的值。然后,使用相同的方法遍历了一个字符串 message 中的字符,并打印出来。

基于范围的 for 循环可以使代码更加简洁、清晰,并且避免了手动处理索引或迭代器的麻烦。

do...while 循环

do...while 循环是C++中的一种循环结构,与 while 循环类似,但在判断循环条件之前,先执行一次循环体。这意味着 do...while 循环至少会执行一次循环体,即使循环条件一开始就为假。

do...while 循环的语法如下:

do {// 循环体
} while (condition);

其中:

  • condition:循环条件,类似于 while 循环中的条件表达式。

下面是一个简单的示例,展示了 do...while 循环的用法:

#include <iostream>int main() {int count = 0;do {std::cout << "Count: " << count << std::endl;count++;} while (count < 5);std::cout << "Loop finished." << std::endl;return 0;
}

在这个示例中,do...while 循环会至少执行一次循环体,即使 count 的初始值大于或等于 5。循环体内部的 count++ 语句使得 count 每次循环迭代时增加,直到达到循环条件 count < 5 不成立为止。

需要注意的是,尽管 do...while 循环会至少执行一次循环体,但在编写代码时仍然需要谨慎考虑循环的逻辑,确保循环条件的正确性,以避免不必要的循环执行。

2.循环控制语句

循环控制语句是用于在循环执行过程中改变控制流程的语句。在C++中,有三种主要的循环控制语句:breakcontinuegoto

 breakbreak 语句用于立即终止循环,并跳出循环体。当执行 break 时,循环执行会立即停止,控制流将跳到循环之后的代码。

for (int i = 0; i < 10; i++) {if (i == 5) {break; // 当 i == 5 时,终止循环}std::cout << i << " ";
}

 

 continuecontinue 语句用于跳过当前循环迭代的剩余部分,立即进入下一次迭代。执行 continue 时,当前迭代中 continue 语句之后的代码将不再执行,直接进行下一次循环迭代。

for (int i = 0; i < 5; i++) {if (i == 2) {continue; // 当 i == 2 时,跳过本次迭代}std::cout << i << " ";
}

 

 gotogoto 语句允许直接跳转到程序中的标签位置。尽管 goto 语句在大多数情况下应该避免使用,因为它容易导致程序难以理解和维护,但在某些特殊情况下,它可能是一种有效的控制流程工具。

for (int i = 0; i < 5; i++) {if (i == 3) {goto endLoop; // 当 i == 3 时,跳转到标签 endLoop 处}std::cout << i << " ";
}
endLoop:
std::cout << "End of loop." << std::endl;

 3.无限循环

如果条件永远不为假,则循环将变成无限循环。for 循环在传统意义上可用于实现无限循环。由于构成循环的三个表达式中任何一个都不是必需的,您可以将某些条件表达式留空来构成一个无限循环。

#include <iostream>
using namespace std;int main ()
{for( ; ; ){printf("This loop will run forever.\n");}return 0;
}

当条件表达式不存在时,它被假设为真。您也可以设置一个初始值和增量表达式,但是一般情况下,C++ 程序员偏向于使用 for(;;) 结构来表示一个无限循环。 

注意:您可以按 Ctrl + C 键终止一个无限循环。

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

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

相关文章

【洛谷 P1208】[USACO1.3] 混合牛奶 Mixing Milk 题解(贪心算法+向量+结构体排序)

[USACO1.3] 混合牛奶 Mixing Milk 题目描述 由于乳制品产业利润很低&#xff0c;所以降低原材料&#xff08;牛奶&#xff09;价格就变得十分重要。帮助 Marry 乳业找到最优的牛奶采购方案。 Marry 乳业从一些奶农手中采购牛奶&#xff0c;并且每一位奶农为乳制品加工企业提…

AI:126-基于深度学习的人体情绪识别与分析

🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带有在本地跑过的关键代码,详细讲解供…

react函数组件中使用context

效果 1.在父组件中创建一个createcontext并将他导出 import React, { createContext } from react import Bpp from ./Bpp import Cpp from ./Cpp export let MyContext createContext(我是组件B) export let Ccontext createContext(我是组件C)export default function App…

使用client-only 解决组件不兼容SSR问题

目录 前言 一、解决方案 1.基于Nuxt 框架的SSR应用 2.基于vue2框架的应用 3.基于vue3框架的应用 二、总结 往期回顾 前言 最近在我的单页面SSR应用上开发JSON编辑器功能&#xff0c;在引入组件后直接客户端跳转OK&#xff0c;但是在直接加载服务端渲染的时候一直报这…

JavaScript基础第五天

JavaScript 基础第五天 今天我们学习数组&#xff0c;以及数组的增删改查。 1. 数组 数组&#xff1a;(Array)是一种可以按顺序保存数据的数据类型。 1.1. 定义数组 可以使用 const 声明一个方括号**[ ]&#xff0c;或者使用new Array**创建数组。 const array [1, 2, 4…

Netty应用(六) 之 异步 Channel

目录 12.Netty异步的相关概念 12.1 异步编程的概念 12.2 方式1&#xff1a;主线程阻塞&#xff0c;等待异步线程完成调用&#xff0c;然后主线程发起请求IO 12.3 方式2&#xff1a;主线程注册异步线程&#xff0c;异步线程去回调发起请求IO 12.4 细节注释 12.5 异步的好处…

HiveSQL——用户行为路径分析

注&#xff1a;参考文档&#xff1a; SQL之用户行为路径分析--HQL面试题46【拼多多面试题】_路径分析 sql-CSDN博客文章浏览阅读2k次&#xff0c;点赞6次&#xff0c;收藏19次。目录0 问题描述1 数据分析2 小结0 问题描述已知用户行为表 tracking_log&#xff0c; 大概字段有&…

Rust条件语句:if-else表达式详解

在Rust中&#xff0c;条件语句是控制程序流程的重要组成部分。if-else表达式是一种用于根据条件执行不同代码分支的强大工具。本篇博客将深入介绍Rust中的if-else表达式&#xff0c;并通过具体的例子展示其用法和灵活性。 基础用法 fn main() {let number 31;if number <…

多进程服务器和多线程服务器

多进程服务器 #include<myhead.h> #define PORT 9999 //端口号 #define IP "192.168.10.116" //IP地址//定义信号处理函数&#xff0c;用于回收僵尸进程 void handler(int signo) {if(signo SIGCHLD){while(waitpid(-1, NULL, WNOHA…

【MySQL】-20 MySQL综合-6(MySQL创建数据表+MySQL修改数据表+MySQL删除数据表)

MySQL创建数据表MySQL修改数据表MySQL删除数据表 MySQL创建数据表基本语法在指定的数据库中创建表查看表结构 MySQL修改数据表基本语法添加字段修改字段数据类型删除字段修改字段名称修改表名 MySQL删除数据表基本语法删除表 MySQL创建数据表 在创建数据库之后&#xff0c;接下…

2.12作业

程序代码&#xff1a; #include<stdlib.h> #include<string.h> #include<stdio.h>//递归实现n! int n(int element) {if(0element)return 1;return element*n(element-1); }//递归实现0-n的和 int sub_sum(int element) {if(0element)return 0;return eleme…

计算机二级C语言备考学习记录

一、C语言程序的结构 1.程序的构成&#xff0c;main函数和其他函数。 程序是由main函数和其他函数构成main作为主函数&#xff0c;一个C程序里只有一个main函数其他函数可以分为系统函数和用户函数&#xff0c;系统函数为编译系统提供&#xff0c;用户函数由用户自行编写 2.…

《动手学深度学习(PyTorch版)》笔记7.7

注&#xff1a;书中对代码的讲解并不详细&#xff0c;本文对很多细节做了详细注释。另外&#xff0c;书上的源代码是在Jupyter Notebook上运行的&#xff0c;较为分散&#xff0c;本文将代码集中起来&#xff0c;并加以完善&#xff0c;全部用vscode在python 3.9.18下测试通过&…

力扣刷题之旅:高阶篇(一)—— 并查集的应用

在算法的世界中&#xff0c;并查集是一种非常高效且实用的数据结构&#xff0c;常用于处理一些具有连通性质的问题。在力扣&#xff08;LeetCode&#xff09;上&#xff0c;并查集的题目往往涉及到图的连通性、朋友关系的传递性等问题。今天&#xff0c;我们将一起探讨一道关于…

重温阿里云宝塔面板部署前后端项目

首先祝大家新年快乐啊&#xff01; 回到老家&#xff0c;便打算趁这一段空闲时间提升一下自己&#xff0c;重点是学习实践一下echarts相关内容&#xff0c;很多公司项目都需要实现可视化&#xff0c;所以在bilibili上找了黑马的一个教程开始学习&#xff0c;不同的是&#xff…

【JavaScript】遍历对象和数组

文章目录 1. 遍历对象for...in 循环Object.keys()Object.entries() 2. 遍历数组for 循环forEach()for...of 循环 3. 遍历多维数组4. 总结 在 JavaScript 中&#xff0c; 遍历是一种常见的操作&#xff0c;用于访问对象和数组中的元素。本篇博客将将介绍 JavaScript 中遍历对象…

JavaScript进阶教程 - 纯函数和不可变性

在函数式编程范式中&#xff0c;纯函数和不可变性是核心概念&#xff0c;它们有助于编写可预测、易于测试和并发安全的代码。 纯函数&#xff08;Pure Functions&#xff09; 纯函数是这样一种函数&#xff1a;给定相同的输入&#xff0c;总是返回相同的输出&#xff0c;并且…

面试 JavaScript 框架八股文十问十答第九期

面试 JavaScript 框架八股文十问十答第九期 作者&#xff1a;程序员小白条&#xff0c;个人博客 相信看了本文后&#xff0c;对你的面试是有一定帮助的&#xff01;关注专栏后就能收到持续更新&#xff01; ⭐点赞⭐收藏⭐不迷路&#xff01;⭐ 1&#xff09;对象创建的方式有…

Rust标量类型详解

在Rust中&#xff0c;数据类型分为标量类型和复合类型。本篇博客将重点介绍Rust的标量类型&#xff0c;其中包括整数类型、浮点类型、布尔类型以及字符类型。 整数类型 Rust提供了多种整数类型&#xff0c;分为带符号整数和无符号整数。带符号整数表示可以为正数、零或负数&a…

电子电器架构 —— 区域控制器是未来架构的正解吗?

电子电器架构 —— 区域控制器是未来架构的正解吗? 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师(Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 本就是小人物,输了就是输了,不要在意别人怎么看自己。江湖一碗茶…