Logo
Section 1 / 7

for 循环

了解 for 循环。

导入

for 循环

了解 for 循环。

什么是循环?

可编程计算机最实用的特性之一是,你可以指示它们重复执行某个计算或操作多次,而通常不会抱怨。C语言中的循环结构允许我们多次执行一段代码,而无需手动重复输入或列出相同的代码。

举个简单的例子,假设我们要计算从1到100所有整数的累计和。我们可以写出如下代码:

1int cumsum = 0; 2cumsum = cumsum + 1; 3cumsum = cumsum + 2; 4cumsum = cumsum + 3; 5... 6cumsum = cumsum + 100;

如你所见,上述代码效率很低。编程的一般原则是:当你发现自己多次复制粘贴相同代码时,就应该思考:一定有更好的方法,应该用更抽象的方式来表达这段代码,使其更简洁且可复用。在这种情况下,我们可以使用 for 循环来实现目标。

for 循环的语法

一个通用的 for 循环如下所示:

1for (初始化表达式; 循环条件; 循环表达式) { 2 // 程序语句在此处 3}

花括号 { 和 } 包裹的程序语句构成一个代码块,该代码块将被重复执行多次。这个代码块被称为循环体。循环执行的次数取决于圆括号中三个表达式的设置。

  • 初始化表达式 在循环开始前仅执行一次。它通常用于给一个控制循环迭代次数的变量赋初值。

  • 循环条件 是一个表达式,决定循环是否继续或终止,取决于其求值结果为真或假。

    注意: 如果 循环条件 求值为零,则视为 假;否则视为 真。

    当然,如果未指定循环停止的条件,循环将永远不会结束,从而导致无限循环——程序将无法终止。

  • 循环表达式 是在每次循环体执行后执行的代码。

示例

以上内容听起来有些抽象,下面我们通过一个具体例子来说明:实现一个循环,计算从1到100的整数累计和。

1#include <stdio.h> 2 3int main(void) { 4 int cumsum = 0; 5 int i; 6 7 for (i = 1; i <= 100; i++) { 8 cumsum = cumsum + i; 9 } 10 11 printf("1到100的整数累计和是 %d\n", cumsum); 12 return 0; 13}

让我们逐步分析这段 for 循环代码的执行过程:

  • 第4行和第5行,我们声明了整型变量 cumsum 和 i,并将 cumsum 初始化为 0。
  • 第7行,我们定义了 for 循环。
    • 圆括号中的第一个表达式将变量 i 初始化为 1。这在循环开始前执行一次。
    • 第二个表达式是一个条件判断:当 i 小于等于 100 时为真,否则为假。该条件在每次循环开始前都会重新评估。一旦条件为假,循环结束;否则继续下一次迭代。
    • 第三个表达式 i++ 在每次循环体执行后执行。这里我们把 i 的值加1。
  • 第8行,是循环体内的代码,将在每次循环中执行。此处我们将当前 i 的值(每次不同)加到 cumsum 变量中。
  • 第9行,右花括号 } 标识循环体的结束。
  • 第11行,我们输出 cumsum 变量的最终值。

由此可见,使用 for 循环,我们只需编写一次增加 cumsum 的代码,并将其放入一个设计为执行100次的循环中,每次使用不同的 i 值。

在前面的例子中,我们看到一个循环变量 i,它控制着 for 循环的执行次数。在现代C语言(C99及以后标准)中,我们还可以在 for 循环结构内部声明循环变量,而不仅仅是初始化它:

1for (int i = 0; i <= 100; i++)
1#include <stdio.h> 2 3int main(void) { 4 int cumsum = 0; 5 6 for (int i = 1; i <= 100; i++) { 7 cumsum = cumsum + i; 8 } 9 10 printf("1到100的整数累计和是 %d\n", cumsum); 11 // printf("变量 i 无法在 for 循环外部访问: %d\n", i); // 编译错误:i 只在 for 循环内可见 12 13 return 0; 14}

for 循环的循环体

1#include <stdio.h> 2 3int main(void) { 4 int cumsum = 0; 5 int i = 0; 6 7 for (i = 1; i <= 100; i++) 8 cumsum = cumsum + i; 9 10 11 printf("1到100的整数累计和是 %d\n", cumsum); 12 13 return 0; 14}

代码性能分析

C语言中的其他循环类型