C语言嵌套循环



在编程环境中,“嵌套”指的是将一个特定的编程元素包含在另一个类似的元素中。例如,嵌套循环、嵌套结构体嵌套条件语句等。

嵌套循环

当在 C 语言中,一个循环结构被用在另一个循环的循环体中时,我们称之为嵌套循环(或循环中的循环)。其中,包含另一个循环的循环称为外循环。被包含的循环称为内循环

嵌套循环的通用语法

嵌套循环的一般形式如下所示:

Outer loop {
   Inner loop {
      ...
      ...
   }
   ... 
}

C 提供了三个用于循环构造的关键字 - whiledo-whilefor。这三种类型的循环都可以进行嵌套。这意味着你可以在for循环内放置一个while循环,在do-while循环内放置一个for循环,或者其他任何组合。

嵌套循环的一般行为是,对于外循环的每次迭代,内循环都会完成所有的迭代。

嵌套 for 循环

嵌套 for 循环非常常见。如果内外循环都预期执行三次迭代,则最内层语句的总迭代次数将是“3 * 3 = 9”。

示例:嵌套 for 循环

请看下面的例子:

#include <stdio.h>
 
int main(){

   int i, j;
	
   // outer loop
   for(i = 1; i <= 3; i++){
      
      // inner loop
      for(j = 1; j <= 3; j++){
         printf("i: %d j: %d\n", i, j);
      }
      printf("End of Inner Loop \n");
   }
   printf("End of Outer Loop");
 
   return 0;
}

输出

运行此代码时,将产生以下输出:

i: 1 j: 1
i: 1 j: 2
i: 1 j: 3
End of Inner Loop

i: 2 j: 1
i: 2 j: 2
i: 2 j: 3
End of Inner Loop

i: 3 j: 1
i: 3 j: 2
i: 3 j: 3
End of Inner Loop

End of Outer loop

嵌套循环的解释

现在让我们分析一下上面程序的工作原理。当遇到外循环时,外循环的循环变量“i”被初始化为 1。由于测试条件(a <= 3)为真,程序进入外循环体。

程序到达内循环,控制内循环的变量“j”被初始化为 1。由于内循环的测试条件(j <= 3)为真,程序进入内循环。打印“a”和“b”的值。

程序到达内循环的末尾。它的变量“j”自增。控制跳转到步骤 4,直到条件(j <= 3)为真。

当测试条件变为假(因为“j”变为 4)时,控制跳出内循环。遇到外循环的末尾。控制外循环的变量“i”自增,控制跳转到步骤 3。由于这是内循环的开始,因此“j”再次设置为 1。

内循环完成其迭代并再次结束。步骤 4 到 8 将重复,直到外循环的测试条件(i <= 3)变为假。在外循环结束时,“i”和“j”分别变为 4 和 4。

结果表明,对于外循环变量的每个值,内循环变量都会取所有值。打印的总行数为“3 * 3 = 9”。

在 for 循环内嵌套 while 循环

任何类型的循环都可以在任何其他类型的循环中嵌套。让我们通过在外循环for循环中放置一个while循环来重写上面的例子。

示例:嵌套循环(for 循环内嵌套 while 循环)

请看下面的例子:

#include <stdio.h>
 
int main(){

   int i, j;
	
   // outer for loop
   for (i = 1; i <= 3; i++){
   
      // inner while loop
      j = 1;
      while (j <= 3){
         printf("i: %d j: %d\n", i, j);
         j++;
      }
      printf("End of Inner While Loop \n");
   }
   printf("End of Outer For loop");
 
   return 0;
}

输出

i: 1 j: 1
i: 1 j: 2
i: 1 j: 3
End of Inner While Loop

i: 2 j: 1
i: 2 j: 2
i: 2 j: 3
End of Inner While Loop

i: 3 j: 1
i: 3 j: 2
i: 3 j: 3
End of inner while Loop

End of outer for loop

程序员在许多应用程序中使用嵌套循环。让我们再看一些嵌套循环的例子。

C 嵌套循环示例

示例:打印表格

以下程序使用两个嵌套for循环打印 1 到 10 的表格。

#include <stdio.h>
 
int main(){

   int i, j;
   printf("Program to Print the Tables of 1 to 10 \n");
   
   // outer loop
   for(i = 1; i <= 10; i++){
      
      // inner loop
      for(j = 1; j <= 10; j++){
         printf("%4d", i*j);
      }
      printf("\n");
   }
   return 0;
}

输出

运行代码并检查其输出:

Program to Print the Tables of 1 to 10
    1    2    3    4    5    6    7    8    9   10
    2    4    6    8   10   12   14   16   18   20
    3    6    9   12   15   18   21   24   27   30
    4    8   12   16   20   24   28   32   36   40
    5   10   15   20   25   30   35   40   45   50
    6   12   18   24   30   36   42   48   54   60
    7   14   21   28   35   42   49   56   63   70
    8   16   24   32   40   48   56   64   72   80
    9   18   27   36   45   54   63   72   81   90
   10   20   30   40   50   60   70   80   90  100

示例:打印字符金字塔

以下代码打印来自字符串的递增数量的字符。

#include <stdio.h>
#include <string.h>

int main(){

   int i, j, l;
   char x[] = "TutorialsPoint";
   l = strlen(x);

   // outer loop
   for(i = 0; i < l; i++){
   
      // inner loop
      for(j = 0; j <= i; j++){
         printf("%c", x[j]);
      }
      printf("\n");
   }
   return 0;
}

输出

运行此代码时,将产生以下输出:

T
Tu
Tut
Tuto
Tutor
Tutori
Tutoria
Tutorial
Tutorials
TutorialsP
TutorialsPo
TutorialsPoi
TutorialsPoin
TutorialsPoint

示例:打印二维数组

在这个程序中,我们将展示如何使用嵌套循环来显示一个二维整数数组。外循环控制行号,内循环控制列号。

#include <stdio.h>

int main(){

   int i, j;
   int x[4][4] = {
      {1, 2, 3, 4},
      {11, 22, 33, 44},
      {9, 99, 999, 9999},
      {10, 20, 30, 40}
   };

   // outer loop
   for (i=0; i<=3; i++){
   
      // inner loop
      for(j=0; j <= 3; j++){
         printf("%5d", x[i][j]);
      }
      printf("\n");
   }
   return 0;
}

输出

运行此代码时,将产生以下输出:

    1    2    3    4
   11   22   33   44
    9   99  999 9999
   10   20   30   40
c_loops.htm
广告