• C++保姆级入门教程(8)—— 分支拓展


    哈喽大家好,我是iecne,本期为大家带来的是CPP/C++保姆级入门教程的第⑧期—— 分支拓展 ,包教包会,快来看看吧!

    此教程适合新手小白,因为语言会十分的通俗易懂,不会有很多的专业词汇出现,可以更好的掌握并且吸收,后续加上持之以恒的练习题目将会基本巩固


    目录

    一.分支结构

    二.max和min

    1.例题ABC

    (1)题目解析

    (2)参考答案

    2.用法解释

    3.拓展用法

    三.switch语句

    1.switch和if语句的区别

    2.switch的用法

    四.总结

     系列文章目录


    一.分支结构

    人们在人生中需要做出许多选择,小到考虑晚上吃什么,大到决定高考志愿填报的学校。只有一次次选择后才能带来无限可能,我们要根据自己掌握的情况,做出最佳的选择。

    程序的执行也不是一成不变的,往往会要求程序能够在不同的场合下有不同的动作。这时就需要在代码中使用条件语句来做出不同的选择。比如说,登录CSDN时,网站后台会将你提交的用户名和密码在后台数据库中看看是否匹配,如果能够匹配就登陆成功,否则就登陆失败。这一章就来介绍如何让程序做出选择


    二.max和min

    1.例题ABC

    【题目描述】

    三个整数分别为 A,B,CA,B,C。这三个数字不会按照这样的顺序给你,但它们始终满足条件:A < B < CA

    【输入格式】

    第一行包含三个正整数 A,B,CA,B,C,不一定是按这个顺序。这三个数字都小于或等于 100100。第二行包含三个大写字母 AA、BB 和 CC(它们之间没有空格)表示所需的顺序。

    【输出格式】

    在一行中输出 AA,BB 和 CC,用一个 (空格)隔开。

    输入输出样例

    输入

    1 5 3
    ABC

    输出 

    1 3 5

    输入 #2

    6 4 2
    CAB

    输出 #2

    6 2 4

    (1)题目解析

    第一行:输入三个数x、y、z,这三个数不一定有序,我们设A为当中(x,y,z中)最小的,C为最大的,B为剩下的那个(非最小非最大)。)

    现在你手里有ABC三个数了

    第二行:输入ABC三个字母(任意顺序),输出对应的ABC(就是上一行那三个数)

    //感谢 Lucaster_ 的翻译

    (2)参考答案

    1. #include
    2. using namespace std;
    3. int a,b,c,i,x,y,z,sum;
    4. char ch;
    5. int main()
    6. {
    7. cin>>x>>y>>z;
    8. sum=x+y+z;
    9. a=min(min(x,y),z);
    10. c=max(max(x,y),z);
    11. b=sum-a-c;
    12. for(i=1;i<=3;i++)
    13. {
    14. cin>>ch;
    15. if(ch=='A') cout<' ';
    16. if(ch=='B') cout<' ';
    17. if(ch=='C') cout<' ';
    18. }
    19. return 0;
    20. }

    2.用法解释

    我们上一《难题》用了一个很难的方法—— max and min

    1. a=min(min(x,y),z);
    2. c=max(max(x,y),z);

    我们看一下这两条代码,再分解以下

    1. int aa,cc,a,c;
    2. int x,y,z;
    3. aa=min(x,y);
    4. a=min(aa,z);
    5. cc=max(x,y)
    6. c=max(cc,z);

    首先解释以下min

    比如aa=min(x,y),意思就是aa=x和y中小的一个

    若x=10,y=8,aa=min(x,y),则aa=y //8

    反之,max就是取大的

    若x=10,y=8,aa=max(x,y),则aa=x //10

    然后我们把新的知识联系到老知识里边

    1. aa=min(x,y);
    2. 就等于
    3. if(x>y) aa=y;
    4. else aa=x;
    5. aa=max(x,y);
    6. 就等于
    7. if(x>y) aa=x;
    8. else aa=y;

    而第三题的那段代码就不用我解释了吧?


    3.拓展用法

    刚刚讲述了max 和 min 的基本用法,而max 和 min可以用以下函数解释(新手可以忽略

    1. int max(int a, int b)
    2. {
    3. return (a > b ? a : b);
    4. }
    5. int min(int a, int b)
    6. {
    7. return (a < b ? a : b);
    8. }

    (据有些博主说,使用max函数首先需要有algorithm的头文件,可是我是用iostream也能通过编译???)

     接着就是要讲一讲JYqwq博主评论的

    “事实上C++11中max(max(a,b),c)可以直接写成max({a,b,c})”

    即传入多个参数,必须要用{}包起来

    1. #include
    2. #include
    3. using namespace std;
    4. int main()
    5. {
    6. cout << max({ 1, 2, 3, 4, 5 }) << endl; //判断1 2 3 4 5哪个大
    7. return 0;
    8. }

    我想大家都应该知道1 2 3 4 5哪个大(6更大)

     则再看看大佬的评论中  max(max(a,b),c)可以直接写成max({a,b,c})

    前者是先判断a,b哪个大,大的再和c比较

    而max({a,b,c}),则是直接判断a,b,c哪个大,结果相同


    三.switch语句

     

    标switch的结构题

     


    1.switch和if语句的区别

    在一些程序编写中绝对少不了判断语句。
    如下面这个用if的简单的判断结构:

    1. #include
    2. using namespace std;
    3. int main()
    4. {
    5. int sum;
    6. cin>>sum;
    7. if(sum==1)
    8. {
    9. cout << "关注" << endl;
    10. }
    11. else if (sum==2)
    12. {
    13. cout << "关注+收藏" << endl;
    14. }
    15. else
    16. {
    17. cout << "关注+收藏+点赞" << endl;
    18. }
    19. return 0;
    20. }

    这种表达比较复杂(复杂?),我们还有一种更为简单的表达方式(简单?)

    这个结构就是switch,仍然是大佬JYqwq

    ”另外是不是漏了switch语句(虽然不是特别通用)”

    上代码还可以这样写

    1. #include
    2. using namespace std;
    3. int main()
    4. {
    5. int sum;
    6. cin >> sum;
    7. switch (sum)
    8. {
    9. case 1:
    10. cout << "关注" << endl;
    11. break;
    12. case 2:
    13. cout << "关注+收藏" << endl;
    14. break;
    15. default:
    16. cout << "关注+收藏+点赞" << endl;
    17. break;
    18. }
    19. return 0;
    20. }

    2.switch的用法

    在经过switch改进后,明显简洁很多,不过博主还是更喜欢if,毕竟switch没有if通用,但是这些基础还是要学会的

    其中case表示if,default表示else,学会了if还是很好理解switch的(在{}中就是使用case关键字来判断)

    在()中是需要判断的语句和变量(例如上面是判断sum变量的值);

    case后面跟的必须是常量表达式(包括字符表达式)(格式如:case 1:语句;[break;]),表达式可以是C++任何的合法语句,但是其值只能是字符型常量或者整型常量,该常量表达式是用来判断()里面的表达式的值是否与该常量表达式的值相等(看不懂可以跳过)

    每个分支case的常量表达式的值必须与某一值严格相等

    若switch的某一分支的语句不止一句,则所要求的的多条语句也不用写成语句块的形式,只需在最后的语句后面加上break;即可表示在此case的执行语句结束

    不会if的新手看文  C++保姆级入门教程(3)   if语句

    所以相比if,switch的规定还是很多的


    四.总结

    本节课主要是讲解了分支的补充(max/min,switch),至此分支结构思想博主已经彻彻底底分享完了,相信大家对这个逻辑有了一定的理解,大家可以自己动手敲敲代码,感受一下

    包教包会,帅的人已然点赞收藏关注,而丑的人还在犹豫,被犹豫了,快三连吧!


     系列文章目录

     本期收录于博主的专栏——C++保姆级入门教程,适用于编程入门初学者,感兴趣的朋友们可以订阅,查看其它“常见排序”。

    C++保姆级入门教程_iecne的博客-CSDN博客

    C++保姆级入门教程(1)   变量 输出 输入

    C++保姆级入门教程(2)   算术运算和赋值

    C++保姆级入门教程(3)   if语句

    C++保姆级入门教程(4)   循环

    C++保姆级入门教程(5)   顺序结构

    C++保姆级入门教程(6)   分支结构

    C++保姆级入门教程(7)  循环结构

    C++保姆级入门教程(8)  分支拓展


    感谢每一个观看本篇文章的朋友,更多精彩敬请期待:iecne的博客_CSDN博客-C++保姆级入门教程领域博主

    文章存在借鉴,如有侵权请联系修改删除!

  • 相关阅读:
    CMake 官方文档入门
    精品基于springboot的线上跳蚤市场平台
    有用FPGA开发长光辰芯HR400BSI探测器的吗?有偿请教技术问题
    IPv6进阶:IPv6 过渡技术之 GRE 隧道
    计算机毕业设计Java江智能股票推荐系统(源码+系统+mysql数据库+lw文档)
    CUDA环境配置在Ubuntu18
    STM32项目分享:智能家居语音系统
    阿坤老师的独特瓷器(Java详解)
    记一次服务器异常掉电,导致HBase Master is initializing 问题处理
    【PAT甲级】1077 Kuchiguse
  • 原文地址:https://blog.csdn.net/CSDN_linyanchen/article/details/126031445