循环嵌套

题单类型:官方题单
创建人:
ACGO官方
题数:20
收藏题单
完成度:0/20

循环嵌套

循环嵌套是指在一个循环语句中再包含另一个循环语句的结构,是编程中常用的控制结构之一。通过循环嵌套,我们可以处理更复杂的问题,如多维数据的遍历、矩阵运算等。

基本概念

循环嵌套的基本形式是在一个循环体内部包含另一个完整的循环结构。理论上,只要符合题目逻辑,循环结构和分支结构可以相互嵌套,只要保证结构完整。所以建议先写完整括号结构,再考虑其中的内容书写。

常见的循环嵌套包括:

  1. for循环嵌套for循环
  2. while循环嵌套while循环
  3. for循环和while循环相互嵌套

for循环嵌套for循环

for (外层循环变量初始化; 外层循环条件; 外层循环变量更新) {
    // 外层循环体
    for (内层循环变量初始化; 内层循环条件; 内层循环变量更新) {
        // 内层循环体
    }
}

while循环嵌套while循环

while (外层条件) {
    // 外层循环体
    while (内层条件) {
        // 内层循环体
    }
}

执行流程

循环嵌套的执行流程遵循以下规则:

  1. 外层循环执行一次,内层循环执行完整的一轮
  2. 内层循环完全结束后,才会回到外层循环,执行外层循环的下一轮
  3. 循环嵌套的总执行次数是每轮内层循环执行次数的总和

数学表达式为:

总执行次数=i=1nki\text{总执行次数} = \sum_{i=1}^{n} k_i

其中,nn 是嵌套层数,kik_i 是第 ii 轮循环中内层循环的执行次数,总执行次数为每轮循环中内层循环执行次数的总和。如果每轮循环中内层循环的执行次数都相同,也可以直接用乘法计算。

以打印九九乘法表为例:


for (int i = 1; i <= 9; ++i) {  // 外层循环控制行数
    for (int j = 1; j <= i; ++j) {  // 内层循环控制每行的列数
        cout << j << "×" << i << "=" << << i*j << "\t";
    }
    cout << endl;  // 每行结束后换行
}

九九乘法表按照从上到下,从左到右的顺序进行输出,每行都使用了相同的方法,每行中的每个算式(列)也采用了相同的计算方法。因此,可以将其看作是一层循环嵌套,外层循环控制行数,内层循环控制每行的列数。

这里第 11 轮循环,内层循环执行 11次。第 22 轮循环,内层循环执行 22次。第 33 轮循环,内层循环执行 33次。第 ii 轮循环,内层循环执行 ii次。

所以 nn 层的乘法表总执行次数为 1+2+3++n=(1+n)×n21+2+3+\cdots +n=\frac{(1+n)\times n}{2} 次。

在循环嵌套的部分,我们通常不需要过多的考虑执行次数,只会在选择题中考虑。在未来的算法阶段,我们在考虑时间复杂度时会对执行次数有更多深入的了解。

我们在书写代码时重点要注意外层循环和内层循环的循环变量意义,通常会是行数和列数。可以从这个角度出发进行循环的书写,能够更容易地模拟题目中的要求。

注意事项

  1. 注意循环变量的命名:不同层级的循环变量一般有不同的意义,应有明确区分,不应该使用同一个变量同时表示内外层循环的循环变量,避免造成混淆和预期之外的影响。可以将循环变量的值赋值给一个新申请的变量,这样既能符合要求又不会影响循环变量的值。
  2. 确保内层循环有终止条件:特别是使用while循环嵌套时,或题目存在特殊条件时,要注意是否应该提前结束循环。

本次题单设计了循环嵌套知识点,其中细化到 for循环、while循环、格式化输出 的拓展内容。

通过学习本题单,你可以掌握循环嵌套的基本用法,学会在循环中完成求和与条件判断,绘制正三角、倒三角、矩形等常见图形,并能通过格式化输出让结果更规范、美观,从而提升逻辑思维与代码实现能力

【前置知识点】
1、循环

【后置衔接知识点】
1、二维数组

【思维导图】

【题目知识点分类】