3、C++基础语法(下):流程控制与循环
好,咱们接着聊。上一章我们把变量、运算符、类型这些“砖块”码好了,这一章就该聊聊怎么让这些砖块“动起来”。说白了,就是让程序能做判断、能反复干活。这就是流程控制和循环。
我个人觉得,流程控制是代码真正开始有“灵魂”的地方。没有它,代码就是一潭死水,从上往下执行一遍就完了。有了它,代码才能根据不同的情况做出不同的反应。
一、if/else:最朴素的判断
if/else 是 C++ 里最基础、最常用的判断结构。它的逻辑很简单:如果条件成立,就做 A;否则,就做 B。
int score = 85;
if (score >= 60) {
cout << "及格了" << endl;
} else {
cout << "不及格" << endl;
}
嗯,这里要注意:if 后面的条件必须用括号括起来。而且,哪怕只有一行代码,我也建议你加上花括号 {}。为什么?
我曾经在项目里见过一个 bug,就是因为少写了花括号,导致逻辑完全跑偏。你想想看,如果后面维护的人加了一行代码,没注意缩进,那后果就是灾难性的。
二、switch:多路分支的利器
当判断条件特别多的时候,if/else 写起来会显得很啰嗦。这时候,switch 就派上用场了。
int day = 3;
switch (day) {
case 1:
cout << "周一" << endl;
break;
case 2:
cout << "周二" << endl;
break;
case 3:
cout << "周三" << endl;
break;
default:
cout << "其他" << endl;
break;
}
switch 的每个 case 后面都要跟一个 break,否则会“穿透”到下一个 case。这个特性有时候会被故意利用,但大多数情况下,忘了写 break 就是个坑。
三、for 循环:最常用的循环
for 循环是 C++ 里最灵活的循环。它的结构是:初始化 → 条件判断 → 循环体 → 更新。
for (int i = 0; i < 5; i++) {
cout << "第 " << i << " 次循环" << endl;
}
我个人习惯把 for 循环用在“我知道要循环多少次”的场景。比如遍历数组、处理固定次数的任务。
我记得有一次写一个数据处理模块,需要遍历一个很大的数组。一开始我用 while 循环,结果忘了写自增,直接死循环了。后来改成 for 循环,把自增写在括号里,再也没出过这种问题。
for(;;)。
四、while 循环:条件驱动
while 循环的逻辑更简单:只要条件成立,就一直执行。
int count = 0;
while (count < 5) {
cout << count << endl;
count++;
}
while 循环适合用在“不知道要循环多少次,但知道什么时候停止”的场景。比如读取文件直到结束、等待用户输入特定值。
五、do-while 循环:至少执行一次
do-while 和 while 的区别在于:do-while 先执行一次循环体,再判断条件。也就是说,它至少会执行一次。
int num = 0;
do {
cout << "请输入一个正数: ";
cin >> num;
} while (num <= 0);
这个例子很典型:我们想让用户输入一个正数,如果输入不对就重新输入。用 do-while 就很自然——先让用户输入一次,不对再继续。
说实话,do-while 在实际项目里用得不算多。但一旦遇到“至少执行一次”的场景,它就是最优雅的解法。
六、break 与 continue:循环的“刹车”和“跳过”
这两个关键字是循环里的控制利器。
- break:立即跳出整个循环。不管循环条件是否满足,直接结束。
- continue:跳过本次循环的剩余部分,直接进入下一次循环。
// break 示例:找到第一个偶数就停止
for (int i = 1; i <= 10; i++) {
if (i % 2 == 0) {
cout << "找到偶数: " << i << endl;
break;
}
}
// continue 示例:跳过奇数,只打印偶数
for (int i = 1; i <= 10; i++) {
if (i % 2 != 0) {
continue;
}
cout << i << " 是偶数" << endl;
}
break 和 continue 的区别,说白了就是:break 是“我不干了,全剧终”;continue 是“这次我不干了,下次继续”。
七、综合示例:猜数字游戏
咱们把今天学的知识串起来,写一个简单的猜数字游戏。
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main() {
srand(time(0));
int target = rand() % 100 + 1; // 1~100 随机数
int guess;
int attempts = 0;
cout << "猜一个 1~100 之间的数字" << endl;
do {
cout << "请输入你的猜测: ";
cin >> guess;
attempts++;
if (guess > target) {
cout << "太大了!" << endl;
} else if (guess < target) {
cout << "太小了!" << endl;
} else {
cout << "恭喜你,猜对了!" << endl;
cout << "你用了 " << attempts << " 次机会" << endl;
break;
}
if (attempts >= 7) {
cout << "次数用完了,答案是: " << target << endl;
break;
}
} while (true);
return 0;
}
这个例子用了 do-while 循环(至少猜一次)、if/else 判断(大小比较)、break(猜对或次数用完时退出)。你看,流程控制和循环组合起来,就能写出有“交互感”的程序了。
八、总结
这一章的内容,说白了就是三件事:判断、循环、控制。
- 判断用 if/else 或 switch
- 循环用 for、while、do-while
- 控制用 break 和 continue
这些是 C++ 编程的“骨架”。没有它们,代码就是一盘散沙。有了它们,你才能写出真正有逻辑、能解决问题的程序。
嗯,这一章就到这儿。代码多敲几遍,自然就熟了。