在上一篇已经介绍了if-else结构,但是在C++中,有一个特殊的分支结构运算符–三目运算符,经常用来代替if-else结构,三目运算符读起来更简明扼要,但第一次使用时不那么容易理解,这需要一点时间。后面我们会继续介绍多分支switch结构。

三目运算符

下面先来看一下三目运算符,长什么样子。

1
a ? b : c;

如果a为true,则整个表达式的值为b;否则,整个表达式的值为C。举例说明

1
x = 8 > 7 ? 4 : 5;

判断8>7为true,所以,x=4。

1
x = 3 == 9 ? 10 : 11;

判断3==9为false,所以,x=11。

【题目】输入两个整数,输出较大的数。

1
2
3
4
5
6
7
8
9
#include<iostream>
using namespace std;

int main(){
	int a, b;
    cin >> a >> b;
    cout << a > b ? a : b << endl;
    return 0;
}

上述程序中,判断a是否大于b,如果a大,则输入a,否则,输出b。三目运算符也可以嵌套使用,当然,在嵌套使用的时候,代码会变得更加复杂,使用if-else更容易理解,此时,推荐使用if-else结构。

switch结构

在C++中,使用条件语句可以使程序实现分支操作,但出现分支比较多的时候,虽然可以用if-else语句或者嵌套的if语句来解决,但是程序结构会显得复杂,容易出现错误,导致别人也不容易读懂,甚至程序出现凌乱,自己着急薅光头发。为方便实现多分支操作,C++提供了一种switch语句,用来轻松实现多分支结构。

语句格式

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
switch (表达式)
{
    case 常量1:
        语句块1
        break;
    case 常量2:
        语句块2
        break;
    case 常量3:
        语句块3
        break;
    default:
        语句块4
}

在switch结构中,可以使用一个或多个case保留字,但只能使用一次default,或者省略default。每个case语句标号由保留字case、常量及冒号组成。

执行过程

首先,计算表达式的值,假设为N,用N和常量1、常量2、常量3对比,一旦遇到N和某个常量相等,则执行相应的语句块,如果都不相等,则执行default下面的语句块。

在实际使用switch结构时,通常要求当执行完某个case后的语句块后,就结束整个switch结构的执行,而不让它继续执行下一个case语句后面的语句块。为了实现这种操作,使用break语句来实现。该语句只有保留字break,而没有其他任何字段,一旦碰到break,结束整个switch结构的执行。

【题目】输入1-7表示星期一到星期日,输出对应的英文。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include<iostream>
using namespace std;

int main(){
    int w;
    cin >> w;
    switch( w ):
    {
        case 1:
        	cout << "Monday" << endl; break;
        case 2:
        	cout << "Tuesday" << endl; break;
        case 3:
        	cout << "Wednesday" << endl; break;
        case 4:
        	cout << "Thursday" << endl; break;
        case 5:
        	cout << "Friday" << endl; break;
        case 6:
        	cout << "Saturday" << endl; break;
        case 7:
        	cout << "Sunday" << endl; break;
        default:
        	cout << "error!" << endl; break; 
    }
    return 0;
}

注意

1、case语句后的各常量表达式的值不能相同,否则会出现错误。

2、每个case或default后,,可以包含多条语句,不需要使用花括号(“{”和“}”)括起来。

3、各case的先后顺序可以前后调整,不影响程序执行结果。

4、default可以省略,default后面的语句末尾可以不必写break。

公众号:格致书院