Skip to content

1. 循环结构

循环结构用于在满足条件的情况下重复执行某段代码,直到条件不满足为止。C语言中提供了三种循环结构:whiledo...whilefor

1.1 while 循环

  • 语法

    while (循环控制条件) {
         循环体中的语句;
         能够让循环结束的语句;
     }

  • 执行流程

    1. 首先判断 循环控制条件 是否为真。

    2. 如果为真,则执行 循环体 中的语句。

    3. 执行完 循环体 后,再次判断 循环控制条件 是否为真。

    4. 重复上述过程,直到 循环控制条件 为假,循环结束。

  • 示例

    int age = 0;
     while (age < 18) {
         printf("我今年还没成年\n");
         age++;
     }
     printf("我今年刚满18岁\n");

    • 输出:

      我今年还没成年
       (重复 18 次)
       我今年刚满18岁

  • 死循环

    • 如果 循环控制条件 永远为真,循环将无法结束,形成死循环。

    • 示例:

      while (1); // 死循环

  • 练习:计算 1 到 n 的和

    #include <stdio.h>
     int main() {
         int n = 0, sum = 0;
         printf("请输入n: ");
         scanf("%d", &n);
         while (n > 0) {
             sum += n;
             n--;
        }
         printf("和是:%d\n", sum);
         return 0;
     }

1.2 do...while 循环

  • 语法

    do {
         循环体中的语句;
         能够让循环结束的语句;
     } while (循环控制条件); // 注意分号

  • 执行流程

    1. 首先执行 循环体 中的语句。

    2. 执行完 循环体 后,判断 循环控制条件 是否为真。

    3. 如果为真,则继续执行 循环体;否则循环结束。

  • 特点

    • do...while 循环至少会执行一次 循环体,即使 循环控制条件 一开始就为假。
  • 示例

    int age = 0;
     do {
         printf("我今年还没成年\n");
         age++;
     } while (age < 18);

  • 练习:获取 1 到 100 之间 7 的倍数的个数

    #include <stdio.h>
     int main() {
         int n = 0;
         while (n <= 100) {
             if (0 == (n % 7)) {
                 printf("%d\n", n);
            }
             n++;
        }
         return 0;
     }

1.3 for 循环

  • 语法

    for (初始化表达式; 循环控制条件; 更新表达式) {
         循环体中的语句;
     }

  • 执行流程

    1. 执行 初始化表达式

    2. 判断 循环控制条件 是否为真。

    3. 如果为真,则执行 循环体 中的语句。

    4. 执行完 循环体 后,执行 更新表达式

    5. 重复上述过程,直到 循环控制条件 为假,循环结束。

  • 示例

    for (int i = 0; i < 5; i++) {
         printf("%d\n", i);
     }

    • 输出:

      0
       1
       2
       3
       4


2. 跳转语句

跳转语句用于改变程序的执行顺序,主要包括 breakcontinuegoto

2.1 break 语句

  • 作用

    • 用于立即退出当前循环或 switch 语句。
  • 示例

    for (int i = 0; i < 10; i++) {
         if (i == 5) {
             break; // 当 i 等于 5 时退出循环
        }
         printf("%d\n", i);
     }

    • 输出:

      0
       1
       2
       3
       4

2.2 continue 语句

  • 作用

    • 用于跳过当前循环的剩余部分,直接进入下一次循环。
  • 示例

    for (int i = 0; i < 5; i++) {
         if (i == 2) {
             continue; // 当 i 等于 2 时跳过本次循环
        }
         printf("%d\n", i);
     }

    • 输出:

      0
       1
       3
       4

2.3 goto 语句

  • 作用

    • 用于无条件跳转到程序中的某个标签处。
  • 注意

    • 过度使用 goto 会降低代码的可读性,应尽量避免。
  • 示例

    int i = 0;
     start:
     printf("%d\n", i);
     i++;
     if (i < 5) {
         goto start; // 跳转到 start 标签处
     }

    • 输出:

      0
       1
       2
       3
       4


总结

  1. 循环结构

    • while:先判断条件,再执行循环体。

    • do...while:先执行循环体,再判断条件。

    • for:适合已知循环次数的场景。

  2. 跳转语句

    • break:退出当前循环或 switch 语句。

    • continue:跳过当前循环,进入下一次循环。

    • goto:无条件跳转到标签处。

知识如风,常伴吾身