Files

5.5 KiB
Raw Permalink Blame History

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. 观察下面的代码,它的功能是计算什么?

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. 第一个读入的数

( ) 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; 作为一个错误的初始值,会导致最终结果比正确答案多1。 ( ) 7. C++中的 min(a, b) 函数可以一次性比较三个数的最小值。 ( ) 8. “分类统计”模式本质上是 for 循环和 if-else 结构的结合使用。 ( ) 9. 在不知道具体要输入多少个数字的情况下,使用 for 循环是最好的选择。 ( ) 10. sum = sum + i; 和 sum += i; 这两种写法在功能上是完全等价的。


C++ for 循环(二) 课后习题 - 答案

一、 填空题

  1. 打擂台,累加
  2. 当前最优值
  3. 非常大
  4. 外
  5. 传送带,分拣机
  6. 作用域
  7. algorithm

二、 单项选择题

  1. B 2. B 3. D 4. C 5. C 6. D 7. B 8. C 9. C 10. C

三、 判断题

  1. × (同样适用于找最大值,只需改变比较逻辑和初始值)
  2. √
  3. √
  4. × (正好相反,for是传送带负责遍历,if-else是分拣机负责分类)
  5. √
  6. √
  7. × (min(a, b) 只能比较两个数,比较三个需要 min(a, min(b, c)))
  8. √
  9. × (while 循环更适合处理未知次数的循环)
  10. √