目录
引言
C 语言循环嵌套基础
循环嵌套的实现案例
在编程的广袤宇宙中,C 语言无疑占据着举足轻重的地位。它诞生于 20 世纪 70 年代,历经岁月的洗礼,至今依然是众多程序员的首选语言之一。C 语言以其高效、灵活、可移植性强等特点,广泛应用于操作系统开发、嵌入式系统、游戏开发等众多领域。许多著名的操作系统,如 Unix、Linux,其内核部分大量使用 C 语言编写,这充分彰显了 C 语言在底层系统编程中的强大优势。
在 C 语言丰富的编程结构中,循环嵌套是一个非常重要的概念。循环嵌套,简单来说,就是在一个循环内部包含另一个完整的循环结构。这种结构允许我们在不同层次上重复执行某段代码,为解决复杂问题提供了有力的工具。通过循环嵌套,我们可以轻松实现对二维数组的遍历、打印九九乘法表、生成各种复杂的图形等功能。掌握循环嵌套的实现与复杂度分析,对于提升编程能力、优化代码性能有着至关重要的意义。无论是初涉编程的新手,还是经验丰富的老程序员,深入理解循环嵌套都能为他们的编程之路带来新的启发和突破。
C 语言中有三种基本的循环结构,分别是 for 循环、while 循环和 do - while 循环。这三种循环之间可以相互嵌套,形成多种合法的嵌套形式。常见的有:
for (初始化表达式1; 条件表达式1; 更新表达式1) {
for (初始化表达式2; 条件表达式2; 更新表达式2) {
// 内层循环体
}
// 外层循环体
}
while (条件表达式1) {
while (条件表达式2) {
// 内层循环体
}
// 外层循环体
}
do {
do {
// 内层循环体
} while (条件表达式2);
// 外层循环体
} while (条件表达式1);
for (初始化表达式1; 条件表达式1; 更新表达式1) {
while (条件表达式2) {
// 内层循环体
}
// 外层循环体
}
while (条件表达式1) {
for (初始化表达式2; 条件表达式2; 更新表达式2) {
// 内层循环体
}
// 外层循环体
}
do {
for (初始化表达式2; 条件表达式2; 更新表达式2) {
// 内层循环体
}
// 外层循环体
} while (条件表达式1);
for (初始化表达式1; 条件表达式1; 更新表达式1) {
do {
// 内层循环体
} while (条件表达式2);
// 外层循环体
}
while (条件表达式1) {
do {
// 内层循环体
} while (条件表达式2);
// 外层循环体
}
do {
while (条件表达式2) {
// 内层循环体
}
// 外层循环体
} while (条件表达式1);
#include
int main() {
int i, j;
for (i = 1; i <= 3; i++) { // 外层循环
for (j = 1; j <= 2; j++) { // 内层循环
printf("i = %d, j = %d\n", i, j);
}
}
return 0;
}
从这个例子可以看出,外层循环每执行一次,内层循环都会完整地执行一遍,直到内层循环条件不成立。循环嵌套的执行流程就是这样一层一层地进行,通过巧妙地控制循环条件和循环变量,我们可以实现各种复杂的功能。
#include
int main() {
int i, j;
for (i = 1; i <= 4; i++) { // 外层for循环,控制行数
for (j = 1; j <= 4; j++) { // 内层for循环,控制列数
printf("%-4d", i * j); // 输出乘积,%-4d表示左对齐,宽度为4
}
printf("\n"); // 换行,开始下一行的输出
}
return 0;
}
在这个例子中,外层循环控制行数,每执行一次外层循环,就会开始新的一行输出。内层循环控制列数,在内层循环中,每次输出一个元素,即 i * j 的结果。当内层循环执行完 4 次后,输出一个换行符,然后外层循环继续下一次迭代,开始新的一行输出。通过这种方式,最终输出一个 4×4 的整数矩阵,运行结果如下:
1 2 3 4
2 4 6 8
3 6 9 12
4 8 12 16
#include
int main() {
int i, j;
for (i = 1; i <= 9; i++) { // 外层for循环,控制行数
for (j = 1; j <= i; j++) { // 内层for循环,控制列数,注意这里的结束条件是j <= i
printf("%d*%d=%-2d ", j, i, i * j); // 输出乘法表达式,%-2d表示左对齐,宽度为2
}
printf("\n"); // 换行,开始下一行的输出
}
return 0;
}
在这个代码中,外层循环控制行数,从 1 到 9。内层循环控制列数,其结束条件是 j <= i,这意味着每一行的列数会随着行数的增加而增加。每次内层循环输出一个乘法表达式,当内层循环结束后,输出一个换行符,开始下一行的输出。通过这种方式,实现了九九乘法表的打印,运行结果如下:
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
4*1=4 4*2=8 4*3=12 4*4=16
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
可以看到,内层循环的结束条件与外层循环变量密切相关,通过巧妙地控制这种关系,实现了九九乘法表的正确输出。