第七章、迭代语句

迭代的概念:

迭代(Iteration)就是通过不断重复和改进来逐步接近或达成目标的过程。迭代通常每次重复都会根据前一次的反馈进行调整优化,最终实现目标。

迭代语句(Iteration statements)也叫循环语句。迭代语句用于将一条语句(可以是一条复合语句)在满足特定条件时重复执行多次,避免代码重复来实现复杂的功能。

C 语言中的迭代语句有 3 种:

  1. for 语句
  2. while 语句
  3. do-while语句

迭代语句的语法如下:

while ( expression ) statement
do statement while ( expression ) ;
for ( expression ; expression ; expression ) statement
for ( declaration expression ; expression ) statement

以下会详细讲解上述语法。

1. for 语句

for 语句通常用于控制一段代码(一条语句或复合语句)的执行次数,直到满足某个条件为止的循环。

for 语句的语法有两种

1、没有变量声明的 for 语句

for (表达式1; 表达式2; 表达式3)
    语句

2、带有变量声明的 for 语句

for (变量声明1 表达式2; 表达式3)
    语句

语法中:for 是关键字。

for 语句的执行过程:

  1. 先执行 表达式1变量声明1 此部分通常对循环中需要使用的变量进行创建(仅适用于带有变量声明的语法2)和初始化。
  2. 计算 表达式2,根据计算结果值来决定是否执行语句
    1. 表达式2的计算结果为非零值时,则执行语句
    2. 表达式2的计算结果为零值时(整数:0、浮点数:0.0、字符:'\0'或空指针:(void*)0),此 for 语句执行结束。
  3. 语句 部分正常执行完毕后则执行 表达式3,然后继续回到第二步计算 表达式2

总结:

  1. 表达式1变量声明1 通常用来初始化循环变量。
  2. 表达式2 通常用来判断是否继续循环。
  3. 表达式3 通常用来更新循环变量。
  4. 语句 是循环的执行体。

说明:

  1. 表达式1变量声明1 会在 for 语句运行时最先运行,且只运行一次。
  2. 变量声明1 中可以声明变量,此处声明的变量的生命周期属于此 for 语句内,不能在此 for 语句之外使用。
  3. 变量声明1 必须以分号结束,且只能有一个分号作为结束,如果有多个变量声明则使用逗号(,)分隔。
  4. 表达式1 可以为空。
  5. 变量声明1 可以为空,为空时需要补充一个分号(;)。
  6. 表达式2 可以为空。为空时表示此表达式则只为真值(1),等同于添加一个 1 作为表达式2。
  7. 表达式3 可以为空。
  8. 语句 不能为空,如果不需要执行任何语句,需要添加空语句 ; 或 空复合语句 {}

示例

打印 1 到 10 十个整数。

#include <stdio.h>

int main(int argc, char *argv[]) {
    int number;  // 用于控制循环次数的变量

    for (number = 1; number <= 10; number ++) {
        printf("%d\n", number);
    }
    printf("程序退出前,number:%d\n", number); // 此时 number 的值时多少?
    return 0;
}

也可以写成

#include <stdio.h>

int main(int argc, char *argv[]) {
    for (int number = 1; number <= 10; number ++) {
        printf("%d\n", number);
    }
    // printf("程序退出前,number:%d\n", number); // 此处打印number 会报错。
    return 0;
}

练习1:

打印 1 - 101 之间所有的偶数。

练习2:

打印 1 - 100 之间所有的奇数的和。