当前位置: 首页 > news >正文

C++学习笔记(十一)——循环结构

循环结构的作用
循环结构用于重复执行某一代码块,直到满足特定条件后退出循环。
C++ 提供了以下三种循环结构:

  • for 循环(确定次数的循环)
  • while 循环(条件控制的循环)
  • do-while 循环(至少执行一次的循环)

此外,C++ 还提供了 breakcontinue 语句来控制循环流程。

一、for 循环

作用:
for 循环适用于确定循环次数的情况

语法:

for (初始化; 条件; 更新) {// 循环体
}

注意:

  • 初始化:在for循环开始前执行一次,且仅执行一次(如 int i = 0;)。
  • 条件:每次循环开始前检查,若为 true 则执行循环体,否则终止循环。
  • 更新:每次循环结束后执行(如 i++)。

示例 :计算 1 到 100 的累加和

#include <iostream>
using namespace std;int main() {int sum = 0;for (int i = 1; i <= 100; i++) {sum += i;}cout << "sum = " << sum << endl;system("pause");return 0;
}

二、 while 循环

作用:
while 循环适用于循环次数不确定,但需要根据条件控制循环的情况。

语法:

while (条件) {// 循环体
}

注意:

  • 条件:每次循环开始前检查,若为 true 则执行循环体,否则终止循环。

示例:输入一个正数,直到用户输入 0 或负数 退出

#include <iostream>
using namespace std;int main() {int num;cout << "输入一个正数(输入 0或负数 退出):";cin >> num;while (num > 0) {cout << "你输入的正数是:" << num << endl;cout << "输入一个正数(输入 0或负数 退出):";cin >> num;}system("pause");return 0;
}

三、 do-while 循环

作用:
do-while 循环至少执行一次,然后根据条件决定是否继续循环。

语法:

do {// 循环体
} while (条件);

注意:

  • 先执行一次循环体,然后检查 while 条件,若为 true 则继续循环。

示例:至少执行一次的用户输入

#include <iostream>
using namespace std;int main() {int num;do {cout << "输入一个正数(输入 0或负数 退出):";cin >> num;cout << "你输入的数是:" << num << endl;} while (num > 0);system("pause");return 0;
}

四、三种循环的对比

比较:

循环类型适用场景是否先判断条件是否至少执行一次
for循环次数确定(如遍历数组)
while循环次数不确定,但可能不执行
do-while至少执行一次,然后决定是否继续

示例:

#include <iostream>
using namespace std;int main() {int i = 1;// 输出1~3// for 循环cout << "for循环:";for (i = 1; i <= 3; i++) {cout << i << " ";}cout << endl;// while 循环i = 1;cout << "while循环:";while (i <= 3) {cout << i << " ";i++;}cout << endl;// do-while 循环i = 1;cout << "do-while循环:";do {cout << i << " ";i++;} while (i <= 3);cout << endl;system("pause");return 0;
}

五、 break 语句

作用:
用于提前终止循环

示例:用户输入 0或负数 时终止循环

