第五课 分支结构

除了顺序结构,程序还有分支结构,根据条件选择不同的执行路径。C++中分支结构主要有if语句和switch语句。

一、分支结构特点

  • 根据条件判断结果,选择执行不同的程序路径
  • 程序不再只是直线执行,而是出现”岔路口”
  • 每次只会执行其中一个分支

二、if语句基本语法

if (条件) {
    // 条件为真时执行
}
#include <iostream>
using namespace std;

int main() {
    int age = 18;

    // 简单if语句
    if (age >= 18) {
        cout << "成年人" << endl;
    }

    // if-else语句
    if (age % 2 == 0) {
        cout << "偶数" << endl;
    } else {
        cout << "奇数" << endl;
    }

    return 0;
}

三、if-else语句

if (条件) {
    // 条件为真时执行
} else {
    // 条件为假时执行
}
#include <iostream>
using namespace std;

int main() {
    int score = 85;

    if (score >= 90) {
        cout << "优秀" << endl;
    } else if (score >= 80) {
        cout << "良好" << endl;  // 输出:良好
    } else if (score >= 70) {
        cout << "中等" << endl;
    } else if (score >= 60) {
        cout << "及格" << endl;
    } else {
        cout << "不及格" << endl;
    }

    return 0;
}

四、多重if-else

if (条件1) {
    // 条件1为真时执行
} else if (条件2) {
    // 条件2为真时执行
} else {
    // 所有条件为假时执行
}
#include <iostream>
using namespace std;

int main() {
    int age = 20;
    bool isStudent = true;

    if (age >= 18) {
        if (isStudent) {
            cout << "成人学生票" << endl;
        } else {
            cout << "成人票" << endl;
        }
    } else {
        if (isStudent) {
            cout << "学生票" << endl;
        } else {
            cout << "儿童票" << endl;
        }
    }

    return 0;
}

五、switch语句基本语法

switch (表达式) {
    case 值1:
        // 表达式等于值1时执行
        break;  // 跳出switch
    case 值2:
        // 表达式等于值2时执行
        break;
    // ... 更多case
    default:
        // 所有case都不匹配时执行
}

switch语句示例:

#include <iostream>
using namespace std;

int main() {
    int day = 3;

    switch (day) {
        case 1:
            cout << "星期一" << endl;
            break;
        case 2:
            cout << "星期二" << endl;
            break;
        case 3:
            cout << "星期三" << endl;  // 输出:星期三
            break;
        case 4:
            cout << "星期四" << endl;
            break;
        case 5:
            cout << "星期五" << endl;
            break;
        case 6:
            cout << "星期六" << endl;
            break;
        case 7:
            cout << "星期日" << endl;
            break;
        default:
            cout << "无效的星期" << endl;
    }

    return 0;
}

switch不加break的效果(case穿透):

#include <iostream>
using namespace std;

int main() {
    int month = 3;

    switch (month) {
        case 1: case 3: case 5: case 7:
        case 8: case 10: case 12:
            cout << "31天" << endl;  // 3月输出31天
            break;
        case 4: case 6: case 9: case 11:
            cout << "30天" << endl;
            break;
        case 2:
            cout << "28天(闰年29天)" << endl;
            break;
    }

    return 0;
}

六、三元运算符(简洁的if-else)

#include <iostream>
using namespace std;

int main() {
    int a = 5, b = 10;
    int max = (a > b) ? a : b;  // 如果a>b则max=a,否则max=b

    cout << "最大值:" << max << endl;  // 输出10

    return 0;
}

类似文章

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注