3.2 for 循环与计数
如果循环次数比较明确,for 循环通常比 while 更清晰。它把初始化、条件和更新写在同一行里。
for 的基本结构
C 的 for 循环写成 for (初始化; 条件; 更新)。每一轮开始前判断条件,循环体执行完后再执行“更新”。
c
for (int i = 0; i < 5; i++) {
printf("%d ", i);
}
printf("\n");
for (int i = 10; i < 15; i++) {
printf("%d ", i);
}
printf("\n");
for (int i = 1; i < 10; i += 2) {
printf("%d ", i);
}
printf("\n");运行结果:
text
0 1 2 3 4
10 11 12 13 14
1 3 5 7 9for (int i = start; i < stop; i += step) 会从 start 开始,按 step 增加,到 stop 之前停止。也就是说,stop 更像是“到这里就停”的边界,而不是最后一个会被输出的值。
正在加载概念检查...
固定次数的累加
计算 1 到 100 的整数和,可以让循环变量从 1 走到 100。
c
int total = 0;
for (int i = 1; i <= 100; i++) {
total += i;
}
printf("1 到 100 的总和:%d\n", total);运行结果:
text
1 到 100 的总和:5050这种写法比 while 更容易看出循环变量 i 的取值范围。
正在加载交互实验...
正在加载概念检查...
斐波那契数列
斐波那契数列(Fibonacci sequence)的前两项是 1, 1,从第三项开始,每一项都等于前两项之和。
c
int n;
scanf("%d", &n);
if (n <= 0) {
printf("请输入正整数。\n");
} else if (n == 1) {
printf("1\n");
} else {
int first = 1, second = 1;
printf("%d %d ", first, second);
for (int i = 3; i <= n; i++) {
int current = first + second;
printf("%d ", current);
first = second;
second = current;
}
printf("\n");
}一次可能的运行结果:
text
10
1 1 2 3 5 8 13 21 34 55循环中最重要的更新是这两行:
c
first = second;
second = current;它们会把窗口向后移动一格,让下一轮继续使用“前两项”。
正在加载概念检查...
正在加载本节练习...