#include <iostream>
using namespace std;int main() {int num;while (true) {  // 无限循环cout << "输入一个正数(输入 0或负数 退出):";cin >> num;if (num <= 0) {break;  // 终止循环}cout << "你输入的正数是:" << num << endl;}system("pause");return 0;
}

六、 continue 语句

作用:
用于跳过当前循环的剩余部分,直接进入下一次循环

示例:打印 1 到 10,但跳过 5

#include <iostream>
using namespace std;int main() {// 输出1~10,但跳过5for (int i = 1; i <= 10; i++) {if (i == 5) {continue;  // 跳过 5}cout << i << " ";}cout << endl;system("pause");return 0;
}

七、 其他循环

(1)嵌套循环

作用:
循环结构可以嵌套使用,例如输出乘法表

示例:九九乘法表

#include <iostream>
using namespace std;int main() {for (int i = 1; i <= 9; i++) {for (int j = 1; j <= i; j++) {cout << j << " × " << i << " = " << i * j << "\t";}cout << endl;}system("pause");return 0;
}

(2)无限循环

作用:
循环条件始终为 true,则进入无限循环

示例:for 实现无限循环

#include <iostream>
using namespace std;int main() {for (;;) // 等价于 while(true){cout << "无限循环..." << endl;}system("pause");return 0;
}

与以下代码等价:

#include <iostream>
using namespace std;int main() {while (true) {cout << "无限循环..." << endl;}system("pause");return 0;
}

相关文章:

C++学习笔记(十一)——循环结构

循环结构的作用 循环结构用于重复执行某一代码块&#xff0c;直到满足特定条件后退出循环。 C 提供了以下三种循环结构&#xff1a; for 循环&#xff08;确定次数的循环&#xff09;while 循环&#xff08;条件控制的循环&#xff09;do-while 循环&#xff08;至少执行一次的…...

【C++】二叉树相关算法题

一、根据二叉树创建字符串 题目描述&#xff1a; 给你二叉树的根节点 root &#xff0c;请你采用前序遍历的方式&#xff0c;将二叉树转化为一个由括号和整数组成的字符串&#xff0c;返回构造出的字符串。 空节点使用一对空括号对 “()” 表示&#xff0c;转化后需要省略所有…...

物联网IoT系列之MQTT协议基础知识

文章目录 物联网IoT系列之MQTT协议基础知识物联网IoT是什么&#xff1f;什么是MQTT&#xff1f;为什么说MQTT是适用于物联网的协议&#xff1f;MQTT工作原理核心组件核心机制 MQTT工作流程1. 建立连接2. 发布和订阅3. 消息确认4. 断开连接 MQTT工作流程图MQTT在物联网中的应用 …...

【大学生体质】智能 AI 旅游推荐平台(Vue+SpringBoot3)-完整部署教程

智能 AI 旅游推荐平台开源文档 项目前端地址 ☀️项目介绍 智能 AI 旅游推荐平台&#xff08;Intelligent AI Travel Recommendation Platform&#xff09;是一个利用 AI 模型和数据分析为用户提供个性化旅游路线推荐、景点评分、旅游攻略分享等功能的综合性系统。该系统融合…...

【Node.js入门笔记1---初始Node.js)】

Node.js入门笔记1 初始Node.js1.Node.js简介2.Node.js中js的运行环境3.Node.js 可以做什么4.Node.js 怎么学 初始Node.js 1.Node.js简介 Node.js 是一个基于 Chrome V8 引擎 的 JavaScript 运行时环境&#xff0c;用于在服务器端运行 JavaScript 代码。它让开发者可以用 Java…...

自学Java-JavaSE基础加强(多线程)

自学Java-JavaSE基础加强&#xff08;多线程&#xff09; 一、创建线程1、方式一&#xff1a;继承Thread类小结 2、方式二&#xff1a;实现Runnable接口小结 3、方式三&#xff1a;实现Callable接口4、小结 二、线程的常用方法三、线程安全1、认识线程安全2、模拟线程安全问题3…...

数字后端培训实战项目六大典型后端实现案例

Q1:请教一个问题&#xff0c;cts.sdc和func.sdc在innovus用如何切换&#xff1f;在flow哪一步切换输入cts.sdc&#xff1f;哪一步切换到func.sdc&#xff0c;具体如何操作&#xff1f; 这个学员其实就是在问使用分段长clock tree时具体的flow流程是怎么样的&#xff1f;针对时…...

安卓免费多功能工具:一站式解决 PDF 阅读、编辑、转换等需求

软件介绍 今天要给大家介绍一款功能强大的PDF处理软件——PDFgear Android版。它是专为安卓设备打造的&#xff0c;完全免费&#xff0c;无需破解和激活就能使用。 此前&#xff0c;我们分享过它的桌面端&#xff0c;收获了大家的一致好评。今天要着重介绍的手机APP版本&…...

diffuser库使用本地模型生成图像

实验目的 使用diffuser库生成图像的文章是很多的&#xff0c;使用方法也并不复杂&#xff0c;安装库后调用现成的模型和接口即可&#xff0c;但是因为网络原因&#xff0c;模型下载总会遇到问题&#xff0c;对于使用服务器的研究者来说&#xff0c;挂梯子并不可行&#xff0c;…...

递归—基础算法

#基线条件和递归条件 #每个递归函数都有两部分&#xff1a;基线条件和递归条件。递归条件指的是函数调用自己&#xff0c;而基线条件则指的是函数不再调用自己&#xff0c;从而避免形成无限循环。 #栈&#xff1a;栈是一种数据结构&#xff0c;它是一种线性数据结构&#xff0c…...

