一、选择题
| 题号 |
答案 |
简要说明 |
| 1 |
D |
|
| 2 |
B |
循环变量a初始为12,b为5,注意循环终止条件和更新逻辑。 |
| 3 |
C |
|
| 4 |
B |
|
| 5 |
D |
|
| 6 |
C |
|
| 7 |
D |
对角线位置即二维数组中行下标 i 与列下标 j 相等的元素。 |
| 8 |
A |
判断质数的逻辑,当发现不是质数时应使用 break 结束循环。 |
| 9 |
D |
跟踪数组元素变化,注意下标与值的关系。 |
| 10 |
A |
观察内外层循环变量 i 和 j 的输出规律。 |
| 11 |
B |
分析循环中 i 和 j 的取值序列。 |
| 12 |
B |
题目中给定的数字序列。 |
| 13 |
D |
|
| 14 |
A |
循环从16递减至2,步长为-2,需留意数组索引从0开始。 |
| 15 |
A |
循环条件已在 for 语句中给出,循环体内无需额外判断。 |
二、判断题
| 题号 |
答案 |
简要说明 |
| 1 |
√ |
|
| 2 |
√ |
|
| 3 |
× |
C++中,类似 3.14 这样的字面量默认为 double 类型,而非 float。 |
| 4 |
× |
sqrt(4) 的结果是 2.0 (double类型),赋值给整型变量 m 后值为 2。 |
| 5 |
√ |
跟踪逗号表达式和赋值语句,计算 m 和 n 的值变化: (0,1)->(3,2)->(6,5)->(15,14)。 |
| 6 |
× |
|
| 7 |
× |
循环变量 i 的变化为1, 3, 5, 7, 9, 11,共循环6次,cnt最终为6。 |
| 8 |
× |
while 循环条件为 N >= 0,输入 -100 时不满足条件,循环体一次也不执行。 |
| 9 |
× |
for 循环中 int i=0; i<10; i+=2,i 的取值为0, 2, 4, 6, 8。 |
| 10 |
√ |
|
三、编程题
编程题旨在锻炼独立思考和问题解决能力,以下提供解题思路供参考。具体实现代码可在理解思路后自行完成。
1. 小杨的 X 字矩阵
问题描述
构造一个 N×N 的 X 形矩阵(N为奇数),两条对角线为 ‘+’,其余为 ‘-’。
输入输出样例
样例输入1
5
样例输出1
+---+
-+-+-
--+--
-+-+-
+---+
【解题思路与考点分析】
核心在于找出矩阵中每个位置 (i, j)(i 和 j 从0开始)与输出符号之间的映射关系。
观察可知,位于两条对角线上的点满足以下条件之一:
- 行号等于列号:
i == j
- 行号与列号之和等于 N-1:
i + j == N - 1
满足上述任一条件的位置输出 ‘+’,否则输出 ‘-’。
本题主要考察多重循环的控制与条件判断语句的运用,是巩固基础语法的良好练习,相关算法与逻辑构建能力在编程学习中至关重要。
2. 数字黑洞
问题描述
对于一个各位数字不同的三位数,将其数字重排,用最大数减最小数,得到一个新数。重复此过程,最终必得到495。求变换到495所需的次数。
输入输出样例
样例输入1
352
样例输出1
4
(变换过程:352->297->693->594->495)
【解题思路与考点分析】
- 数位提取:分离出三位数的百位(
h)、十位(t)、个位(u)。
- 排序构造:将三个数字按从大到小排序,构造出最大值(如
h*100 + t*10 + u)和最小值(如u*100 + t*10 + h)。注意,排序可以通过比较和交换实现,无需使用数组。
- 计算差值:计算最大值与最小值的差,得到新的三位数。
- 循环判断:使用
while 循环,以新数是否等于 495 作为循环条件。在循环内部重复步骤1-3,并用一个计数器记录循环次数(即变换次数)。
本题综合考察了数位分解、条件判断与排序逻辑以及循环控制,是理解基础算法流程的典型例题。掌握这类问题的解法,有助于培养严谨的程序思维。
|