4.8 KiB
C++ for 循环(二) 课后习题
姓名: _____________
一、 填空题
for循环在算法中最常见的三大应用模式是:_____________模式、_____________模式和分类统计模式。- 我们在分析寻找最小值的例题时,使用了打擂台算法,它的核心思想是:只记住_____________,然后不断与新的挑战者进行比较。
- 在使用“打擂台”算法寻找最小值时,我们会将扮演“擂主”的变量(如
min_val)初始化为一个_____________的数,以确保第一个挑战者一定能赢。 - 在使用“累加”模式对一连串数据求和时,需要准备一个“容器”变量(如
sum),并且必须在循环_____________(填 内 或 外)将它初始化为0。 - 在“分类统计”模式中,
for循环像一个_____________,负责把数据一个一个送过来;而循环内部的if/else像一个_____________,负责判断数据该去哪个分类。 - 在
for (int i = 0; ...)中定义的变量i,能在for循环内部使用,_____________ (填写 能 / 不能) 在for循环外使用。 - C++提供了一个便捷的工具
min(a, b)函数可以直接返回a和b中较小的那一个,使用它需要包含头文件#include <_____________>。
二、 单项选择题
( ) 1. 观察下面的代码,它的功能是计算什么?
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 的值是多少?
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; 这两种写法在功能上是等价的。