全面复习回顾——C++语法篇2

23、字符串相加 string s3;s3s1s2;cout<<s3; 24、结构体基本操作 struct student {// write your code here......string name;int age;double height0.0; };int main() {// write your code here......student s;cin>>s.name;cin>>s.age;cin>>s.hei…...

探秘基带算法:从原理到5G时代的通信变革【十】基带算法应用与对比

文章目录 三、算法在现代通信系统中的应用3.1 5G 通信中的应用3.1.1 信道编码与调制解调3.1.2 大规模 MIMO 技术3.1.3 案例分析&#xff1a;5G 基站与终端实现 3.2 卫星通信中的应用3.2.1 抗干扰与纠错编码3.2.2 信号处理与调制解调3.2.3 案例分析&#xff1a;卫星通信系统实例…...

Linux | Vim 鼠标不能右键粘贴、跨系统复制粘贴

注&#xff1a;本文为 “ Vim 中鼠标右键粘贴、跨系统复制粘贴问题解决方案” 相关文章合辑。 未整理去重。 Linux 入门&#xff1a;vim 鼠标不能右键粘贴、跨系统复制粘贴 foryouslgme 发布时间 2016 - 09 - 28 10:24:16 Vim 基础 命令模式&#xff08;command - mode&…...

无人机遥控器扩频技术解析!

一、扩频技术基本原理 扩频技术&#xff08;Spread Spectrum, SS&#xff09;通过将信号的频谱扩展至远大于原始带宽进行传输&#xff0c;提升抗干扰性、隐蔽性和多用户能力。其核心原理包括&#xff1a; 直接序列扩频&#xff08;DSSS&#xff09; 利用高速伪随机码&#x…...

Spring Boot API 项目中 HAProxy 与 Nginx 的选择与实践

在开发 Spring Boot 构建的 RESTful API 项目时&#xff0c;负载均衡和反向代理是提升性能与可用性的关键环节。HAProxy 和 Nginx 作为两种流行的工具&#xff0c;经常被用于流量分发&#xff0c;但它们各有侧重。究竟哪一个更适合你的 Spring Boot API 项目&#xff1f;本文将…...

OpenBMC:BmcWeb构造connect对象

OpenBMC:BmcWeb server.run-CSDN博客 server在接收了tcp连接请求后,会构造一个ConnectionType对象,然后通过post调度,运行该对象的start函数 1.ConnectionType类型 其实也就是using ConnectionType = Connection<Adaptor, Handler>;类型 由于ConnectionType实例化于…...

ORB-SLAM2源码学习(六):相机跟踪(局部地图跟踪和关键帧创建)

目录 1.局部地图跟踪 1.1 更新局部关键帧UpdateLocalKeyFrames 1.2 更新局部地图点&#xff08;来自局部关键帧&#xff09;UpdateLocalPoints() 1.3 投影匹配 2. 对比四种跟踪方式以及使用的投影匹配 3.关键帧创建 3.1 判断是否需要创建新关键帧: NeedNewKeyFrame() 3…...

WordPress使用(3)

前面文章讲述了如何利用docker进行wordpress系统的安装及相关设置&#xff0c;本文将介绍如何进行站点数据和数据库数据的备份。 1. 备份数据库 # 进入mysql容器内部 docker exec -it mysqlwp bash# 使用mysqldump 命令导出数据库 mysqldump -u root -p wordpress > wordp…...

Docker基础篇——什么是Docker与Docker的仓库、镜像、容器三大概念

大家好我是木木&#xff0c;在当今快速发展的云计算与云原生时代&#xff0c;容器化技术蓬勃兴起&#xff0c;Docker 作为实现容器化的主流工具之一&#xff0c;为开发者和运维人员带来了极大的便捷 。下面我们一起了解下什么是Docker与与Docker的仓库、镜像、容器三大概念。 …...

Gitlab配置personal access token

1.点击左上角个人账号 -> Preferences 2. 点击左边栏 Access Tokens 3. 点击Add new token &#xff0c;输入token名称&#xff0c;勾选权限&#xff08;注意截至日期 “Expiration date” 可不填&#xff09; 4. 创建成功后&#xff0c;显示token信息&#xff0c;复制到本地…...

不用公网IP!用cpolar内网穿透实现PicHome多设备同步的3种方案对比

零公网IP实现PicHome多端同步&#xff1a;cpolar内网穿透全方案解析 在数字资产爆炸式增长的今天&#xff0c;如何安全高效地管理个人媒体库成为现代人的刚需。PicHome作为一款开源网盘系统&#xff0c;凭借其Docker化部署的便捷性和AI增强的媒体管理能力&#xff0c;正在成为家…...

Arduino库管理终极指南:在VS Code中如何优雅添加自定义头文件(避坑版)

Arduino库管理终极指南&#xff1a;在VS Code中优雅添加自定义头文件 第一次在VS Code里看到"fatal error: my_library.h: No such file or directory"的红色报错时&#xff0c;我盯着屏幕发了五分钟呆。作为从Arduino IDE转战VS Code的老玩家&#xff0c;本以为能无…...

RPCS3终极指南:在电脑上完美运行PS3游戏的完整教程

RPCS3终极指南&#xff1a;在电脑上完美运行PS3游戏的完整教程 【免费下载链接】rpcs3 PS3 emulator/debugger 项目地址: https://gitcode.com/GitHub_Trending/rp/rpcs3 还在为无法重温经典PS3游戏而烦恼吗&#xff1f;RPCS3作为全球领先的免费开源PlayStation 3模拟器…...

OpenClaw任务监控方案:Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF长链条任务管理技巧

OpenClaw任务监控方案&#xff1a;Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF长链条任务管理技巧 1. 为什么需要长链条任务监控 去年冬天&#xff0c;当我第一次用OpenClaw执行一个包含12个步骤的自动化流程时&#xff0c;系统在凌晨3点卡在了第7步——模型因为To…...

跨平台OCR新利器:PP-OCRv5模型转ONNX实战指南,轻松应对多语言识别挑战

1. 为什么需要跨平台OCR解决方案 在日常工作和生活中&#xff0c;我们经常会遇到需要处理多语言文档的场景。比如收到一份包含中文、英文和日文的合同&#xff0c;或者需要从产品包装上识别不同语言的说明文字。传统OCR方案往往需要针对不同语言训练多个模型&#xff0c;不仅部…...

EverythingPowerToys正则表达式搜索:解锁精准文件匹配的强大功能

EverythingPowerToys正则表达式搜索&#xff1a;解锁精准文件匹配的强大功能 【免费下载链接】EverythingPowerToys Everything search plugin for PowerToys Run 项目地址: https://gitcode.com/gh_mirrors/ev/EverythingPowerToys EverythingPowerToys是一款专为Power…...

Youtu-VL-4B-Instruct基础教程:system message规范写法避免API响应异常

Youtu-VL-4B-Instruct基础教程&#xff1a;system message规范写法避免API响应异常 你是不是在用Youtu-VL-4B-Instruct的API时&#xff0c;偶尔会遇到一些奇怪的响应&#xff1f;比如模型突然不按套路出牌&#xff0c;或者干脆给你返回一些看不懂的内容&#xff1f; 别担心&a…...

【数字逻辑】实战解析:从PLD到FPGA的演进与应用场景

1. 可编程逻辑器件的技术演进之路 第一次接触可编程逻辑器件是在大学实验室里&#xff0c;当时看着老师用一个小芯片就实现了整个数字钟的功能&#xff0c;完全颠覆了我对传统电路板的认知。这种"魔术般"的芯片就是PLD&#xff08;可编程逻辑器件&#xff09;&#…...

二手破损手机涨价,业余 NAS 玩家如何破局?

最近打开手机回收 App&#xff0c;发现家里那台屏幕碎成渣、开不了机的旧安卓机&#xff0c;居然能卖一百多&#xff0c;甚至两三百。你可能会想&#xff1a;这是天上掉馅饼&#xff0c;还是 NAS 玩家的“矿难”前兆&#xff1f; 作为一名业余 NAS 玩家&#xff0c;我正好踩在这…...

网络电台个性化高效管理:foobox-cn技术实现与应用指南

网络电台个性化高效管理&#xff1a;foobox-cn技术实现与应用指南 【免费下载链接】foobox-cn DUI 配置 for foobar2000 项目地址: https://gitcode.com/GitHub_Trending/fo/foobox-cn foobox-cn作为foobar2000的DUI配置方案&#xff0c;通过创新的电台管理系统架构&…...