### C++ while 循环 课后作业(二) 姓名: \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ #### **一、 填空题** 1. 在编程中,我们用来存放滚雪球式增长的和的变量,通常被称为 \_\_\_\_\_\_\_\_\_\_\_\_\_,它的初始值在进行加法运算时通常设为 \_\_\_\_\_\_\_\_\_\_。 2. `sum = sum + i;` 这行累加代码可以简写为 \_\_\_\_\_\_\_\_\_\_\_\_\_\_。 3. 在 C++ 中,数值 \_\_\_\_\_\_\_ 被视为“假”(false),而所有 \_\_\_\_\_\_\_ 的数值都被视为“真”(true)。 4. 使用 `while` 循环挨个访问某个区间内的每一个元素,并在循环内部用 `if` 语句挑出符合特定条件的元素,这种编程模式被称为\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_。 5. 想要实现“循环n次”的效果,那么当循环控制变量 `i` 从 `0` 开始时,`while()`中的循环条件则应该写为\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_。 #### **二、 单项选择题** ( ) 1. 分析以下代码,最终输出的结果是什么? ```cpp int sum = 0, i = 1; while (i <= 4) { sum = sum + i; i++; } cout << sum << endl; ``` ​ A. 4 B. 5 C. 10 D. 15 ( ) 2. 如果将上一题中的 `cout << sum << endl;` 语句放到 `while` 循环体的内部,程序的输出会变成? A. 只输出 10 B. 什么都不输出 C. 依次换行输出 1, 3, 6, 10 D. 程序会报错 ( ) 3. 要打印出 1 到 100 之间所有“个位数是7”的数字,循环体内部的 `if` 判断条件应该写成? A. `if (i == 7)` B. `if (i % 7 == 0)` C. `if (i / 10 == 7)` D. `if (i % 10 == 7)` ( ) 4. 运行 `int n=5; int i=0; while(i 5) { count--; } ``` ​ A. 10 B. 6 C. 5 D. 4 ( ) 9. 考虑以下代码,它的问题是什么? ```cpp int i = 1; while (i <= 100) { if (i % 2 == 0) { cout << i << endl; i++; } } ``` ​ A. 这是一个死循环 B. 它会漏掉一些偶数 ​ C. 它只能打印出奇数 D. 它在遇到奇数时会陷入死循环 ( ) 10. 要计算 1 到 100 以内所有 3 的倍数之和,下面代码片段的 `???` 处应填写? ```cpp int sum = 0; int i = 1; while (i <= 100) { if (???) { sum += i; } i++; } ``` ​ A. `i / 3 == 0` B. `i % 3 == 0` ​ C. `i % 3 != 0` D. `i * 3 == 0` #### **三、 判断题 (对的打“√”,错的打“×”)** ( ) 1. `while(x)` 和 `while(x != 0)` 这两个循环条件是等价的。 ( ) 2. 在累加求和的程序中,如果累加器变量 `sum` 没有被初始化为 0,程序最终的计算结果一定是错误的。 ( ) 3. 要筛选出 1 到 100 之间能同时被 2 和 3 整除的数,`if` 条件应写为 `if (i % 2 == 0 || i % 3 == 0)`。 ( ) 4. 执行代码 `int i = 0; while(i < 5) { cout << i; i++; }` 会在屏幕上打印出 `01234`。 ( ) 5. `while(1)` 会创建一个无限循环,是因为 C++ 认为 `1` 是一个“真”值。 ( ) 6. 在“遍历+筛选”模式中,`i++` 必须放在 `if` 语句的外面(但在循环体内),这样才能保证无论当前数字是否被选中,都能继续检查下一个数字。 ( ) 7. `while` 循环只适用于我们提前知道循环次数的场景。 ( ) 8. `sum += i;` 的执行效率比 `sum = sum + i;` 更高。 ( ) 9. 初始化累加器 `sum` 为 0 的主要目的是为了让代码能够通过编译。 ( ) 10. `i = 0; while(i < n)` 和 `i = 1; while(i <= n)` 都能实现循环 n 次的效果。