跳转至

第四课:流程控制

1. 条件判断:if-else

if (条件) {
    // 条件为真时执行
} else if (另一个条件) {
    // 另一个条件为真时执行
} else {
    // 以上条件均不满足时执行
}

示例:成绩评级

#include <stdio.h>

int main() {
    int score = 85;

    if (score >= 90) {
        printf("优秀\n");
    } else if (score >= 80) {
        printf("良好\n");
    } else if (score >= 70) {
        printf("中等\n");
    } else if (score >= 60) {
        printf("及格\n");
    } else {
        printf("不及格\n");
    }

    return 0;
}

2. 多分支选择:switch-case

switch (表达式) {
    case 常量1:
        // 代码
        break;    // 跳出 switch
    case 常量2:
        // 代码
        break;
    default:      // 可选,匹配所有未列出的情况
        // 代码
}

示例:星期转换

int day = 3;
switch (day) {
    case 1: printf("星期一\n"); break;
    case 2: printf("星期二\n"); break;
    case 3: printf("星期三\n"); break;
    case 4: printf("星期四\n"); break;
    case 5: printf("星期五\n"); break;
    case 6: printf("星期六\n"); break;
    case 7: printf("星期日\n"); break;
    default: printf("无效输入\n");
}

别忘了 break

如果漏掉 break,程序会继续执行下一个 case(称为穿透)。有时可以利用穿透简化代码。

3. 循环

for 循环

适用于已知循环次数的情况:

for (初始化; 条件; 更新) {
    // 循环体
}

// 输出 1 到 5
for (int i = 1; i <= 5; i++) {
    printf("%d ", i);
}
// 输出:1 2 3 4 5

while 循环

适用于条件驱动的循环:

int i = 1;
while (i <= 5) {
    printf("%d ", i);
    i++;
}
// 输出:1 2 3 4 5

do-while 循环

无论条件是否满足,至少执行一次循环体:

int i = 1;
do {
    printf("%d ", i);
    i++;
} while (i <= 5);
// 输出:1 2 3 4 5

4. 循环控制:breakcontinue

// break:提前终止整个循环
for (int i = 1; i <= 10; i++) {
    if (i == 5) break;     // i=5 时跳出循环
    printf("%d ", i);
}
// 输出:1 2 3 4

// continue:跳过本次循环,进入下一次
for (int i = 1; i <= 5; i++) {
    if (i == 3) continue;  // 跳过 i=3
    printf("%d ", i);
}
// 输出:1 2 4 5

5. 嵌套循环:打印九九乘法表

for (int i = 1; i <= 9; i++) {
    for (int j = 1; j <= i; j++) {
        printf("%d×%d=%2d ", j, i, i * j);
    }
    printf("\n");
}

输出:

1×1= 1
1×2= 2 2×2= 4
1×3= 3 2×3= 6 3×3= 9
...(略)

6. 综合示例:猜数字游戏

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
    srand(time(NULL));
    int target = rand() % 100 + 1;  // 1~100 随机数
    int guess, attempts = 0;

    printf("猜数字游戏(1~100)\n");

    do {
        printf("输入你的猜测:");
        scanf("%d", &guess);
        attempts++;

        if (guess > target) {
            printf("太大了!\n");
        } else if (guess < target) {
            printf("太小了!\n");
        } else {
            printf("恭喜你猜对了!共猜了 %d 次\n", attempts);
        }
    } while (guess != target);

    return 0;
}

7. 练习

动手实践

  1. 输入三个整数,输出其中的最大值
  2. 打印 1 到 100 之间的所有偶数
  3. 输入一个正整数 n,计算 1 + 2 + 3 + ... + n 的和
  4. 打印以下图案(用嵌套循环):
    *
    **
    ***
    ****
    *****
    

← 上一课:运算符与表达式 | 返回 C语言概览