C++ 竞赛入门
7-控制结构
控制结构
本节学会什么
- 根据条件选择执行不同的代码
- 使用
if、if ... else和else if - 用
{}写清每个分支包含的语句
为什么需要它
前面的程序总是从上到下执行同样的步骤,但题目常常会说“如果满足某个条件,就这样做;否则那样做”。判断成绩是否及格、比较两个数的大小、按年龄收费,都需要程序作出选择。
最小可运行示例
读入一个成绩,输出是否及格:
#include <iostream>
int main() {
int score;
std::cin >> score;
if (score >= 60) {
std::cout << "PASS\n";
} else {
std::cout << "FAIL\n";
}
return 0;
}
输入 75 时输出 PASS;输入 59 时输出 FAIL。score >= 60 的结果只有真或假:真时执行第一个代码块,假时执行 else 后的代码块。
关键过程与易错点
- 条件要放在
()中。比较相等使用==,单个=是赋值。 if只控制紧跟着的一条语句。即使目前只有一条语句,也建议写{},以后增加代码不会改变原来的判断范围。- 多个互斥等级可从严格到宽松写成
else if:
if (score >= 90) {
std::cout << "excellent\n";
} else if (score >= 60) {
std::cout << "pass\n";
} else {
std::cout << "fail\n";
}
一旦某个分支执行,整条 if ... else if ... else 就结束了。因此范围重叠时,顺序很重要:上面的 score >= 90 必须写在 score >= 60 前面。
动手检查
读入一个整数 n。若它是偶数,输出 even,否则输出 odd。提示:偶数除以 2 的余数是 0,判断应写成 n % 2 == 0。
再把程序改成判断一个年份是否能被 4 整除,先只处理这一条规则,分别测试 2024 和 2025。
立即练习
| 难度 | 题目 | 题解 | 训练目标 |
|---|---|---|---|
| 基础 | 洛谷 P5710:数的性质 | 题解 | 用多个条件表达式完成分类判断。 |
| 巩固 | 洛谷 P5711:闰年判断 | 题解 | 组合整除条件,注意 && 与 ` |
| 挑战 | 洛谷 P5713:洛谷团队系统 | 题解 | 比较两个方案的代价,并处理相等时的分支。 |