章节概述
分支结构通过判断条件决定程序的执行路径,是控制流程最基础的逻辑。
配合 if-else、switch 和三目运算符实现条件判断。
核心原理
1. if-else 分支
if (条件1) { 代码1; }
else if (条件2) { 代码2; }
else { 代码3; }
if-else if-else 结构中,最多只会执行一个分支(从上到下,一旦匹配即跳过其余)。
2. 短路求值
| 运算符 | 短路规则 |
|---|---|
&& | 左侧为 false 时右侧不执行 |
| ` |
3. 条件判断的核心模式
// 区间判断
if (x <= 150) ...
else if (x <= 400) ...
else ...
// 三目运算符(if-else 简写)
int sign = (n < 0) ? -1 : 1;
// 字符转下标
int idx = c - 'A'; // 'A'→0, 'B'→1, ...关键数据结构
- 无特殊数据结构需求(基础语法)
P5712 输出苹果 (Apples)
题目: 输入苹果数量,单数输出 apple,复数输出 apples。
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
if (n == 1)
cout << "Today, I ate 1 apple." << endl;
else
cout << "Today, I ate " << n << " apples." << endl;
return 0;
}P5711 数的性质
题目: 判断奇偶性,以及能被 3 或 5 整除但不能同时被 3 和 5 整除。
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
if (n % 2 == 0) cout << "偶数 "; else cout << "奇数 ";
bool d3 = (n % 3 == 0), d5 = (n % 5 == 0);
if (d3 && d5) cout << "能同时被3和5整除";
else if (d3 || d5) cout << "能被3或5整除,但不能同时被3和5整除";
else cout << "既不能被3整除也不能被5整除";
return 0;
}P4414 [COCI2006-2007#2] ABC
题目: 三个整数 A、B、C,按给定的排列顺序输出。
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int a[3]; string s;
cin >> a[0] >> a[1] >> a[2] >> s;
sort(a, a + 3);
cout << a[s[0] - 'A'] << " " << a[s[1] - 'A'] << " " << a[s[2] - 'A'];
return 0;
}P1422 小玉家的电费
题目: 阶梯电价分段计算。
#include <cstdio>
int main() {
int x; scanf("%d", &x);
double ans = 0;
if (x <= 150) ans = x * 0.4463;
else if (x <= 400) ans = 150 * 0.4463 + (x - 150) * 0.4663;
else ans = 150 * 0.4463 + 250 * 0.4663 + (x - 400) * 0.5663;
printf("%.1f\n", ans);
return 0;
}推荐练习题(洛谷)
相关技巧
多平台练习
| 洛谷 | 本题单 | 竞赛基础 |
| POJ (北大) | PKU JudgeOnline | 经典题目,适合巩固 |
| HDU (杭电) | HDU OJ | 暑期多校训练 |
| Codeforces | Codeforces | 国际竞赛,适合提升 |