Care and diligence bring luck.
Judge each day not by the harvest
you reap but by the seeds you plant.
每一个程序都是由一条条语句组成,为了结构化程序设计,这里就引入了三种基本结构:顺序结构、选择结构、循环结构。顺序结构也就是从上而下,线性有序地依次执行,比如之前的 Hello World 程序,选择结构即根据条件成立与否选择程序执行的线路,循环结构的话就是重复执行一个或几个模块,直到条件满足跳出为止。下面就着重介绍第二个结构 —— 选择结构
选择结构用于判断给定的条件,根据判断的结果来确认某些条件是否成立,进而控制程序的流程,即如果判断成立,则执行下面的语句,否则执行另外分支的语句。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.openjudge.cn/
联系客服