C++学习笔记(十一)——循环结构
循环结构的作用
循环结构用于重复执行某一代码块,直到满足特定条件后退出循环。
C++ 提供了以下三种循环结构:
for循环(确定次数的循环)while循环(条件控制的循环)do-while循环(至少执行一次的循环)
此外,C++ 还提供了 break 和 continue 语句来控制循环流程。
一、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++学习笔记(十一)——循环结构
循环结构的作用 循环结构用于重复执行某一代码块,直到满足特定条件后退出循环。 C 提供了以下三种循环结构: for 循环(确定次数的循环)while 循环(条件控制的循环)do-while 循环(至少执行一次的…...
【C++】二叉树相关算法题
一、根据二叉树创建字符串 题目描述: 给你二叉树的根节点 root ,请你采用前序遍历的方式,将二叉树转化为一个由括号和整数组成的字符串,返回构造出的字符串。 空节点使用一对空括号对 “()” 表示,转化后需要省略所有…...
物联网IoT系列之MQTT协议基础知识
文章目录 物联网IoT系列之MQTT协议基础知识物联网IoT是什么?什么是MQTT?为什么说MQTT是适用于物联网的协议?MQTT工作原理核心组件核心机制 MQTT工作流程1. 建立连接2. 发布和订阅3. 消息确认4. 断开连接 MQTT工作流程图MQTT在物联网中的应用 …...
【大学生体质】智能 AI 旅游推荐平台(Vue+SpringBoot3)-完整部署教程
智能 AI 旅游推荐平台开源文档 项目前端地址 ☀️项目介绍 智能 AI 旅游推荐平台(Intelligent AI Travel Recommendation Platform)是一个利用 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 运行时环境,用于在服务器端运行 JavaScript 代码。它让开发者可以用 Java…...
自学Java-JavaSE基础加强(多线程)
自学Java-JavaSE基础加强(多线程) 一、创建线程1、方式一:继承Thread类小结 2、方式二:实现Runnable接口小结 3、方式三:实现Callable接口4、小结 二、线程的常用方法三、线程安全1、认识线程安全2、模拟线程安全问题3…...
数字后端培训实战项目六大典型后端实现案例
Q1:请教一个问题,cts.sdc和func.sdc在innovus用如何切换?在flow哪一步切换输入cts.sdc?哪一步切换到func.sdc,具体如何操作? 这个学员其实就是在问使用分段长clock tree时具体的flow流程是怎么样的?针对时…...
安卓免费多功能工具:一站式解决 PDF 阅读、编辑、转换等需求
软件介绍 今天要给大家介绍一款功能强大的PDF处理软件——PDFgear Android版。它是专为安卓设备打造的,完全免费,无需破解和激活就能使用。 此前,我们分享过它的桌面端,收获了大家的一致好评。今天要着重介绍的手机APP版本&…...
diffuser库使用本地模型生成图像
实验目的 使用diffuser库生成图像的文章是很多的,使用方法也并不复杂,安装库后调用现成的模型和接口即可,但是因为网络原因,模型下载总会遇到问题,对于使用服务器的研究者来说,挂梯子并不可行,…...
递归—基础算法
#基线条件和递归条件 #每个递归函数都有两部分:基线条件和递归条件。递归条件指的是函数调用自己,而基线条件则指的是函数不再调用自己,从而避免形成无限循环。 #栈:栈是一种数据结构,它是一种线性数据结构,…...
全面复习回顾——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 案例分析:5G 基站与终端实现 3.2 卫星通信中的应用3.2.1 抗干扰与纠错编码3.2.2 信号处理与调制解调3.2.3 案例分析:卫星通信系统实例…...
Linux | Vim 鼠标不能右键粘贴、跨系统复制粘贴
注:本文为 “ Vim 中鼠标右键粘贴、跨系统复制粘贴问题解决方案” 相关文章合辑。 未整理去重。 Linux 入门:vim 鼠标不能右键粘贴、跨系统复制粘贴 foryouslgme 发布时间 2016 - 09 - 28 10:24:16 Vim 基础 命令模式(command - mode&…...
无人机遥控器扩频技术解析!
一、扩频技术基本原理 扩频技术(Spread Spectrum, SS)通过将信号的频谱扩展至远大于原始带宽进行传输,提升抗干扰性、隐蔽性和多用户能力。其核心原理包括: 直接序列扩频(DSSS) 利用高速伪随机码&#x…...
Spring Boot API 项目中 HAProxy 与 Nginx 的选择与实践
在开发 Spring Boot 构建的 RESTful API 项目时,负载均衡和反向代理是提升性能与可用性的关键环节。HAProxy 和 Nginx 作为两种流行的工具,经常被用于流量分发,但它们各有侧重。究竟哪一个更适合你的 Spring Boot API 项目?本文将…...
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 更新局部地图点(来自局部关键帧)UpdateLocalPoints() 1.3 投影匹配 2. 对比四种跟踪方式以及使用的投影匹配 3.关键帧创建 3.1 判断是否需要创建新关键帧: NeedNewKeyFrame() 3…...
WordPress使用(3)
前面文章讲述了如何利用docker进行wordpress系统的安装及相关设置,本文将介绍如何进行站点数据和数据库数据的备份。 1. 备份数据库 # 进入mysql容器内部 docker exec -it mysqlwp bash# 使用mysqldump 命令导出数据库 mysqldump -u root -p wordpress > wordp…...
Docker基础篇——什么是Docker与Docker的仓库、镜像、容器三大概念
大家好我是木木,在当今快速发展的云计算与云原生时代,容器化技术蓬勃兴起,Docker 作为实现容器化的主流工具之一,为开发者和运维人员带来了极大的便捷 。下面我们一起了解下什么是Docker与与Docker的仓库、镜像、容器三大概念。 …...
Gitlab配置personal access token
1.点击左上角个人账号 -> Preferences 2. 点击左边栏 Access Tokens 3. 点击Add new token ,输入token名称,勾选权限(注意截至日期 “Expiration date” 可不填) 4. 创建成功后,显示token信息,复制到本地…...
不用公网IP!用cpolar内网穿透实现PicHome多设备同步的3种方案对比
零公网IP实现PicHome多端同步:cpolar内网穿透全方案解析 在数字资产爆炸式增长的今天,如何安全高效地管理个人媒体库成为现代人的刚需。PicHome作为一款开源网盘系统,凭借其Docker化部署的便捷性和AI增强的媒体管理能力,正在成为家…...
Arduino库管理终极指南:在VS Code中如何优雅添加自定义头文件(避坑版)
Arduino库管理终极指南:在VS Code中优雅添加自定义头文件 第一次在VS Code里看到"fatal error: my_library.h: No such file or directory"的红色报错时,我盯着屏幕发了五分钟呆。作为从Arduino IDE转战VS Code的老玩家,本以为能无…...
RPCS3终极指南:在电脑上完美运行PS3游戏的完整教程
RPCS3终极指南:在电脑上完美运行PS3游戏的完整教程 【免费下载链接】rpcs3 PS3 emulator/debugger 项目地址: https://gitcode.com/GitHub_Trending/rp/rpcs3 还在为无法重温经典PS3游戏而烦恼吗?RPCS3作为全球领先的免费开源PlayStation 3模拟器…...
OpenClaw任务监控方案:Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF长链条任务管理技巧
OpenClaw任务监控方案:Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF长链条任务管理技巧 1. 为什么需要长链条任务监控 去年冬天,当我第一次用OpenClaw执行一个包含12个步骤的自动化流程时,系统在凌晨3点卡在了第7步——模型因为To…...
跨平台OCR新利器:PP-OCRv5模型转ONNX实战指南,轻松应对多语言识别挑战
1. 为什么需要跨平台OCR解决方案 在日常工作和生活中,我们经常会遇到需要处理多语言文档的场景。比如收到一份包含中文、英文和日文的合同,或者需要从产品包装上识别不同语言的说明文字。传统OCR方案往往需要针对不同语言训练多个模型,不仅部…...
EverythingPowerToys正则表达式搜索:解锁精准文件匹配的强大功能
EverythingPowerToys正则表达式搜索:解锁精准文件匹配的强大功能 【免费下载链接】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基础教程:system message规范写法避免API响应异常 你是不是在用Youtu-VL-4B-Instruct的API时,偶尔会遇到一些奇怪的响应?比如模型突然不按套路出牌,或者干脆给你返回一些看不懂的内容? 别担心&a…...
【数字逻辑】实战解析:从PLD到FPGA的演进与应用场景
1. 可编程逻辑器件的技术演进之路 第一次接触可编程逻辑器件是在大学实验室里,当时看着老师用一个小芯片就实现了整个数字钟的功能,完全颠覆了我对传统电路板的认知。这种"魔术般"的芯片就是PLD(可编程逻辑器件)&#…...
二手破损手机涨价,业余 NAS 玩家如何破局?
最近打开手机回收 App,发现家里那台屏幕碎成渣、开不了机的旧安卓机,居然能卖一百多,甚至两三百。你可能会想:这是天上掉馅饼,还是 NAS 玩家的“矿难”前兆? 作为一名业余 NAS 玩家,我正好踩在这…...
网络电台个性化高效管理:foobox-cn技术实现与应用指南
网络电台个性化高效管理:foobox-cn技术实现与应用指南 【免费下载链接】foobox-cn DUI 配置 for foobar2000 项目地址: https://gitcode.com/GitHub_Trending/fo/foobox-cn foobox-cn作为foobar2000的DUI配置方案,通过创新的电台管理系统架构&…...
