章节概述

分支结构通过判断条件决定程序的执行路径,是控制流程最基础的逻辑。
配合 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 | 国际竞赛,适合提升 |