美文网首页
C++跑步入门笔记2- 运算符、流程控制语法

C++跑步入门笔记2- 运算符、流程控制语法

作者: 布拉德澈 | 来源:发表于2023-03-14 17:26 被阅读0次

    附录:cin获取键盘输入

    • 1.cin与cout对应的用于输入的对象(标准输入对象),通常对应的设备是键盘。
    • 2.cin可以将键盘的一系列字符(即输入)转换为接收信息的变量能够接收的形式。
    • 3.输入可以是字符串、整数、浮点数值,也可以是其他类型。cin对象根据接收值的变量类型,使用方法将键盘输入的字符序列转为所需类型。

    使用方法: cin >> value_holder。value_holder为储存输入的内存单元,可以是变量、引用等等。

    int main(){
        cout << "请输入一个整数:" << endl;
        int num = 0;
        cin >> num;
        cout << "你输入的数字是:" << num << endl;
        return 0;
    }
    

    一、运算符

    作用:用于执行代码的运算

    运算符类型 作用
    算术运算符 用于处理四则运算
    赋值运算符 用于将表达式的值赋给变量
    比较运算符 用于表达式的比较,并返回一个真值或假值
    逻辑运算符 用于根据表达式的值返回真值或假值

    1.1 算术运算符

    作用:用于处理四则运算
    算术运算符包括以下符号:

    运算符 术语 示例 结果
    + 正号 +3 3
    - 负号 -3 -3
    + 10 + 5 15
    - 10 - 5 5
    * 10 * 5 50
    / 10 / 5 2
    % 取模(取余) 10 % 3 1
    ++ 前置递增 a=2; b=++a; a=3; b=3;
    ++ 后置递增 a=2; b=a++; a=3; b=2;
    -- 前置递减 a=2; b=--a; a=1; b=1;
    -- 后置递减 a=2; b=a--; a=1; b=2;

    示例1:

    //加减乘除
    int main() {
        int a1 = 10;
        int b1 = 3;
        cout << a1 + b1 << endl;
        cout << a1 - b1 << endl;
        cout << a1 * b1 << endl;
        cout << a1 / b1 << endl;  //两个整数相除结果依然是整数
        int a2 = 10;
        int b2 = 20;
        cout << a2 / b2 << endl; 
        int a3 = 10;
        int b3 = 0;
        //cout << a3 / b3 << endl; //报错,除数不可以为0
    
        //两个小数可以相除
        double d1 = 0.5;
        double d2 = 0.25;
        cout << d1 / d2 << endl;
    
        system("pause");
        return 0;
    }
    

    总结:在除法运算中,除数不能为0

    示例2:

    //取模
    int main() {
    
        int a1 = 10;
        int b1 = 3;
        cout << 10 % 3 << endl;
    
        int a2 = 10;
        int b2 = 20;
        cout << a2 % b2 << endl;
    
        int a3 = 10;
        int b3 = 0;
        //cout << a3 % b3 << endl; //取模运算时,除数也不能为0
    
        //两个小数不可以取模
        double d1 = 3.14;
        double d2 = 1.1;
        //cout << d1 % d2 << endl;
    
        system("pause");
        return 0;
    }
    

    总结:只有整型变量可以进行取模运算

    示例3:

    //递增
    int main() {
        //后置递增
        int a = 10;
        a++; //等价于a = a + 1
        cout << a << endl; // 11
    
        //前置递增
        int b = 10;
        ++b;
        cout << b << endl; // 11
    
        //区别
        //前置递增先对变量进行++,再计算表达式
        int a2 = 10;
        int b2 = ++a2 * 10;
        cout << b2 << endl;
    
        //后置递增先计算表达式,后对变量进行++
        int a3 = 10;
        int b3 = a3++ * 10;
        cout << b3 << endl;
    
        system("pause");
        return 0;
    }
    
    

    总结:前置递增先对变量进行++,再计算表达式,后置递增相反

    1.2 赋值运算符

    作用:用于将表达式的值赋给变量
    赋值运算符包括以下几个符号:

    运算符 术语 示例 结果
    = 赋值 a=2; b=3; a=2; b=3;
    += 加等于 a=0; a+=2; a=2;
    -= 减等于 a=5; a-=3; a=2;
    *= 乘等于 a=2; a*=2; a=4;
    /= 除等于 a=4; a/=2; a=2;
    %= 模等于 a=3; a%2; a=1;

    示例:

    int main() {
        //赋值运算符
        // =
        int a = 10;
        a = 100;
        cout << "a = " << a << endl;
    
        // +=
        a = 10;
        a += 2; // a = a + 2;
        cout << "a = " << a << endl;
    
        // -=
        a = 10;
        a -= 2; // a = a - 2
        cout << "a = " << a << endl;
    
        // *=
        a = 10;
        a *= 2; // a = a * 2
        cout << "a = " << a << endl;
    
        // /=
        a = 10;
        a /= 2;  // a = a / 2;
        cout << "a = " << a << endl;
    
        // %=
        a = 10;
        a %= 2;  // a = a % 2;
        cout << "a = " << a << endl;
    
        system("pause");
        return 0;
    }
    

    1.3 比较运算符

    作用:用于表达式的比较,并返回一个真值或假值
    比较运算符有以下符号:

    运算符 术语 示例 结果
    == 相等于 4 == 3 0
    != 不等于 4 != 3 1
    < 小于 4 < 3 0
    > 大于 4 > 3 1
    <= 小于等于 4 <= 3 0
    >= 大于等于 4 >= 1 1

    示例:

    int main() {
    
        int a = 10;
        int b = 20;
        cout << (a == b) << endl; // 0 
        cout << (a != b) << endl; // 1
        cout << (a > b) << endl; // 0
        cout << (a < b) << endl; // 1
        cout << (a >= b) << endl; // 0
        cout << (a <= b) << endl; // 1
    
        system("pause");
        return 0;
    }
    

    注意:C和C++ 语言的比较运算中,“真”用数字“1”来表示, “假”用数字“0”来表示。

    1.4 逻辑运算符

    作用:用于根据表达式的值返回真值或假值
    逻辑运算符有以下符号:

    运算符 术语 示例 结果
    ! !a 如果a为假,则!a为真; 如果a为真,则!a为假。
    && a && b 如果a和b都为真,则结果为真,否则为假。
    || a || b 如果a和b有一个为真,则结果为真,二者都为假时,结果为假。

    示例1:逻辑非

    //逻辑运算符  --- 非
    int main() {
        int a = 10;
        cout << !a << endl; // 0
        cout << !!a << endl; // 1
        system("pause");
        return 0;
    }
    

    总结: 真变假,假变真

    示例2:逻辑与

    //逻辑运算符  --- 与
    int main() {
        int a = 10;
        int b = 10;
        cout << (a && b) << endl;// 1
        a = 10;
        b = 0;
        cout << (a && b) << endl;// 0 
        a = 0;
        b = 0;
        cout << (a && b) << endl;// 0
    
        system("pause");
        return 0;
    }
    

    总结:逻辑运算符总结: 同真为真,其余为假

    示例3:逻辑或

    //逻辑运算符  --- 或
    int main() {
    
        int a = 10;
        int b = 10;
        cout << (a || b) << endl;// 1
    
        a = 10;
        b = 0;
        cout << (a || b) << endl;// 1 
    
        a = 0;
        b = 0;
        cout << (a || b) << endl;// 0
    
        system("pause");
        return 0;
    }
    

    逻辑运算符总结: 同假为假,其余为真

    二、程序流程结构

    C/C++支持最基本的三种程序运行结构:==顺序结构、选择结构、循环结构==

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

    2.1 选择结构

    2.1.1 if语句

    作用:执行满足条件的语句
    if语句的三种形式

    • 单行格式if语句
    • 多行格式if语句
    • 多条件的if语句
    1. 单行格式if语句:if(条件){ 条件满足执行的语句 }
      条件判断.png
      示例:
      int main() {
       //选择结构-单行if语句
       //输入一个分数,如果分数大于600分,超过重点大学分数线
       int score = 0;
       cout << "请输入一个分数:" << endl;
       cin >> score;
       cout << "您输入的分数为: " << score << endl;
       //if语句
       //注意事项,在if判断语句后面,不要加分号
       if (score > 600){
           cout << "恭喜你,达到重点大学分数线!!!" << endl;
       }
       system("pause");
       return 0;
      }
      

    注意:if条件表达式后不要加分号

    1. 多行格式if语句:if(条件){ 条件满足执行的语句 }else{ 条件不满足执行的语句 };

      clip_image002-1541662519170.png
    2. 多条件的if语句:if(条件1){ 条件1满足执行的语句 }else if(条件2){条件2满足执行的语句}... else{ 都不满足执行的语句}

    clip_image002-1541662566808.png

    示例:

        int main() {
        int score = 0;
        cout << "请输入考试分数:" << endl;
        cin >> score;
        if (score > 90){
            cout << "很优秀" << endl;
        }else if (score > 80){
            cout << "良好" << endl;
        }else if (score > 60){
            cout << "及格" << endl;
        }else{
            cout << "未及格" << endl;
        }
    
        system("pause");
        return 0;
    }
    

    嵌套if语句:在if语句中,可以嵌套使用if语句,达到更精确的条件判断

    练习案例: 三只小猪称体重
    有三只小猪ABC,请分别输入三只小猪的体重,并且判断哪只小猪最重?

    #include<iostream>
    using namespace std;
    
    int main() {
        //三只小猪称体重
        int pig1 = 0;
        int pig2 = 0;
        int pig3 = 0;
    
        cout << "请输入1号小猪的体重" << endl;
        cin >> pig1;
        cout << "请输入2号小猪的体重" << endl;
        cin >> pig2;
        cout << "请输入3号小猪的体重" << endl;
        cin >> pig3;
    
        cout << "1号小猪的体重" << pig1 << endl;
        cout << "2号小猪的体重" << pig2 << endl;
        cout << "3号小猪的体重" << pig3 << endl;
    
        if ((pig1 > pig2)&&(pig1 > pig3)) {
            cout << " 1号小猪最重!" << endl;
        }
        else if (pig2 > pig3) {
            cout << " 2号小猪最重!" << endl;
        }
        else {
            cout << " 3号小猪最重!" << endl;
        }
    
        system("pause");
        return 0;
    }
    

    2.1.2 三目运算符

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

    int main() {
    
        int a = 10;
        int b = 20;
        int c = 0;
        c = a > b ? a : b;
        cout << "c = " << c << endl;
        //C++中三目运算符返回的是变量,可以继续赋值
        (a > b ? a : b) = 100;
        cout << "a = " << a << endl;
        cout << "b = " << b << endl;
        cout << "c = " << c << endl;
    
        system("pause");
        return 0;
    }
    

    总结:和if语句比较,三目运算符优点是短小整洁,缺点是如果用嵌套,结构不清晰

    2.1.3 switch语句

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

    switch(表达式)
    {
        case 结果1:执行语句;break;
        case 结果2:执行语句;break;
        ...
        default:执行语句;break;
    }
    

    示例:

    int main() {
        //请给电影评分 :10 ~ 9 经典   , 8 ~ 7 非常好,6 ~ 5 一般,5分以下 烂片.
        int movieScore = 0;
        cout << "请给这部电影打分" << endl;
        cin >> movieScore;
        switch(movieScore) {
            case 10:
            case 9:
                cout << "经典" << endl;
                break;
            case 8:
            case 7:
                cout << "非常好" << endl;
                break;
            case 6:
            case 5:
                cout << "一般" << endl;
                break;
            default:
                cout << "烂片" << endl;
                break;
        }
        system("pause");
        return 0;
    }
    

    注意1:switch语句中表达式类型只能是整型或者字符型
    注意2:case里如果没有break,那么程序会一直向下执行
    总结:与if语句比,对于多条件判断时,switch的结构清晰,执行效率高,缺点是switch不可以判断区间

    2.2 循环结构

    2.2.1 while循环语句

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

    while循环.png
    示例:
    int main() {
        int num = 0;
        while (num < 10)
        {
            cout << "num = " << num << endl;
            num++;
        }   
        system("pause");
        return 0;
    }
    

    注意:在执行循环语句时候,程序必须提供跳出循环的出口,否则出现死循环

    while循环练习案例: 猜数字

    案例描述:系统随机生成一个1到100之间的数字,玩家进行猜测,如果猜错,提示玩家数字过大或过小,如果猜对恭喜玩家胜利,并且退出游戏。

    //猜数字
    int main(){
        srand((unsigned int)time(NULL));
        int num = rand()%100+1;
        int playNum = 0;
        cout << "请玩家输入一个数" << endl;
        while (1) {
            cin >> playNum;
            if (playNum > num) {
                cout << "大了!" << endl;
            }
            else if (playNum < num) {
                cout << "小了!" << endl;
            }
            else {
                cout << "恭喜你,猜对了!" << endl;
                break;
            }
        }
        system("pause");
        return 0;
    }
    

    2.2.2 do...while循环语句

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

    do...while.png

    示例:

    int main() {
        int num = 0;
        do
        {
            cout << num << endl;
            num++;
        } while (num < 10);
        system("pause");
        return 0;
    }
    

    总结:与while循环区别在于,do...while先执行一次循环语句,再判断循环条件

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

    int main(){
        int num = 100;
        do {
            int ud = 0;   //个位
            int td = 0;   //十位
            int hd = 0;   //百位
    
            ud = num % 10;
            td = num / 10 % 10;
            hd = num / 100;
            if (ud*ud*ud + td*td*td + hd*hd*hd == num) {
                cout << num << endl;         
            }
            num ++;
        }while(num <1000);
        system("pause");
        return 0;
    }
    

    2.2.3 for循环语句

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

    示例:

    int main() {
        for (int i = 0; i < 10; i++){
            cout << i << endl;
        }
    
        system("pause");
        return 0;
    }
    

    注意:for循环中的表达式,要用分号进行分隔
    总结:while , do...while, for都是开发中常用的循环语句,for循环结构比较清晰,比较常用

    2.2.4 嵌套循环

    作用: 在循环体中再嵌套一层循环,解决一些实际问题

    示例:

    int main() {
        //外层循环执行1次,内层循环执行1轮
        for (int i = 0; i < 10; i++){
            for (int j = 0; j < 10; j++){
                cout << "*" << " ";
            }
            cout << endl;
        }
        system("pause");
        return 0;
    }
    

    练习案例:乘法口诀表

    int main(){
        //乘法口诀表
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= i; j++) {
                cout << i << "X" << j << "=" << i * j<< " ";
            }
            cout << endl;
        }
        system("pause");
        return 0;
    }
    

    2.3 跳转语句

    2.3.1 break语句

    作用: 用于跳出【选择结构】或者【循环结构】
    break使用的时机:

    • 出现在switch条件语句中,作用是终止case并跳出switch
    • 出现在循环语句中,作用是跳出当前的循环语句
    • 出现在嵌套循环中,跳出最近的内层循环语句

    2.3.2 continue语句

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

    注意:continue并没有使整个循环终止,而break会跳出循环

    2.3.3 goto语句

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

    示例:

    int main() {
    
        cout << "1" << endl;
        goto FLAG;
        cout << "2" << endl;
        cout << "3" << endl;
        cout << "4" << endl;
        FLAG:
        cout << "5" << endl;
        system("pause");
        return 0;
    }
    

    注意:在程序中不建议使用goto语句,以免造成程序流程混乱

    相关文章

      网友评论

          本文标题:C++跑步入门笔记2- 运算符、流程控制语法

          本文链接:https://www.haomeiwen.com/subject/zfnhrdtx.html