- 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 条评论
目前还没有评论...