• C++语法基础(3)——分支结构程序设计



    青舟智学×datawhale,仅为自己学习笔记,推荐大家参加datawhale组队学习注册青舟智学进行学习,侵权的话就删哈

    分支结构程序设计

    关系与逻辑表达式

    关系表达式

    • 大于>和大于等于>=运算符
    • 小于<和小于等于<=运算符
    • 相等==和不相等!=运算符
    • 关系表达式返回一个布尔值:成立为1(true)代表真,不成立为0(false)代表假
    int hp_a, hp_b;
    hp_a = 456;
    hp_b = 857;
    
    // 判断 自己血量 是否大于 敌方血量
    cout << (hp_a > hp_b) << endl;
    // 判断 自己血量 是否大于等于 敌方血量
    cout << (hp_a >= hp_b) << endl;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 浮点数一般不会用==或者!=来判断,因为可能产生表示误差。
      • 比较两个浮点数是否相等,需要看两个数的差值是否小于一定的精度,比如:
      • 对于浮点数ab,如果(a - b) < 1e-6如果值为真,就判断两个浮点数相等。
    float hp_c, hp_d;
    hp_c = 100.0;
    hp_d = 100.0;
    cout << ((hp_c - hp_d) < 1e-6) << endl;
    
    • 1
    • 2
    • 3
    • 4

    逻辑表达式

    • 关系表达式可以判断某个条件是否成立,逻辑表达式中包含了多个关系表达式,可以对多个条件进行判断
    • 常用的逻辑运算符有以下三种:
      • 逻辑AND运算符&&:判断两个关系表达式是否同时成立
      • 逻辑OR运算符||:判断两个关系表达式是否至少有一个成立
      • 逻辑NOT运算符!:判断某个关系表达式是否不成立
        在这里插入图片描述
    // 假设小六血量比敌方高,但是蓝量没有敌方高
    bool higher_hp = 1;
    bool higher_mp = 0;
    
    // 是否自己血量和蓝量都比敌方高
    cout << (higher_hp && higher_mp) << endl;
    // 是否自己血量和蓝量和中至少有一种比敌方高
    cout << (higher_hp || higher_mp) << endl;
    // 是否血量没有敌方高
    cout << (!higher_hp) << endl;
    // 是否自己血量和蓝量都没有敌方高
    cout << (!higher_hp && !higher_mp) << endl;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    运算符优先级

    • 至此,我们已经学习的运算符如下:
      • 算术运算符(+`` - * / % ++ --等)
      • 赋值运算符(=等)
      • 位运算符(<< >>等)
      • 关系运算符(> >= < <= == !=等)
      • 逻辑运算符(&& || !等)
    • 对于这些常用的运算符,按照计算优先级从高到低(左边更高,右边更低)进行排列,可以得到如下表格:
      在这里插入图片描述

    代码:判断闰年

    • 判断“闰年”的口诀是:四年一闰,百年不闰,四百年又闰。即闰年分为两种:
      • 一种是被400整除的年份
      • 一种是不被100整除,但是被4整除的年份
    int year;
    cin >> year;
    bool is_leap_year;
    
    // 是400的倍数;或者是4的倍数并且不是100的倍数
    is_leap_year = (year % 400 == 0) || ((year % 4 == 0) && (year % 100 != 0));
    // 或
    is_leap_year = !(year % 400) || (!(year % 4) && (year % 100));
    
    
    cout << is_leap_year << endl;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    if语句

    // 输入一个字符代表自己的名字
    char opt;
    cin >> opt;
    
    // 根据不同的名字说出不同的话
    if (opt == '6') {
        cout << "主人你好!" << endl;
        cout << "今天你想吃什么" << endl;
    }
    else if (opt == '1') {
        cout << "小一你好!" << endl;
        cout << "今天天气怎么样?" << endl;
    }
    else if (opt == '2')
        cout << "你有什么需要帮助的吗?" << endl;
    else if (opt == '4' || opt == '5')
        cout << "我不想跟你说话。" << endl;
    else
        cout << "我不太清楚你是谁..." << endl;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    switch语句

    • switch用于表示这样的分支结构:根据某个变量不同的值进行不同的操作。
    switch (变量名) {
        case 变量可能的情况1: 执行语句1; break;
        case 变量可能的情况2: 执行语句2; break;
        ...
        // 可以有任意数量的 case 语句
        default: 执行语句n;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 当遇到break语句时,switch 终止,控制流将跳转到整个 switch 语句后的下一行。
    • case后可以没有break, 如果某个case后没有break语句,程序就会接着往下执行。
    • default:一个switch语句可以有一个可选的default情况,出现在switch的结尾。default情况可用于上面所有case都不为真时执行。
    char opt;
    cin >> opt;
    
    switch (opt) {
        // 如果opt=='6',执行完两句cout后,遇见break,就会跳出整个switch
        case '6': 
            cout << "主人你好!" << endl;
            cout << "今天你想吃什么" << endl;
            break;
        case '1': 
            cout << "小一你好!" << endl;
            cout << "今天天气怎么样?" << endl;
            break;
        case '2': 
            cout << "你有什么需要帮助的吗?" << endl; 
            break;
        // 如果opt=='4',由于'4'的 case 后面没有 break
        // 所以会往下执行'5'的 case 后面的语句,直到遇到 break
        case '4': case '5':
            cout << "我不想跟你说话" << endl;
            break;
        default: 
            cout << "我不太清楚你是谁..." << endl;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
  • 相关阅读:
    在 macOS 上管理 Node版本
    pycharm无法加载第三方库问题解决
    充电学习—3、Uevent机制和其在android层的实现
    二分查找与二分答案
    【C++学习笔记】野指针的定义与避免
    对齐PyTorch,一文详解OneFlow的DataLoader实现
    031-JAVA窗体图形图像处理(Toolkit工具类及Font类及事件处理综合应用)
    YII项目在Docker中运行缓慢
    【快速上手系列】使用idea调百度AI接口实现人脸识别功能
    用Abp实现两步验证(Two-Factor Authentication,2FA)登录(三):免登录验证
  • 原文地址:https://blog.csdn.net/qq_44941689/article/details/125556913