分享

选择结构

 长沙7喜 2018-04-16

Care and diligence bring luck.




Judge each day not by the harvest 

you reap but by the seeds you plant.



每一个程序都是由一条条语句组成,为了结构化程序设计,这里就引入了三种基本结构:顺序结构、选择结构、循环结构。顺序结构也就是从上而下,线性有序地依次执行,比如之前的 Hello World 程序,选择结构即根据条件成立与否选择程序执行的线路,循环结构的话就是重复执行一个或几个模块,直到条件满足跳出为止。下面就着重介绍第二个结构 —— 选择结构



    C++ 基础



选择结构


选择结构用于判断给定的条件,根据判断的结果来确认某些条件是否成立,进而控制程序的流程,即如果判断成立,则执行下面的语句,否则执行另外分支的语句。C++ 提供了三种选择结构:if 选择结构、if-else 选择结构、switch选择结构


    if 选择结构 

    if 语句单分支结构,没有 else 存在,如果表达式成立,则执行后面语句块,否则跳过语句块执行 if  结构之后的语句。一般表现形式为


       if(表达式)    语句块;
       if( 2>1 )    {        cout < 'ok';=""  =""  }=""  =""  cout=""><>

    注:

    表达式必须用圆括号括起来,不可省略

    语句块如果只有一条语句可以省略外面的花括号


    if-else 选择结构

    相对于if 语句单分支结构,这里 else 的存在使选择结构变成了双分支结构,也就是说当表达式为 false true 的时候均有分支可供选择。一般表现形式为

       if(表达式)        当表达式成立时执行的语句块;    else        当表达式不成立时执行的语句块;
       if( 2>1 )        cout < 'ok';=""  =""  else=""  =""  =""  =""  cout=""><>


    注:

    表达式必须用圆括号括起来,不可省略

    语句块如果只有一条语句可以省略外面的花括号


    嵌套的 if 语句

    if 语句允许嵌套,即在语句块中也允许嵌入 if 语句或者 if-else 语句(一般嵌套不大余 5),嵌套一般有3 种形式

       if(表达式1)    {        if(表达式2)            语句块1;    }    else        语句块2;

    注:

    嵌套的 if 语句在花括号内,下面的 else 和最外面的 if 组成一队

    当 if 语句嵌套时且无花括号存在,else 总是和最近的 if 语句配对


       if(表达式1)        if(表达式2)            语句块1;        else            语句块2;    else        语句块3;

    注:

    else 和最近的 if 配对,所以内部的 if 与 else 先配对,之后外部的配对


       if(表达式1)        语句块1;    else if(表达式2)        语句块2;
       else
           语句块3;

    注:

    if 与 else if 连用的情况多用于 测试多种条件

    一个 if 后可跟 零个 或 一个 else,else 必须在所有 else if 之后

    一个 if 后可跟 零个 或 多个 else if,else if 必须在 else 之前。

    一旦某个 else if 匹配成功,其他的 else if 或 else 将不会被测试


    三目运算符(? :)

    C++ 中唯一一个需要 3 个操作数的操作符,常用来代替 if-else 语句使代码变得简洁,该操作符也称为 条件运算符 或 条件表达式 ,通常格式如下

       b ? x : y

    先计算条件b,然后进行判断,如果b的值为true,计算x的值,运算结果为x的值;否则,计算y的值,运算结果为y的值。一个条件表达式从不会既计算x,又计算y。条件运算符是右结合的,也就是说,从右向左分组计算。例如,a?b:c?d:e将按a?b:(c?d:e)执行

       a ? b : c ? d : e    // 执行顺序,从右往左    a ? b : ( c ? d : e )

    条件运算符通常用于 赋值 或 输出语句中由于条件不同输出不同

       // 赋值    int max  = (a>b) ? a : b ;    // 输出语句    cout < (="" (2="">1) ? 'OK' : 'Okey' ) <>

    注:

    在 cout 输出语句中,用于输出的表达式必须用括号括起来

       cout < (a+b)=""><>

    switch 语句

     switch 语句用于实现多分支结构的程序,虽然可以用多次嵌套 if 语句来实现,但是程序会显得复杂,可读性变差,所以 C++ 引入了 switch 语句,通常格式如下

       switch(表达式)    {        case 常量表达式1:            语句块1;            break;
           case 常量表达式2:            语句块2;            break;        case 常量表达式3:            语句块3;            break;        ...
           case 常量表达式n:            语句块n;            break;        default:            语句n+1;    }

    分析

    首先在 switch 处计算表达式的值, 然后依次与下面的 case 常量表达式比较, 当表达式的值与常量表达式的值相等, 那么就从这个 case 处作为语句的入口, 执行 case 后面的语句, 遇到 break 语句则跳出整个 switch 选择结构,若表达式的值与常量表达式的值没有一个相同的则执行 default 后面的语句块

    注:

    语句中可以出现一个或多个 case,但是只能有一次 default 或省略 default 部分,default 语句可以出现在任何位置,不一定在最后

    多个 case 允许使用在同一个语句块前面

       case 1:    case 2:        cout < 'ok'="">< endl;=""  ="">

    switch 的表达式只能为 int 或 char 型数据, 当为 char 型数据时会将字符转化为相应的 ASCII 码值, 对于 字符串、浮点型 等不能作为 switch 的表达式

    常量表达式中不能出现变量,一般为 常数 或 字符,每个常量表达式的值不能相同

    case 后面的语句块可以是 一条 或 多条 语句, 且无需用 花括号 括起来, 因为它会自动从符合结果的 case 处自动向下执行

    case 语句中允许嵌套 switch 语句

       switch(表达式)    {        case 常量表达式1:            switch(表达式2)            {                case 常量表达式2:                    语句块;                    break;                case 常量表达式3:                    语句块;                    break;                ...            }            break;        case 常量表达式4:            语句块;            break;        ...
             }


    习题

    在线OJ —— 1.4 编程基础之逻辑表达式与条件分支


       http://noi./






      本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
      转藏 分享 献花(0

      0条评论

      发表

      请遵守用户 评论公约

      类似文章 更多