public: True class: center, middle # 选择结构 Fancy 2020/1/21 --- # if ```cpp if (条件表达式) { 语句1; 语句2; ...... } ``` 如果条件表达式的值为真,则语句 1, 2, ... 被执行,否则被忽略(不执行)。 大括号中间的语句被称为语句块或复合语句。 若只有一条语句,则可以省略大括号。 --- # if 例:读入一个整数,如果是偶数则输出 yes。 -- ```cpp int a; cin >> a; if (a % 2 == 0) cout << "yes" << endl; ``` --- # if-else ```cpp if (条件表达式) { 语句1; 语句2; ...... } else { 语句3; 语句4; ...... } ``` 如果条件表达式的值为真,则语句 1, 2, ... 被执行,否则语句 3, 4, ... 被执行。 --- # if-else 例:输入三个不同的数,输出最大的数。 -- ```cpp int a, b, c, maxn; cin >> a >> b >> c; if (a > b && a > c) maxn = a; else if (b > a && b > c) maxn = b; else maxn = c; cout << maxn << endl; ``` ```cpp int a, b, c, maxn; cin >> a >> b >> c; maxn = a; if (b > maxn) maxn = b; if (c > maxn) maxn = c; cout << maxn << endl; ``` --- # 三目运算符 格式:`a ? b : c` 如果 a 为真,则表达式的值为 b,否则为 c。 ---- 例:`x = 5 > 3 ? 10 : 12` `x = a == 0 ? 1 : -1` ---- 例:输入三个不同的数,输出最大的数。 -- ```cpp int a, b, c, maxn; cin >> a >> b >> c; maxn = a > b ? (a > c ? a : c) : (b > c ? b : c); cout << maxn << endl; ``` --- # switch ```cpp switch(表达式){ case 常量表达式1: 语句序列1; break; case 常量表达式2: 语句序列2; break; ...... default: 语句序列n+1; } ``` 注意: - 语句序列表示零或多个语句,不需要加大括号。 - 表达式皆为整数。 - 常量值不能重复。 --- # switch 例:输入数字星期(1-7),输出英文 ```cpp int n; scanf("%d", &n); switch(n) { case 1: printf("Monday\n"); break; case 2: printf("Tuesday\n"); break; case 3: printf("Wednesday\n"); break; case 4: printf("Thursday\n"); break; case 5: printf("Friday\n"); break; case 6: printf("Saturday\n"); break; case 7: printf("Sunday\n"); break; default: printf("Error\n"); } ```