c语言第一周第3讲

循环语句

while循环

基本结构

while(表达式) {
    语句; // 表达式为真时执行
}
  • 先判断表达式,为真才执行循环体;为假则直接跳过。

例子:显示 5 到 1

#include <stdio.h>
int main() {
    int i = 5;
    while(i >= 1) {
        printf("%d ", i);
        i--; // 每次减1
    }
    return 0;
}
// 输出:5 4 3 2 1

无限循环

  • 用while(1)(1 代表 “真”)实现:

  • while(1) {
        printf("无限输出这句话\n");
    }
    

do while语句

基本结构

do {
    语句;
} while(表达式);
  • 先执行一次循环体,再判断表达式;只要表达式为真,就继续循环。

    例子:计算用户输入整数的位数

    #include <stdio.h>
    int main() {
        int num, count = 0;
        printf("输入一个整数:");
        scanf("%d", &num);
        do {
            num = num / 10; // 去掉最后一位
            count++;
        } while(num != 0); // 直到数字被“拆完”
        printf("位数是:%d\n", count);
        return 0;
    }
    // 输入123 → 输出3
    

for循环

. 基本结构

for(表达式1; 表达式2; 表达式3) {
    语句;
}
  • 表达式 1:初始化(只执行 1 次)
  • 表达式 2:循环条件(为真才执行循环体)
  • 表达式 3:更新变量(每次循环体结束后执行

. 例子:显示 5 到 1

#include <stdio.h>
int main() {
    for(int i = 5; i >= 1; i--) { // 初始化i=5;条件i≥1;每次i减1
        printf("%d ", i);
    }
    return 0;
}
// 输出:5 4 3 2 1  

省略表达式(C99 支持)

可以省略其中 1 个 / 多个表达式,但分号不能少

逗号运算符

  • 可以在表达式 1/3 中用逗号写多个操作

  • // 同时初始化i和j,同时更新i和j
    for(int i=1, j=10; i<=5; i++, j--) {
        printf("i=%d, j=%d\n", i, j);
    }
    // 输出:
    // i=1, j=10
    // i=2, j=9
    // ...
    

break语句

  • 立即跳出当前所在的循环

  • 找到第一个大于 5 的数就停止循环

  • for(int i=1; i<=10; i++) {
        if(i > 5) {
            break; // 跳出for循环
        }
        printf("%d ", i);
    }
    // 输出:1 2 3 4 5
    

continue语句

作用:跳过当前循环的剩余语句,直接进入下一次循环的条件判断:

// 跳过i=3,输出5、4、2、1
for(int i=5; i>=1; i--) {
    if(i == 3) {
        continue;
    }
    printf("%d ", i);
}
// 运行结果:5 4 2 1

goto语句

语法格式

  • 当程序执行到 goto 标识名; 时,会立即跳过中间所有代码,直接跳转到 标识名: 对应的语句处,从该位置继续执行。

  • 用 goto 实现循环(替代 while/for)

  • #include <stdio.h>
    int main() {
        int i = 5;
    
    loop_start:  // 定义循环开始的标识
        if (i < 1) {
            goto loop_end;  // 满足条件时,跳转到循环结束标识
        }
        printf("当前值:%d\n", i);
        i--;
        goto loop_start;  // 跳回循环开始,继续执行
    
    loop_end:  // 定义循环结束的标识
        printf("循环结束!");
        return 0;
    }
    
    当前值:5
    当前值:4
    当前值:3
    当前值:2
    当前值:1
    循环结束!