条件判断结构——switch结构与三目运算
一、课上练习
习题链接
示例代码
汉译英示例代码
1#include <bits/stdc++.h>
2using namespace std;
3
4int main() {
5 int n;
6 cin >> n;
7 switch (n) {
8 case 1:
9 cout << "one" << endl;
10 break;
11 case 2:
12 cout << "two" <<endl;
13 break;
14 case 3:
15 cout << "three" <<endl;
16 break;
17 case 4:
18 cout << "four" <<endl;
19 break;
20 case 5:
21 cout << "five" <<endl;
22 break;
23 case 6:
24 cout << "six" <<endl;
25 break;
26 case 7:
27 cout << "seven" <<endl;
28 break;
29 case 8:
30 cout << "eight" <<endl;
31 break;
32 case 9:
33 cout << "nine" <<endl;
34 break;
35 default:
36 cout << "out" << endl;
37 }
38 return 0;
39}最经济型包装箱示例代码
1#include <bits/stdc++.h>
2using namespace std;
3
4int main() {
5 int weight;
6 cin >> weight;
7 weight /= 10;
8// weight = weight / 10;
9 switch (weight) {
10 case 0:
11 cout << "A" << endl;
12 break;
13 case 1:
14 cout << "B" << endl;
15 break;
16 case 2:
17 case 3:
18 cout << "C" << endl;
19 break;
20 case 4:
21 cout << "D" << endl;
22 break;
23 default:
24 cout << "E" << endl;
25 }
26 return 0;
27}三个数最大数示例代码
1#include <bits/stdc++.h>
2using namespace std;
3
4int main() {
5 int a, b, c;
6 cin >> a >> b >> c;
7 int max = (a > b ? a : b) > c ? (a > b ? a : b) : c;
8// max = max > c ? max : c;
9 cout << max << endl;
10 return 0;
11}二、知识总结
switch结构
适用情况
当我们要判断的一个变量它可能有有限个不同的值的时候,比较适用switch结构来判断,例如星期、日期、月份等。
代码书写方式
格式示例
1switch (算术表达式) {
2 case 数值1:
3 操作1;
4 break;
5 case 数值2:
6 操作2;
7 break;
8 case 数值3:
9 操作3;
10 break;
11 case 数值4:
12 操作4;
13 break;
14 case 数值5:
15 操作5;
16 break;
17 default:
18 操作6;
19}代码示例
1int day; // 今天是星期几,0表示周日,1表示周一,以此类推
2cin >> day;
3
4// 检查day是星期几
5const int FRIDAY = 5;
6switch (day) {
7 case 1:
8 cout << "Monday" << endl;
9 break;
10 case 2:
11 cout << "Tuesday" << endl;
12 break;
13 case 3:
14 cout << "Wednesday" << endl;
15 break;
16 case 4:
17 cout << "Thursday" << endl;
18 break;
19 case FRIDAY:
20 cout << "Friday" << endl;
21 break;
22 case 0:
23 case 6:
24 cout << "Weekday" << endl;
25 break;
26 default:
27 cout << "Invalid day" << endl;
28}注意事项
- 情况适用case + 数值 + 冒号的形式描述。其中数值部分只能是数字或者常量,不可以使用变量或使用带有变量的表达式,例如上述代码中可使用常量替代数值。
- 如果有两个情况对应同一种操作时,不可以写成或的形式,必须写两个case。例如上述代码中周六周日同时对应输出周末。
- 每个case内都要有break。
- default可以有也可以没有,default内可以没有break。
三目运算
三目运算中含有两个运算符和三个操作符,故被称为三目运算。 第一个运算符为?,第二个运算符为:。?左边的表达式为条件判断,?右边的表达式是以:分隔的两个表达式,:左边的表达式代表当?左边的表达式为真时返回的结果,:右边的表达式为当?左边的表达式为假时返回的结果。
格式示例
表达式1 ? 表达式2 : 表达式3
代表当表达式1为真时返回表达式2,当表达式1为假时返回表达式3。
代码示例
int min_ab = a < b ? a : b;