• C
  • C语言嵌套循环教程

  • @ 2025-3-24 11:58:58

1. 什么是嵌套循环

在C语言中,嵌套循环指的是一个循环体内包含另一个完整的循环结构。常见的有for循环嵌套for循环、while循环嵌套while循环,以及不同类型循环之间的相互嵌套,比如for循环里嵌套while循环等。嵌套循环常用于处理具有二维或多维特性的数据,像打印矩阵、遍历二维数组等。

2. for循环嵌套for循环

2.1 语法结构

for (初始化表达式1; 循环条件1; 迭代表达式1) {
    for (初始化表达式2; 循环条件2; 迭代表达式2) {
        // 内层循环体
    }
    // 外层循环体(不包含内层循环的部分)
}
  • 外层循环先进行初始化,接着判断外层循环条件,若条件为真,进入外层循环体。
  • 进入外层循环体后,内层循环开始初始化,然后判断内层循环条件,若为真则执行内层循环体。内层循环每一轮迭代完成后,再次判断内层循环条件,直到内层循环条件为假,内层循环结束。
  • 内层循环结束后,执行外层循环的迭代表达式,接着再次判断外层循环条件,决定是否开始下一轮外层循环。

2.2 示例代码:打印九九乘法表

#include <stdio.h>

int main() {
    int i, j;  // 定义外层循环变量i和内层循环变量j
    // 外层循环,i从1到9,控制乘法表的行数
    for (i = 1; i <= 9; i++) { 
        // 内层循环,j从1到i,控制每行乘法表达式的个数
        for (j = 1; j <= i; j++) { 
            // 打印乘法表达式,不换行
            printf("%d * %d = %-4d", j, i, i * j); 
        }
        // 每行打印完乘法表达式后换行
        printf("\n"); 
    }
    return 0;
}

2.3 代码解释

  • #include <stdio.h>:引入标准输入输出头文件,用于使用printf函数进行输出。
  • int main():程序的入口函数。
  • int i, j;:声明两个整型变量ij,分别作为外层和内层for循环的循环变量。
  • 外层for循环for (i = 1; i <= 9; i++)i从1开始,每次循环增加1,直到i大于9时循环结束。i用于控制乘法表的行数。
  • 内层for循环for (j = 1; j <= i; j++):在内层循环中,j从1开始,每次循环增加1,并且j的上限是当前外层循环变量i的值。这意味着每一行乘法表达式的个数是由当前行数决定的,比如第一行只有一个表达式,第二行有两个表达式,以此类推。
  • printf("%d * %d = %-4d", j, i, i * j);:在内层循环体中,使用printf函数打印乘法表达式,%-4d表示按照左对齐的方式输出结果,并且结果占4个字符的宽度,方便输出结果整齐排列。
  • printf("\n");:外层循环体中,在内层循环结束后,使用printf函数换行,以便开始打印下一行乘法表。

3. while循环嵌套while循环

3.1 语法结构

初始化表达式1;
while (循环条件1) {
    初始化表达式2;
    while (循环条件2) {
        // 内层循环体
        内层迭代表达式;
    }
    外层迭代表达式;
}
  • 先对外层循环进行初始化,然后判断外层循环条件。
  • 若外层循环条件为真,进入外层循环体,对外层循环体中的内层循环进行初始化,接着判断内层循环条件。
  • 若内层循环条件为真,执行内层循环体及内层迭代表达式,不断重复,直到内层循环条件为假。
  • 内层循环结束后,执行外层迭代表达式,再次判断外层循环条件,决定是否继续下一轮外层循环。

3.2 示例代码:打印一个由星号组成的直角三角形

#include <stdio.h>

int main() {
    int i = 1;  // 外层循环变量,控制行数
    while (i <= 5) {  // 外层循环,控制打印5行
        int j = 1;  // 内层循环变量,控制每行星号的个数
        while (j <= i) {  // 内层循环,每行打印的星号数和当前行数相同
            printf("*");  // 打印星号
            j++;  // 内层循环变量自增
        }
        printf("\n");  // 换行
        i++;  // 外层循环变量自增
    }
    return 0;
}

3.3 代码解释

  • #include <stdio.h>:引入标准输入输出头文件。
  • int main():程序入口函数。
  • int i = 1;:初始化外层循环变量i为1,i用于控制打印的行数。
  • 外层while循环while (i <= 5):只要i小于等于5,就执行外层循环体。
  • int j = 1;:在内层循环开始前,初始化内层循环变量j为1,j用于控制每行打印的星号个数。
  • 内层while循环while (j <= i):只要j小于等于当前的i值,就执行内层循环体,即打印一个星号并让j自增,以此来控制每行星号的数量。
  • printf("*");:在内层循环体中,打印一个星号。
  • printf("\n");:在内层循环结束后,即一行星号打印完后,换行。
  • i++;:外层循环体中,执行完内层循环和换行操作后,让外层循环变量i自增,准备打印下一行。

4. 不同类型循环嵌套示例(for循环嵌套while循环)

4.1 示例代码:打印一个倒直角三角形

#include <stdio.h>

int main() {
    int i;
    // 外层for循环,控制行数,从5到1递减
    for (i = 5; i >= 1; i--) { 
        int j = 1;
        // 内层while循环,控制每行星号的个数
        while (j <= i) { 
            printf("*");
            j++;
        }
        printf("\n");
    }
    return 0;
}

4.2 代码解释

  • 外层for循环for (i = 5; i >= 1; i--)i从5开始,每次循环减少1,直到i小于1时循环结束,用于控制倒直角三角形的行数。
  • 内层while循环while (j <= i):在内层循环中,j从1开始,只要j小于等于当前的i值,就打印一个星号并让j自增,以此来控制每行星号的数量,从而实现倒直角三角形的打印。

通过这些示例,你可以对C语言的嵌套循环有更清晰的理解,在实际编程中,根据具体需求合理运用嵌套循环来解决各种问题。

0 条评论

目前还没有评论...