Initial commit: C++ courseware

This commit is contained in:
xiaolinquan committed 2026-11-05 22:51:02 +08:00
commit 4a4ee7c287
1789 files changed
+373489

No files matched your search

@@ -0,0 +1,35 @@
### 参考答案
#### **一、 填空题**
1. 对号入座 (或 直接跳转)
2. `case`
3. `break`
4. `default`
5. case 穿透
#### **二、 单项选择题**
1. B
2. B (从 `case 2` 开始穿透到 `case 3`,但 `case 3` 后面没有 `default`,到此为止)
3. C
4. C
5. B
6. C
7. B
8. C
9. B (从 `case 'B'` 开始,穿透到 `case 'C'`,遇到 `break` 停止)
10. B
#### **三、 判断题**
1. √
2. × (`default` 分支是可选的)
3. × (`case` 后面必须跟一个常量)
4. √
5. √
6. × (`switch` 不能做范围判断,所以 `if` 更通用)
7. √
8. × (这是逻辑错误,不是编译错误,程序能正常运行但结果可能不符合预期)
9. √
10. √ (这被称为嵌套 `switch`,是合法的)
@@ -0,0 +1,105 @@
### C++ switch 多选择语句 课后习题
姓名: \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
#### **一、 填空题**
1. `if-else if` 的逻辑是“顺序比较”,而 `switch` 的逻辑是“**\_\_\_\_\_\_\_\_\_\_\_\_\_**”,在选项多时效率更高。
2. `switch` 语句中,每个选项都由关键字 **\_\_\_\_\_\_\_\_\_\_\_\_\_** 开头,后面跟一个常量值和冒号。
3. 为了防止“case 穿透”,在每个独立的 `case` 代码块结束时,都应该加上 **\_\_\_\_\_\_\_\_\_\_\_\_\_** 语句。
4. 如果 `switch` 表达式的值与所有 `case` 都不匹配,程序会执行 **\_\_\_\_\_\_\_\_\_\_\_\_\_** 分支下的代码。
5. 一个 `case` 后面忘记写 `break`,程序会继续向下执行之后的所有代码,这种现象叫做“**\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_**”。
#### **二、 单项选择题**
( ) 1. 阅读代码,当输入为 `2` 时,输出结果是什么?
```cpp
int n;
cin >> n;
switch(n) {
case 1: cout << "Apple"; break;
case 2: cout << "Banana"; break;
case 3: cout << "Cherry"; break;
}
```
​ A. Apple B. Banana C. Cherry D. 没有输出
( ) 2. 阅读代码,当输入为 `2` 时,输出结果是什么? (注意:缺少 `break`)
```cpp
int n;
cin >> n;
switch(n) {
case 1: cout << "A";
case 2: cout << "B";
case 3: cout << "C";
}
```
​ A. B B. BC C. ABC D. C
( ) 3. 阅读代码,当输入为 `5` 时,输出结果是什么?
```cpp
int n;
cin >> n;
switch(n) {
case 1: cout << "A"; break;
case 2: cout << "B"; break;
default: cout << "Other";
}
```
​ A. A B. B C. Other D. 没有输出
( ) 4. `switch` 语句主要用来替代哪种结构的 `if` 语句?
A. `if (score > 90)`
B. `if (a > 0 && b > 0)`
C. `if (day == 1) { ... } else if (day == 2) { ... } else if (day == 3) { ... }`
D. `if (password != "123")`
( ) 5. 下列哪种判断**不能**直接用 `switch` 语句实现?
A. 判断某天是周几 B. 判断成绩是否及格
C. 判断输入的字符是不是 'Y' D. 判断用户的选择是不是 1
( ) 6. `switch (n)` 中,`n` 的结果**不能**是什么类型?
A. `int` B. `char` C. `double` D. `bool`
( ) 7. 在 `switch` 结构中,`default` 关键字的作用是?
A. 提供一个默认的变量值 B. 当所有 `case` 都不匹配时执行
C. 必须写在 `switch` 的最开始 D. 用来结束 `switch` 语句
( ) 8. 为了判断一个字符 `c` 是不是元音字母(a, e, i, o, u),最高效的 `switch` 写法是?
A. 为 a, e, i, o, u 分别写五个独立的 `case`,每个都带 `break`
B. 使用 `if (c=='a' || c=='e' ...)`
C. 将 `case 'a': case 'e': case 'i': case 'o': case 'u':` 堆叠在一起,共享一个代码块
D. `switch` 无法实现此功能
( ) 9. 阅读代码,当输入为 `'B'` 时,输出结果是什么?
```cpp
char c;
cin >> c;
switch(c) {
case 'A': cout << "Apple";
case 'B': cout << "Banana";
case 'C': cout << "Cherry"; break;
case 'D': cout << "Durian";
}
```
​ A. Banana B. BananaCherry C. BananaCherryDurian D. Cherry
( ) 10. `case` 标签后面跟的值必须是?
A. 一个变量 B. 一个常量 C. 一个表达式 D. 一个函数
#### **三、 判断题 (对的打“√”,错的打“×”)**
( ) 1. `switch` 语句只能用于进行“等于”的判断。
( ) 2. 在 `switch` 语句中,`default` 分支是必须存在的,不能省略。
( ) 3. `case` 后面跟的可以是 `case x:`,其中 `x` 是一个 `int` 类型的变量。
( ) 4. `break` 语句的作用是跳出当前的 `switch` 结构。
( ) 5. 如果好几个 `case` 需要执行的操作完全一样,可以利用“case穿透”来简化代码。
( ) 6. `if-else if` 语句能实现的功能,`switch` 语句也一定能实现。
( ) 7. `switch` 语句中,各个 `case` 标签的顺序不影响最终的逻辑结果(假设都正确使用了 `break`)。
( ) 8. 忘记在 `case` 中写 `break` 会导致编译错误(CE)。
( ) 9. `switch` 的逻辑是“直接跳转”,而 `if-else if` 是“顺序比较”。
( ) 10. 可以在一个 `switch` 结构中,放置另一个 `switch` 结构。