#创作计划# C++循环详解
2025-07-11 09:27:21
发布于:福建
循环是编程中一种控制流语句,它允许我们重复执行一段代码块多次,直到满足特定的条件为止。它是编程语言中最基本和最强大的概念之一,用于自动化重复性任务。
循环的核心思想:避免重复编写相同的代码行,提高代码的效率、简洁性和可维护性。
循环的必备组成部分:
初始化 (Initialization): 在循环开始前,设置循环控制变量的初始值。
循环条件 (Condition): 一个布尔表达式(结果为真true或假false)。每次循环开始前(或结束后,取决于循环类型)都会检查这个条件。
如果条件为true,则执行循环体。
如果条件为false,则退出循环。
循环体 (Body): 需要重复执行的那段代码块。它可以包含一行或多行语句。
迭代更新 (Update/Iteration): 在每次循环体执行完毕后(或执行前,取决于循环类型),修改循环控制变量的值。这个修改通常是朝着让循环条件最终变为false的方向进行(例如,增加或减少计数器),以避免无限循环。
part A:for循环
特点: 通常用于知道循环需要执行多少次的情况(计数循环)。初始化、条件和迭代更新都集中写在for语句的一行内。
/*for (定义;退出条件; 变化) { // 初始化i=0; 条件i<5; 更新i=i+1
// 循环体:你想干啥就干啥
}*/
//例子
for (int i = 0 ; i <= 10(也可以是某个变量) ; i++(变化,一般是i++,也可以是别滴){
cout << i;//干什么
}
执行流程
1.执行初始化表达式(只执行一次)
2.检查条件表达式:
(2)如果为true,执行循环体
(3)如果为false,退出循环
2.执行迭代表达式
4.回到步骤2
例题一:打印1~10的数字
方法一:
#include <iostream>
using namespace std;
int main() {
// 打印1到10的数字
for (int i = 1; i <= 10; i++) {//可以直接小于等于10,也可以这样(看下面去)
cout << i << " ";
}
return 0;
}
方法二
#include <iostream>
using namespace std;
long long n = 10;
int main() {
// 打印1到10的数字
for (int i = 1; i <= n; i++) {//这样也可以
cout << i << " ";
}
return 0;
}
for的变体
省略初始化部分(如果变量已在外部声明)
long long i = 0;
for (i ; i <= n ; i++){
cout << i;
}
//突然发现这样也行
/*
for (; i <= n; i++) { // 省略初始化
cout << i;
}
*/
//省略迭代表达式(在循环体内更新)
for (int i = 0; i <= n; ) {
i++;
}
//无限循环:for(;;)
for ( ; ; ){
}
part B:让作者疯了的while
while循环在不确定循环次数但知道循环条件时使用。
/*套格式
while (条件表达式) {
// 循环体
}
*/
//例如
while (i <= n){
cout << i
}
执行流程
1.检查条件表达式
(1)如果为true,执行循环体
(2)如果为false,退出循环
2.回到步骤1
输出1~10的数字
#include <iostream>
using namespace std;
int main() {
int count = 0;
while (count <= 10) {
cout << count << endl;
count++;
}
return 0;
}
注意事项
1.必须确保循环条件最终会变为false,否则会导致无限循环
2.循环体可能一次都不执行(如果初始条件为false)
partC.作者疯了do-while 循环
do-while循环与while循环类似,但保证循环体至少执行一次。
do {
// 循环体
} while (条件表达式);
执行流程
1.执行循环体
2.检查条件表达式
(1)如果为true,回到步骤1
(2)如果为false,退出循环
#include <iostream>
using namespace std;
int main() {
int num;
do {
cout << "输入 ";
cin >> num;
} while (num < 1 || num > 10);
cout << "你输入了: " << num << endl;
return 0;
}
//4. 范围for循环 (C++11引入)
//范围for循环简化了遍历容器或数组的操作。
//基本语法
/*
for (声明 : 表达式) {
// 循环体
}
*/
**#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> nums = {1, 2, 3, 4, 5};
// 遍历vector
for (int num : nums) {
cout << num << " ";
}
// 使用auto和引用修改元素
for (auto &num : nums) {
num *= 2;
}
return 0;
}
part D :break and continue
break语句
功能:立即终止当前所在的循环结构(for、while、do-while或switch语句),跳出循环体,继续执行循环之后的代码。
特点:
1.只能跳出当前一层循环
2.在嵌套循环中,只影响包含它的最内层循环
3.常用于提前终止循环条件
使用场景:
1.搜索算法中找到目标后提前退出
2.输入验证中遇到非法输入时终止
3.满足特定条件时提前结束循环
for (int i = 0; i < 10; i++) {
if (i == 5) {
break; // 当i等于5时退出循环
}
cout << i << " "; // 输出:0 1 2 3 4
}
基本用法:
当程序执行到continue时:
立即停止当前迭代
跳转到循环的条件判断部分
开始下一次循环(如果条件仍满足).
适用循环类型:
1.for循环
2.while循环
3.do...while循环
典型使用场景:
①跳过特定条件的处理:
for(int i = 0; i < 10; i++) {
if(i % 2 == 0) continue; // 跳过偶数
cout << i << " "; // 只输出奇数
}
②异常值过滤:
while(cin >> num) {
if(num < 0) continue; // 忽略负数
process(num);
}
与break的区别:
continue:仅跳过当前迭代,循环继续
break:立即终止整个循环
注意事项:
(1)在for循环中,continue仍会执行迭代表达式(如i++)
(2)避免过度使用以免降低代码可读性
(3)嵌套循环中只影响当前所在的最内层循环
- 嵌套循环
循环可以嵌套使用,即在一个循环体内包含另一个循环
nine nine乘法表
for (int i = 1; i <= 3; i++) { // 外层循环
for (int j = 1; j <= 3; j++) { // 内层循环
cout << i << " * " << j << " = " << i*j << endl;
}
}
- 现代C++中的循环特性
结构化绑定 (C++17):
for (auto [key, value] : my_map) {
// ...
}
2.初始化语句 (C++17):
for (auto [key, value] : my_map) {
// ...
}
适合方面
for循环:循环次数已知
while循环:循环次数未知,先检查条件
do-while循环:循环次数未知,至少执行一次
范围for:遍历容器元素
- 循环优化技巧
减少循环内部计算:将不变量移到循环外
循环展开:手动展开循环减少条件判断
使用前缀递增:i通常比i效率高
避免在循环条件中使用函数调用 - 常见错误与调试
无限循环:忘记更新循环变量
差一错误:循环边界条件错误
空循环:循环体后误加分号
变量作用域:循环变量在外部不可访问 - 性能考虑
对于小型循环,编译器通常会进行优化
循环次数较多时,注意内存访问模式
考虑使用并行化技术(如OpenMP)加速循环`
循环最佳实践
明确循环目的:在编写循环前,明确知道循环要完成什么任务
避免死循环:确保循环有明确的退出条件
合理选择循环类型:
已知循环次数 → for循环
未知次数但有条件 → while循环
至少执行一次 → do-while循环
减少循环内计算:将不变量计算移到循环外
注意变量作用域:循环内声明的变量只在循环内有效
合理使用break和continue:避免过度使用导致代码难以理解
嵌套循环优化:尽量减少嵌套层数,考虑能否用函数替代
啊哈哈哈哈哈哈啊哈哈哈哈哈哈哈哈哈,作者疯了!!!
全部评论 3
en,就是说这个似乎,额,好像没有必要吧
1周前 来自 浙江
0可以讲些小众的
1周前 来自 浙江
0
准确来说,for还有一种迭代器的遍历,好像是for(auto i : a)我不确定
1周前 来自 浙江
0太可怜了,点个赞
1周前 来自 浙江
0
有帮助,赞一个