Initial commit: C++ courseware
This commit is contained in:
commit
4a4ee7c287
1789 files changed
+373489
No files matched your search
@@ -0,0 +1,87 @@
|
||||
### C++ for 循环(二) 课后习题
|
||||
|
||||
姓名: \_\_\_\_\_\_\_\_\_\_\_\_\_
|
||||
|
||||
#### **一、 填空题**
|
||||
|
||||
1. `for` 循环在算法中最常见的三大应用模式是:\_\_\_\_\_\_\_\_\_\_\_\_\_模式、\_\_\_\_\_\_\_\_\_\_\_\_\_模式和分类统计模式。
|
||||
2. 我们在分析**寻找最小值**的例题时,使用了打擂台算法,它的核心思想是:只记住\_\_\_\_\_\_\_\_\_\_\_\_\_,然后不断与新的挑战者进行比较。
|
||||
3. 在使用“打擂台”算法寻找最小值时,我们会将扮演“擂主”的变量(如 `min_val`)初始化为一个\_\_\_\_\_\_\_\_\_\_\_\_\_的数,以确保第一个挑战者一定能赢。
|
||||
4. 在使用“累加”模式对一连串数据求和时,需要准备一个“容器”变量(如 `sum`),并且必须在循环\_\_\_\_\_\_\_\_\_\_\_\_\_(填 **内** 或 **外**)将它初始化为 `0`。
|
||||
5. 在“分类统计”模式中,`for` 循环像一个\_\_\_\_\_\_\_\_\_\_\_\_\_,负责把数据一个一个送过来;而循环内部的 `if/else` 像一个\_\_\_\_\_\_\_\_\_\_\_\_\_,负责判断数据该去哪个分类。
|
||||
6. 在 `for (int i = 0; ...)` 中定义的变量 `i`,能在 `for` 循环内部使用,\_\_\_\_\_\_\_\_\_\_\_\_\_ (填写 **能** / **不能**) 在 `for` 循环外使用。
|
||||
7. C++提供了一个便捷的工具 `min(a, b)` 函数可以直接返回a和b中较小的那一个,使用它需要包含头文件 `#include <`\_\_\_\_\_\_\_\_\_\_\_\_\_`>`。
|
||||
|
||||
#### **二、 单项选择题**
|
||||
|
||||
( ) 1. 观察下面的代码,它的功能是计算什么?
|
||||
```cpp
|
||||
int sum = 0;
|
||||
for (int i = 1; i <= 5; i++) {
|
||||
sum += i;
|
||||
}
|
||||
cout << sum;
|
||||
```
|
||||
A. 1到5的乘积 B. 1到5的和 C. 5的阶乘 D. 只输出5
|
||||
|
||||
( ) 2. 在使用“打擂台”算法寻找一组数中的**最大值**时,擂主变量 `max_val` 的初始值应该设置成什么?
|
||||
A. 一个非常大的数 B. 一个非常小的数 C. 0 D. -1
|
||||
|
||||
( ) 3. 观察下面的代码,当循环结束后,`min_val` 的值是多少?
|
||||
```cpp
|
||||
int min_val = 100;
|
||||
int n;
|
||||
for (int i = 0; i < 3; i++) {
|
||||
cin >> n; // 依次输入 50, 120, 30
|
||||
if (n < min_val) {
|
||||
min_val = n;
|
||||
}
|
||||
}
|
||||
```
|
||||
A. 120 B. 100 C. 50 D. 30
|
||||
|
||||
( ) 4. 如果把累加求和代码中的 `int sum = 0;` 放到 `for` 循环内部,会发生什么?
|
||||
A. 程序无法运行
|
||||
B. 结果正确,但效率变低
|
||||
C. 每次循环 `sum` 都会被重置为0,导致结果错误
|
||||
D. 没有任何影响
|
||||
|
||||
( ) 5. 变量 `i` 在 `for (int i = 0; i < 5; i++)` 循环结束后,在循环外部还能使用 `cout << i;` 吗?
|
||||
A. 可以,它的值是5
|
||||
B. 可以,它的值是4
|
||||
C. 不可以,因为变量`i`在循环结束后就消失了
|
||||
D. 不可以,因为没有初始化
|
||||
|
||||
( ) 6. 在“分类求平均数”的案例中,我们需要几个变量来分别统计A、B两类的总和与数量?
|
||||
A. 1个 B. 2个 C. 3个 D. 4个
|
||||
|
||||
( ) 7. 要统计从1到100之间所有偶数的个数,`for`循环内部的`if`判断应该写成?
|
||||
A. `if (i % 2 == 1)` B. `if (i % 2 == 0)`
|
||||
C. `if (i / 2 == 0)` D. `if (i * 2 == 0)`
|
||||
|
||||
( ) 8. 使用 `min()` 函数,代码 `if (tmp < min_val) { min_val = tmp; }` 可以被简化为?
|
||||
A. `min_val = min(tmp);`
|
||||
B. `min(min_val, tmp);`
|
||||
C. `min_val = min(min_val, tmp);`
|
||||
D. `tmp = min(min_val, tmp);`
|
||||
|
||||
( ) 9. 下面哪种问题最不适合用“累加模式”来解决?
|
||||
A. 计算全班同学的总分
|
||||
B. 计算1到100所有奇数的和
|
||||
C. 找出全班的最高分
|
||||
D. 计算1乘以2乘以3...一直乘到10的结果
|
||||
|
||||
( ) 10. 在“分类统计”模式中,哪个结构负责提供需要被处理的数据?
|
||||
A. `if` 语句 B. `else` 语句 C. `for` 循环 D. `cout` 语句
|
||||
|
||||
#### **三、 判断题 (对的打“√”,错的打“×”)**
|
||||
( ) 1. “打擂台”算法只能用来寻找最小值,不能用来寻找最大值。
|
||||
( ) 2. 在使用“累加模式”求和时,累加变量必须在循环外部定义和初始化。
|
||||
( ) 3. `for (int i = 1; i <= n; i++)` 和 `for (int i = 0; i < n; i++)` 都能循环n次。
|
||||
( ) 4. 在“分类求平均数”的例子中,`for`循环的作用是进行分类,`if-else`的作用是遍历数字。
|
||||
( ) 5. 像 `sum` 和 `min_val` 这样需要在循环结束后使用的变量,必须定义在循环的外部。
|
||||
( ) 6. 求1到100的和,如果定义累加变量为 `int sum = 1;` 而不是`int sum = 0;`,会导致最终结果比正确答案多1。
|
||||
( ) 7. C++中的 `min(a, b)` 函数可以一次性比较三个数的最小值。
|
||||
( ) 8. “分类统计”模式本质上是 `for` 循环和 `if-else` 结构的结合使用。
|
||||
( ) 9. 在不知道具体要输入多少个数字的情况下,使用 `for` 循环是最好的选择。
|
||||
( ) 10. `sum = sum + i;` 和 `sum += i;` 这两种写法在功能上是等价的。
|
||||
Reference in new issue
Block a user