C语言中的嵌套循环:初学者的全面指南

你好,未来的编程巫师们!今天,我们将一起探索C语言中嵌套循环的神奇世界。如果你是编程新手,不用担心——我会作为你在这个激动人心的旅程中的友好向导。在本教程结束时,你将能够像专业人士一样嵌套循环!

C - Nested loop

什么是嵌套循环?

在我们跳入深水区之前,让我们从基础开始。想象你正在整理你的袜子抽屉。你有不同颜色的袜子,每种颜色有多个成对。为了分类它们,你可能会遍历每种颜色(外循环),然后数出并配对每种颜色的每只袜子(内循环)。这在编程中基本上就是嵌套循环的作用!

嵌套循环就是一个循环里面再嵌套另一个循环。内循环在外循环的每次迭代中完全运行。这就像那些俄罗斯套娃——打开一个,里面还有另一个!

嵌套的for循环

让我们从最常见的嵌套循环类型开始:嵌套的for循环。以下是一个简单的例子:

#include <stdio.h>

int main() {
int i, j;
for (i = 1; i <= 3; i++) {
for (j = 1; j <= 3; j++) {
printf("(%d, %d) ", i, j);
}
printf("\n");
}
return 0;
}

这段代码将输出:

(1, 1) (1, 2) (1, 3)
(2, 1) (2, 2) (2, 3)
(3, 1) (3, 2) (3, 3)

让我们分解一下:

  1. 外循环(i)运行3次。
  2. 对于外循环的每次迭代,内循环(j)运行3次。
  3. 每次内循环运行时,我们打印ij的值。
  4. 内循环完成后,我们打印一个换行符(\n)。

这就像跳舞:外循环引领,内循环跟随,每当外循环迈出一步时,内循环旋转三次!

一个更实际的例子

现在,让我们使用嵌套循环来创建一个乘法表:

#include <stdio.h>

int main() {
int i, j;
printf("   ");
for (i = 1; i <= 10; i++) {
printf("%4d", i);
}
printf("\n   -------------------------------------\n");
for (i = 1; i <= 10; i++) {
printf("%2d |", i);
for (j = 1; j <= 10; j++) {
printf("%4d", i * j);
}
printf("\n");
}
return 0;
}

这段代码创建了一个漂亮的10x10乘法表。外循环代表行,内循环代表列。我们将行号乘以列号来得到每个单元格的值。

在for循环内嵌套while循环

谁说我们不能混合搭配?让我们尝试在for循环内嵌套一个while循环:

#include <stdio.h>

int main() {
int i, j;
for (i = 1; i <= 5; i++) {
j = 1;
while (j <= i) {
printf("* ");
j++;
}
printf("\n");
}
return 0;
}

这段代码打印了一个直角三角形的星号:

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

在这里,for循环控制行数,while循环在每行打印星号。这就像建造金字塔——你越往上走,添加的块就越多!

C语言嵌套循环示例

让我们探索更多示例来巩固我们的理解:

1. 数字模式

#include <stdio.h>

int main() {
int i, j, rows = 5;
for (i = 1; i <= rows; i++) {
for (j = 1; j <= i; j++) {
printf("%d ", j);
}
printf("\n");
}
return 0;
}

这创建了一个数字模式:

1
1 2
1 2 3
1 2 3 4
1 2 3 4 5

2. 字母模式

#include <stdio.h>

int main() {
int i, j;
char current = 'A';
for (i = 1; i <= 5; i++) {
for (j = 1; j <= i; j++) {
printf("%c ", current++);
}
printf("\n");
}
return 0;
}

这打印了一个字母模式:

A
B C
D E F
G H I J
K L M N O

3. 质数检查器

#include <stdio.h>

int main() {
int i, j, flag;
printf("1到50之间的质数是:\n");
for (i = 2; i <= 50; i++) {
flag = 0;
for (j = 2; j <= i/2; j++) {
if (i % j == 0) {
flag = 1;
break;
}
}
if (flag == 0)
printf("%d ", i);
}
return 0;
}

这个程序找到1到50之间的所有质数。外循环遍历数字,而内循环检查每个数字是否为质数。

结论

嵌套循环是程序员工具箱中的强大工具。它们允许我们处理多维数据并创建复杂模式。记住,熟能生巧!尝试修改这些示例或创建你自己的嵌套循环程序。

以下是我们在本文中讨论的嵌套循环类型的快速参考表:

外循环 内循环 示例用例
for for 创建二维模式或表格
for while 变长行操作
while for 重复固定操作变量次数
while while 双条件操作

快乐编程,愿你的循环永远完美嵌套!

Credits: Image by storyset