核心思想
将 printf 语句放在一个循环(如 for, while, do-while)的循环体内部,这样,每循环一次,printf 就会被执行一次,从而在控制台上输出一行或多行内容。

(图片来源网络,侵删)
使用 for 循环打印数字序列
for 循环是最常用于此类任务的循环,因为你通常知道循环的次数。
示例 1:打印 1 到 10 的数字
#include <stdio.h>
int main() {
// 定义一个整型变量 i,作为循环计数器
// i 从 1 开始
// i 小于等于 10 时,循环继续
// 每次循环结束后,i 的值加 1
for (int i = 1; i <= 10; i++) {
// 在循环体中,我们使用 printf 来打印 i 的值
// %d 是一个格式占位符,会被 i 的实际值替换
// \n 是一个换行符,使得每个数字都打印在新的一行
printf("%d\n", i);
}
return 0;
}
输出结果:
1
2
3
4
5
6
7
8
9
10
代码解析:

(图片来源网络,侵删)
#include <stdio.h>:包含了标准输入输出库,这样我们才能使用printf函数。int main():程序的入口点。for (int i = 1; i <= 10; i++):这是for循环的结构。int i = 1:初始化,在循环开始前,创建一个变量i并赋值为 1。i <= 10:条件判断,在每次循环开始前,检查这个条件,如果为真,则执行循环体;如果为假,则循环结束。i++:迭代,在每次循环体执行完毕后,执行此操作(i的值增加 1)。
printf("%d\n", i);:循环体。%d告诉printf:“这里将要打印一个整数”。, i表示将变量i的当前值传递给printf,用它来替换%d。\n是一个“转义字符”,代表“换行”,确保下一次printf的输出会在下一行开始。
打印更复杂的模式
printf 循环的真正威力在于打印有规律的图案。
*示例 2:打印一个 5x5 的星号(``)方块**
#include <stdio.h>
int main() {
// 外层循环控制行数
for (int i = 1; i <= 5; i++) {
// 内层循环控制每行的列数(每行打印 5 个星号)
for (int j = 1; j <= 5; j++) {
printf("* ");
}
// 每打印完一行后,需要换行
printf("\n");
}
return 0;
}
输出结果:
代码解析:

(图片来源网络,侵删)
这里我们使用了嵌套循环。
- 外层循环
for (int i = 1; i <= 5; i++):这个循环负责控制打印的“行数”,它会循环 5 次,每次代表一行。 - 内层循环
for (int j = 1; j <= 5; j++):这个循环负责控制“每行打印多少个星号”,对于外层循环的每一次(即每一行),内层循环都会完整地执行 5 次,每次打印一个 (注意星号后面有一个空格,这样图案更美观)。 printf("\n");:这行代码在内层循环之外,外层循环之内,它的作用是,在打印完一行所有的星号后,执行一次换行,为下一行的打印做准备。
使用 while 循环
while 循环适用于不确定循环次数,但有明确的循环继续条件的场景。
示例 3:使用 while 循环打印 1 到 10
#include <stdio.h>
int main() {
int i = 1; // 1. 初始化循环变量
// 2. 循环条件
while (i <= 10) {
printf("%d\n", i);
// 3. 更新循环变量 (非常重要!否则会变成无限循环)
i++;
}
return 0;
}
输出结果: 与 for 循环示例完全相同。
代码解析:
- 初始化:
while循环的初始化 (int i = 1;) 必须在循环开始前手动完成。 - 条件:
while (i <= 10)只判断条件,如果为真,就执行循环体。 - 更新:
i++必须放在循环体内部,如果你忘记写i++,i的值将永远是 1,i <= 10这个条件永远为真,程序就会陷入无限循环,直到你手动强制关闭它。
使用 do-while 循环
do-while 循环的特点是先执行一次循环体,然后再判断条件,这意味着即使条件一开始就是假的,循环体也至少会执行一次。
示例 4:使用 do-while 循环
#include <stdio.h>
int main() {
int i = 1;
do {
printf("%d\n", i);
i++;
} while (i <= 10); // 注意:这里的分号 ; 不能少
return 0;
}
输出结果: 同样是 1 到 10。
代码解析:
do-while 的结构保证了 printf 至少会被执行一次,然后才检查 i <= 10 的条件,对于打印数字这种任务,for 和 while 更常见,但 do-while 在某些需要“先尝试,再判断”的场景下非常有用。
总结与最佳实践
| 循环类型 | 结构 | 特点 | 适用场景 |
|---|---|---|---|
for |
for (初始化; 条件; 迭代) |
初始化、条件、迭代三部分集中,结构清晰。 | 最常用,当你确切知道循环次数或迭代规律时。 |
while |
while (条件) |
结构简单,只有条件判断,初始化和更新需手动完成。 | 当循环次数不确定,但有一个明确的继续/停止条件时。 |
do-while |
do { ... } while (条件); |
循环体至少执行一次。 | 当你需要先执行一次操作,然后再根据条件决定是否继续时。 |
关键要点:
- 循环变量:要有一个变量来控制循环的进程(如上面的
i或j)。 - 初始化:在循环开始前,给循环变量一个初始值。
- 条件:必须有能让循环退出的条件,否则会造成无限循环。
- 更新:在循环体内,必须要有改变循环变量值的语句,使其最终能不满足循环条件。
- 换行符
\n:在打印多行内容时,printf中的\n是必不可少的,它能让你的输出整洁有序。
通过掌握 printf 和循环的结合使用,你就可以开始编写能够处理重复性任务的、功能更强大的 C 语言程序了。
