一、基础用法
1. 标准计数循环
这是最常见的for
循环形式,适用于已知循环次数的情况。
for (int i = 0; i < 10; i++) {
printf("迭代次数: %d\n", i);
}
- 初始化:
int i = 0
,定义并初始化循环变量i
。 - 条件判断:
i < 10
,当i
小于 10 时,循环继续执行。 - 变量更新:
i++
,每完成一次循环,i
的值增加 1。
2. 递减循环
通过改变变量更新的方式,可以实现递减循环。
for (int i = 10; i > 0; i--) {
printf("倒计时: %d\n", i);
}
3. 步长调整
可以自定义循环变量的变化幅度,也就是步长。
// 偶数序列:0, 2, 4, 6, 8
for (int i = 0; i < 10; i += 2) {
printf("%d ", i);
}
二、灵活的表达式省略
for
循环的三个表达式都可以根据需要省略,但分号;
不能省略。
1. 省略初始化
可以在循环之前完成变量的初始化。
int i = 0;
for (; i < 5; i++) {
printf("%d ", i);
}
2. 省略条件判断
如果不写条件判断,默认条件始终为真,这会形成无限循环。
for (int i = 0;; i++) { // 等同于 while(1)
if (i > 5) break; // 必须在循环体中设置退出条件
printf("%d ", i);
}
3. 省略变量更新
可以把变量更新操作放在循环体内部。
for (int i = 0; i < 5;) {
printf("%d ", i);
i++; // 变量更新移到此处
}
4. 全部省略
for (;;) { // 无限循环,等同于 while(1)
// 需要在循环体中使用 break 来退出
}
三、多变量控制
在初始化和变量更新部分,可以使用逗号分隔多个表达式,从而实现多个变量对循环的控制。
1. 双变量循环
for (int i = 0, j = 10; i < j; i++, j--) {
printf("i=%d, j=%d\n", i, j);
}
2. 遍历二维数组
int matrix[3][3] = {{1,2,3}, {4,5,6}, {7,8,9}};
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
四、嵌套循环
在一个for
循环内部再放置一个或多个for
循环,这就是嵌套循环,常用于处理多维数据结构。
1. 打印乘法表
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
printf("%d×%d=%d\t", i, j, i*j);
}
printf("\n");
}
2. 模式打印
// 打印直角三角形
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= i; j++) {
printf("*");
}
printf("\n");
}