Skip to content

L2_06 多层分支/循环结构

一、多层分支结构

1.1 嵌套 if-else 语句

1.1.1 语法

cpp
if (条件1) {
    // 条件1为真时执行
    if (条件2) {
        // 条件2为真时执行
    } else {
        // 条件2为假时执行
    }
} else {
    // 条件1为假时执行
}

1.1.2 示例:成绩分级

cpp
#include <iostream>
using namespace std;

int main() {
    int score;
    cout << "输入成绩: ";
    cin >> score;
    
    if (score >= 60) {
        if (score >= 90) {
            cout << "优秀" << endl;
        } else if (score >= 80) {
            cout << "良好" << endl;
        } else {
            cout << "及格" << endl;
        }
    } else {
        cout << "不及格" << endl;
    }
    
    return 0;
}

1.2 嵌套 switch 语句

1.2.1 语法

cpp
switch (表达式1) {
    case 值1:
        switch (表达式2) {
            case 值A:
                // 代码
                break;
            default:
                // 代码
                break;
        }
        break;
    default:
        // 代码
        break;
}

1.2.2 示例

cpp
#include <iostream>
using namespace std;

int main() {
    int grade = 1;
    int score = 85;
    
    switch (grade) {
        case 1:
            switch (score / 10) {
                case 10:
                case 9:
                    cout << "优秀";
                    break;
                case 8:
                    cout << "良好";
                    break;
                default:
                    cout << "继续努力";
                    break;
            }
            break;
        default:
            cout << "未知等级";
            break;
    }
    
    return 0;
}

二、多层循环结构

2.1 嵌套 for 循环

2.1.1 语法

cpp
for (外层初始化; 外层条件; 外层更新) {
    for (内层初始化; 内层条件; 内层更新) {
        // 循环体
    }
}

2.1.2 示例:打印乘法表

cpp
#include <iostream>
using namespace std;

int main() {
    for (int i = 1; i <= 9; i++) {
        for (int j = 1; j <= i; j++) {
            cout << j << "x" << i << "=" << i*j << "\t";
        }
        cout << endl;
    }
    return 0;
}

2.2 嵌套 while 循环

2.2.1 语法

cpp
while (外层条件) {
    while (内层条件) {
        // 循环体
    }
}

2.2.2 示例:打印矩形

cpp
#include <iostream>
using namespace std;

int main() {
    int rows = 3, cols = 5;
    int i = 0;
    
    while (i < rows) {
        int j = 0;
        while (j < cols) {
            cout << "* ";
            j++;
        }
        cout << endl;
        i++;
    }
    
    return 0;
}

2.3 混合嵌套循环

2.3.1 示例:打印三角形

cpp
#include <iostream>
using namespace std;

int main() {
    int n = 5;
    
    for (int i = 1; i <= n; i++) {
        // 打印空格
        int j = n - i;
        while (j > 0) {
            cout << " ";
            j--;
        }
        
        // 打印星号
        for (int k = 1; k <= 2*i-1; k++) {
            cout << "*";
        }
        
        cout << endl;
    }
    
    return 0;
}

三、循环控制语句

3.1 break 语句

  • 跳出当前循环

3.2 continue 语句

  • 跳过本次循环,继续下一次

3.3 示例:查找质数

cpp
#include <iostream>
using namespace std;

int main() {
    int num = 29;
    bool isPrime = true;
    
    for (int i = 2; i < num; i++) {
        if (num % i == 0) {
            isPrime = false;
            break;  // 找到因数,立即退出循环
        }
    }
    
    cout << (isPrime ? "是质数" : "不是质数") << endl;
    
    return 0;
}

百炼成钢,融会贯通