1.单分支语句 2.多分支语句 3.逻辑运算符与逻辑表达式,关系运算符与关系表达式 4.三目运算符

登录以参加训练计划

一、条件控制结构对比

类型 语法结构 适用场景 特点
单分支结构 if(条件) { 代码块 } 只需处理条件成立的情况 简单判断,无备选方案
双分支结构 if(条件) {代码块1} else {代码块2} 非此即彼的两种选择 必须且只能执行其中一个分支
多分支结构 if-else if链switch-case 多个互斥条件判断 可读性高,处理离散值更方便
三目运算符 条件 ? 表达式1 : 表达式2 简单的值选择 代码简洁,适合赋值场景

二、具体实现形式

1. 单分支结构(Single Selection)

if(score >= 60) {
    cout << "成绩合格";
}

2. 双分支结构(Dual Selection)

if(temperature > 30) {
    cout << "开启空调";
} else {
    cout << "关闭空调";
}

3. 多分支结构(Multiple Selection)

形式一:if-else if链

if(grade == 'A') {
    cout << "优秀";
} else if(grade == 'B') {
    cout << "良好";
} else if(grade == 'C') {
    cout << "合格"; 
} else {
    cout << "不合格";
}

形式二:switch-case结构

switch(month) {
    case 1: case 3: case 5: case 7: case 8: case 10: case 12:
        cout << "31天";
        break;
    case 4: case 6: case 9: case 11:
        cout << "30天";
        break;
    case 2:
        cout << (is_leap_year ? 29 : 28) << "天";
        break;
    default:
        cout << "无效月份";
}

4. 三目运算符(Ternary Operator)

// 基本形式
int max = (a > b) ? a : b;

// 嵌套使用(慎用,影响可读性)
string result = (score >= 90) ? "优秀" : 
                (score >= 60) ? "合格" : "不合格";

三、关键差异对比

特性 if语句 switch语句 三目运算符
判断类型 任意布尔表达式 整型/枚举值匹配 布尔条件
执行方式 顺序判断条件 直接跳转到匹配case 立即求值
可读性 复杂逻辑更清晰 离散值处理更直观 简单判断更简洁
性能 需要逐级判断 跳转表优化(O(1)) 无性能差异
代码量 较多 中等 最少

四、注意事项

  1. case穿透问题

    switch(val) {
        case 1: 
            cout << "周一";  // 缺少break会继续执行case2
        case 2:
            cout << "周二";
            break;
    }
    
    • 故意省略break可实现多个case共享代码
    • 非故意遗漏会导致逻辑错误
  2. 浮点数判断

    • switch语句不支持浮点型case值
    • 浮点数比较应使用范围判断而非==
  3. 变量作用域

    if(int x = func()) {  // C++17起支持
        cout << x;  // x在此作用域有效
    }
    
  4. 三目运算符限制

    • 两个分支必须是相同或兼容类型
    • 不能包含流程控制语句(如return/break)

章节 1. 单分支结构

开放

题目 尝试 AC 难度
P81   【例15.2】 偶数 24 14 5
P84   练15.2 智商问题 25 14 5

章节 2. 双分支语句

开放

题目 尝试 AC 难度
P93   【例17.2】 蜗牛爬行 29 10 6
P95   练17.1 奇偶ASCII值判断 20 12 6
P116   练20.1  适合晨练 10 7 9
P117   练20.2  判断是否为两位数 19 10 6
P141   练23.3  晶晶赴约会 15 5 8
745   【入门】冷饮的价格(1) 4 4 10
P590   【入门】十位大还是个位大 5 4 10

章节 3. 多分支语句

开放

题目 尝试 AC 难度
P106   【例19.2】 判断身材 24 9 7
P110   练19.3  比大小 14 9 8
P122   【例21.2】 判断整数位数 21 12 5
P123   【例21.3】 字符类型判断 17 11 6
P138   【例23.3】 简单计算器 11 5 9
P128   练21.5  打车费用 27 6 8
747   【入门】冷饮的价格(2) 9 1 10