031. 编写嵌套循环

在C语言中,嵌套循环是指在一个循环内部再嵌套另一个循环。嵌套循环常用于处理多维数组、矩阵操作、图形打印等场景。以下将通过具体示例展示如何编写嵌套循环。

示例1:打印乘法表

打印一个9x9的乘法表是一个经典的嵌套循环示例。

#include <stdio.h>

int main() {
    // 外层循环控制行
    for (int i = 1; i <= 9; i++) {
        // 内层循环控制列
        for (int j = 1; j <= i; j++) {
            printf("%d*%d=%2d  ", j, i, i * j);
        }
        printf("\n"); // 每打印完一行换行
    }

    return 0;
}

输出结果

1*1= 1  
1*2= 2  2*2= 4  
1*3= 3  2*3= 6  3*3= 9  
1*4= 4  2*4= 8  3*4=12  4*4=16  
1*5= 5  2*5=10  3*5=15  4*5=20  5*5=25  
1*6= 6  2*6=12  3*6=18  4*6=24  5*6=30  6*6=36  
1*7= 7  2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49  
1*8= 8  2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64  
1*9= 9  2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81  

示例2:打印图形

使用嵌套循环可以打印各种图形,例如打印一个等腰三角形。

#include <stdio.h>

int main() {
    int rows = 5;

    // 外层循环控制行
    for (int i = 1; i <= rows; i++) {
        // 打印空格
        for (int j = 1; j <= rows - i; j++) {
            printf(" ");
        }
        // 打印星号
        for (int k = 1; k <= 2 * i - 1; k++) {
            printf("*");
        }
        printf("\n"); // 每打印完一行换行
    }

    return 0;
}

输出结果

    *
   ***
  *****
 *******
*********

示例3:处理二维数组

嵌套循环常用于处理二维数组,例如计算二维数组的总和。

#include <stdio.h>

int main() {
    int matrix[3][4] = {
        {1, 2, 3, 4},
        {5, 6, 7, 8},
        {9, 10, 11, 12}
    };
    int rows = 3;
    int cols = 4;
    int sum = 0;

    // 使用嵌套循环遍历二维数组
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            sum += matrix[i][j];
        }
    }

    printf("The sum of the matrix elements is: %d\n", sum);

    return 0;
}

输出结果

The sum of the matrix elements is: 78

示例4:查找二维数组中的最大值

使用嵌套循环可以查找二维数组中的最大值。

#include <stdio.h>

int main() {
    int matrix[3][4] = {
        {1, 2, 3, 4},
        {5, 6, 7, 8},
        {9, 10, 11, 12}
    };
    int rows = 3;
    int cols = 4;
    int max = matrix[0][0];

    // 使用嵌套循环遍历二维数组
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            if (matrix[i][j] > max) {
                max = matrix[i][j];
            }
        }
    }

    printf("The maximum value in the matrix is: %d\n", max);

    return 0;
}

输出结果

The maximum value in the matrix is: 12

示例5:嵌套循环的控制

嵌套循环可以使用breakcontinue语句来控制循环的执行。

#include <stdio.h>

int main() {
    // 外层循环
    for (int i = 1; i <= 3; i++) {
        printf("Outer loop iteration: %d\n", i);
        // 内层循环
        for (int j = 1; j <= 3; j++) {
            if (j == 2) {
                continue; // 跳过内层循环的当前迭代
            }
            printf("  Inner loop iteration: %d\n", j);
        }
    }

    return 0;
}

输出结果

Outer loop iteration: 1
  Inner loop iteration: 1
  Inner loop iteration: 3
Outer loop iteration: 2
  Inner loop iteration: 1
  Inner loop iteration: 3
Outer loop iteration: 3
  Inner loop iteration: 1
  Inner loop iteration: 3

通过上述示例,你可以看到如何在C语言中编写嵌套循环:

  1. 外层循环:控制主要的迭代逻辑。
  2. 内层循环:在每次外层循环迭代中执行更细粒度的迭代。
  3. 控制语句:使用breakcontinue语句来控制循环的执行。
  4. 应用场景:嵌套循环常用于处理多维数组、打印图形、矩阵操作等。

视频讲解

BiliBili: 视睿网络-哔哩哔哩视频 (bilibili.com)