• 04程序流程结构


    程序流程结构

    C/C++支持最基本的三种程序运行结构:

    • 顺序结构:程序按行顺序执行,不发生跳转
    • 选择结构:依据条件是否被满足,有选择地执行相应的功能
    • 循环结构:依据条件是否被满足,多次循环执行某段代码

    1. 选择结构

    1.1 if 语句

    作用:执行满足条件的代码段

    if的三种形式:

    1. 单行格式if语句:
      if (条件) { 条件满足后执行的语句 }
    int score;
    cin >> score;
    
    if (score > 80) {
        cout << "你被MIT录取了!" << endl;
    }
    
    1. 多行格式if语句:
      if (条件) { 满足时的代码 } else {不满足时的代码}
    int score;
    cin >> score;
    
    if (score > 80) {
        cout << "你被MIT录取了!" << endl;
    } else {
        cout << "你被家里蹲录取了!" << endl;
    }
    
    1. 多条件的if语句:
      if (条件1) { 代码1 } else if (条件2) { 代码2 } else { 代码3 }
    int score;
    cin >> score;
    
    if (score > 80) {
        cout << "你考上了MIT" << endl;
    } else if (score > 70) {
        cout << "你考上了Harvard" << endl;
    } else {
        cout << "你考上了哈尔滨佛学院" << endl;
    }
    

    案例1

    案例需求:

    • 提示用户输入一个高考考试分数,根据分数做如下判断
    • 如果分数大于600分视为考上一本,大于500分视为考上二本,考上400分视为考上三本,其余视为未考上本科
    • 在一本分数中,如果大于700分则考入北大,大于650分则考入清华,大于600分则考入人大。
    int main () {
        int score;
        cout << "请输入你的高考分数:" << endl;
        cin >> score;
        
        if (score > 600) {
            cout << "恭喜你考上了一本!" << endl;
            if (score > 700) {
                cout << "靓仔,你被北大录取了!" << endl;
            } else if (score > 650) {
                cout << "靓仔,你要和胡书记做校友了!" << endl;
            } else {
                cout << "靓仔,你要和强东做校友了!" << endl;
            }
        } else if (score > 500) {
            cout << "恭喜你考上了二本!" << endl;
        } else if (score > 400) {
            cout << "恭喜你考上了三本!" << endl;
        } else {
            cout << "死靓仔,三本都没考上" << endl;
        }
    
        return 0;
    }
    

    案例2

    案例需求:
    有三只猪ABC,分别输入三只猪的体重,并判断哪知猪最重。

    #include <iostream>
    using namespace std;
    
    int main () {
        int pigA, pigB, pigC;
        char mostFat;
    
        cout << "请输入猪a的体重:" << endl;
        cin >> pigA;
        cout << "请输入猪b的体重:" << endl;
        cin >> pigB;
        cout << "请输入猪c的体重:" << endl;
        cin >> pigC;
    
        if (pigA > pigB) {
            if (pigC > pigA) {
                mostFat = 'c';
            } else {
                mostFat = 'a'; 
            }
        } else {
            if (pigC > pigB) {
                mostFat = 'c';
            } else {
                mostFat = 'b';
            }
        }
    
        cout << "显然,最重的是猪" << mostFat << "。" << endl;
        
        return 0;
    }
    

    1.2 三目运算符

    作用:通过三目运算符实现简单的判断
    语法表达式1 ? 表达式2: 表达式3
    解释
    如果表达式1为真,执行表达式2,并返回表达式2的结果;
    如果表达式1为假,执行表达式3,并返回表达式3的结果;

    int a = 10;
    int b = 20;
    int c;
    
    // 将a与b中更大的值赋给c
    c = a > b ? a : b;
    

    1.3 switch语句

    作用:执行多条件分支语句
    语法

    switch () {
        case 结果1: 语句1; break;
        case 结果2: 语句2; break;
        case 结果3: 语句3; break;
        ...
        default: 语句n; break;
    }
    

    2. 循环结构

    2.1 while 语句

    作用:满足循环条件,执行循环语句
    语法while (循环条件) { 循环语句 }
    解释:只要循环条件为真,就执行循环语句

    // 输出0~9
    int num = 0;
    while (num < 10) {
        cout << num << endl;
        num++;
    }
    

    2.2 do-while语句

    作用:满足循环条件,执行循环语句
    语法do { 循环语句 } while (循环条件);
    注意:与while的区别在于do-while会先执行一次循环语句,再判断条件

    // 输出0~9
    int num = 0;
    do {
        cout << num << endl;
        num++;
    } while (num < 10);
    

    案例

    需求:
    水仙花数是指一个3位数,它的每个位上的数字的3次幂之和等于它本身。
    例如:1^3 + 5^3 + 3^3 = 153

    #include <iostream>
    using namespace std;
    
    int main () {
        int num = 100;
        int n, t, sum;
    
        while (num < 1000) {
            n = num;
            sum = 0;
    
            // 计算各位的三次方之和
            while (n != 0) {
                t = n % 10;
                n /= 10;
                sum += t*t*t;
            }
            if (sum == num) 
                cout << num << endl;
            num++;
        }
    
        return 0;
    }
    

    2.3 for 语句

    作用:满足循环条件,执行语句
    语法:for(起始表达式; 条件表达式; 末尾循环体) { 循环语句 }

    for (int i = 0; i < 100; i++) {
        cout << i << endl;
    }
    

    案例

    需求:
    1~100中如果数字的各位有7,或者十位含有7,或者该数字是7的倍数,我们打印敲桌子,其余数字直接打印输出。

    #include <iostream>
    using namespace std;
    
    int main () {
        for (int i = 1; i < 100; i++ ) {
            if (i % 10 == 7 || (i / 10) % 10 == 7 || i % 7 == 0) 
                cout << "敲桌子" << endl;
            else 
                cout << i << endl;
        }
    
        return 0;
    }
    

    2.4 嵌套循环

    作用:在循环体中嵌套循环,以解决实际问题。

    #include <iostream>
    using namespace std;
    
    int main () {
        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 10; j++) {
                cout << "* ";
            }
            cout << endl;
        }
    
        return 0;  
    }
    

    3. 跳转语句

    3.1 break语句

    作用:用于跳出选择或循环语句

    break的使用时机:

    • 出现在switch条件语句,作用是终止case并跳出switch;
    • 出现在循环语句中,作用是跳出循环语句;
    • 出现在嵌套循环语句中,作用是跳出最内层的循环;
    int num = 10;
    
    for (int i = 0; i < 100; i++) {
        if (num == 30) 
            break;
    }
    

    3.2 continue语句

    作用:在循环语句中,跳过本次循环中余下尚未执行的语句,继续执行下一次循环。

    // 输出1~100中的奇数
    for (int i = 1; i <= 100; i++) {
        if (i % 2 == 0)
            continue;
        cout << i << endl;
    }
    

    3.3 goto语句

    作用:无条件跳转语句
    语法goto 标记
    解释:如果标记的名称存在,执行goto语句后,会跳转到标记的位置

    #include <iostream>
    using namespace std;
    
    int main () {
        cout << "1" << endl;
        goto FLAG;
        cout << "2" << endl;
        cout << "3" << endl;
    FLAG:
        cout << "4" << endl;
    
        return 0;
    }
    

    输出结果为:

    1
    4

    CS专业在读,热爱编程。
    专业之外,喜欢阅读,尤爱哲学、金庸、马尔克斯。
  • 相关阅读:
    数字图像处理领域算法之高斯平滑
    字符串数组元素反转
    安装visual studio 2008 team 失败
    .NET中的正则表达式 (二)RegexOptions 枚举
    手动备份、还原windows7、office2010激活信息
    [转]蓝牙基带数据传输机理分析
    .NET中的正则表达式 (三)RegexCompilationInfo 类
    Android AVD语言设置
    蓝牙协议栈
    Bluetooth StructureBlueZ
  • 原文地址:https://www.cnblogs.com/jmhwsrr/p/15743214.html
Copyright © 2020-2023  润新知