选择结构

用于解决判断型问题,即根据不同的条件选择不同的操作,也称为分支结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/*这里补充一下之前的知识点*/
#include <iostream>
using namespace std;

int main() {
int a = 10;
a += 2; // 累加赋值运算符,a = 10+2 = 12
a -= 5; // a = 12-5 = 7
a *= 3; // a = 7*3 = 21
a /= 4; // a = 21/4 = 5(整数除法,舍去小数)
a %= 2; // a = 5%2 = 1
cout << a << endl; // 输出1
return 0;
}

if语句

单分支结构【if(表达式)语句】

语句可为单条语句,也可以是复合语句(需用{}括起来)

双分支结构【if(表达式)语句1 else 语句2】

else条件范围内有多条语句也需要用{}扩起来

多分支结构【if() else if() ···else()】

1
2
3
4
5
6
7
8
9
10
if(num>=1000) 
rate = 0.80;
else if(num>=800)
rate = 0.85;
else if(num>=600)
rate = 0.88;
else if(num>=300)
rate = 0.90;
else
rate = 0.95;

if语句的嵌套

在if语句结构中又包含一个或多个if语句,else总是与理他最近的if配对,因此若ifelse数量不匹配,则用{ }实现,避免干扰

条件运算符(1?2 :3)

我们可以用max = (a>b)?a:b等价于if(a>b) max=a; else max=b;,条件运算符的运算级别仅比赋值运算符高一级,因其要求有3个操作对象因此也称为三目运算符(C++中的唯一一个)

执行顺序:判断1,成立就执行2,否则执行3

switch语句(多分支选择结构)

旨在避免嵌套if语句的冗长与低可读性

1
2
3
4
5
6
switch(表达式){                  //表达式需为整型或char型(这样好选择)
case 0:语句1;break;
case 1:语句2;break; //当表达式的值与case语句的值相匹配时,将从该case语句开始执行,直 到遇到一个break语句或到达switch语句的末尾
·······
default:语句n+1;break; //(可选),当所有case子句都不能匹配时执行
}

若无break语句,程序不会跳出,会按序执行,但也因此,我们可以利用该特性实现多个 case 共享同一套执行逻辑;

1
2
3
4
switch(c){                        //假设已预先设置c的值,一般是子句中会出现的,用于提前声明好类型
case 'a':
case 'A': cout<<"是A"<<endl;break; //这样两种情况下都会输出一样的结果,省事
}

若在switch结构中没有出现上述的“有意穿透”,那么其顺序可以随意顺序;不过一般默认有default还是放最后并加break;

case内若有多条语句可以不用{},其会自动按序执行case子句之后的执行语句,但若其中有变量的定义或是有初始化行为,则必须加{}