写程序无非两件事:把一件事重复做很多遍,以及在几种情况里挑一种。C++ 里前者靠循环,后者靠分支。这篇把 if/else、for、while、switch 一次过完,例子都能直接编译运行。

if / else:满足条件才做

#include <iostream>
using namespace std;

int main() {
    int score = 76;
    if (score >= 90) {
        cout << "优秀" << endl;
    } else if (score >= 60) {
        cout << "及格" << endl;   // 输出:及格
    } else {
        cout << "不及格" << endl;
    }
    return 0;
}

条件从上往下依次判断,命中一个就跳过剩下的。新手最容易踩的坑是把 == 写成 =:

if (x = 0) { ... }   // 这是赋值不是比较!x 被改成 0,条件恒为假

x = 0 先赋值再取值,结果恒为假,逻辑就悄悄歪了。编译器一般会警告,看到千万别忽略。

for:知道要循环几次就用它

for (int i = 1; i <= 3; i++) {
    cout << "第 " << i << " 圈" << endl;
}
// 输出:
// 第 1 圈
// 第 2 圈
// 第 3 圈

括号里三段:初始化、继续循环的条件、每轮结束后的动作。遍历数组也靠它:

int arr[] = {10, 20, 30};
for (int i = 0; i < 3; i++) {
    cout << arr[i] << " ";   // 输出:10 20 30
}

数组下标从 0 开始,上界用 < 不用 <=,多写一位就是越界。C++11 之后还有更省事的范围 for:

for (int v : arr) {
    cout << v << " ";   // 输出:10 20 30
}

不用管下标,只想拿值就优先用它。

while:不知道要循环几次

int n = 40, steps = 0;
while (n != 1) {          // 偶数减半,奇数变 3n+1
    n = (n % 2 == 0) ? n / 2 : n * 3 + 1;
    steps++;
}
cout << steps << endl;    // 输出:8

先判断条件再执行,条件一开始就不满足时一次都不跑。它的兄弟 do { ... } while (条件); 正好相反,先跑一轮再判断,适合"至少做一次"的场景,比如反复读用户输入。

break 与 continue:控制循环节奏

for (int i = 1; i <= 5; i++) {
    if (i == 3) continue;   // 跳过 3 这一轮
    if (i == 5) break;      // 直接结束整个循环
    cout << i << " ";
}
// 输出:1 2 4

break 跳出整个循环,continue 只跳过当前这一轮。两者常和 if 搭配,用来跳过特殊情况或提前收工。

switch:一个变量对着多个值挑

int day = 6;
switch (day) {
    case 6:
    case 7:
        cout << "周末" << endl;   // 输出:周末
        break;
    default:
        cout << "工作日" << endl;
        break;
}

switch 只能配整数、字符和枚举,判断不了范围。它的匹配是从上往下"掉"的:忘了写 break,后面的 case 会跟着执行,多数时候这就是 bug 的来源。

小结

  • if/else 管范围判断,小心 == 写成 =
  • 知道次数用 for(或范围 for),不确定次数用 while
  • break 结束整个循环,continue 只跳过本轮
  • switch 适合一个变量匹配多个具体值,每个 case 记得 break
  • 熟悉了循环分支,下一步可以把重复逻辑抽成函数了