- 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;:声明两个整型变量i和j,分别作为外层和内层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 条评论
目前还没有评论...