写程序无非两件事:把一件事重复做很多遍,以及在几种情况里挑一种。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- 熟悉了循环分支,下一步可以把重复逻辑抽成函数了