4月选择题解析

一、单选题解析

1. 适合使用枚举算法解决的问题

答案:C. 数据范围小且无规律

解析:枚举算法适用于数据规模较小且没有明显规律的问题。当数据范围大时,枚举会非常低效;当数据具有单调性或需要快速近似解时,通常有更好的算法选择。

2. 二分算法的时间复杂度

答案:B. O(log n)

解析:二分查找每次都将搜索范围减半,因此其时间复杂度为对数级O(log n)。

3. 纸张对折4次后的折痕数

答案:C. 15

解析:每次对折都会在上次的基础上增加2^(n-1)条新折痕。4次对折总折痕数为1+2+4+8=15。

4. 杨辉三角第5行第3列的值

答案:B. 6

解析:杨辉三角第5行为1 4 6 4 1,第3列是6(行列从1开始计数)。

5. 适合用二分算法解决的问题

答案:D. 在递增数组中查找某元素

解析:二分查找要求数据必须有序,因此最适合在递增数组中查找元素。

二、代码阅读题解析

6-10题:统计特定数字的程序

6. 判断代码功能
答案:B. 错误

解析:代码统计的是能被23整除的数,不是同时。

7. 输入n=6时的输出
答案:A. 正确

解析:1-6中符合条件的数是2,3,4,6,共4个。

8. 变量声明位置影响
答案:B. 错误

解析:全局变量和局部变量声明位置不同会影响作用域,但在此简单程序中不会影响执行结果。

9. 输入n=12时的输出
答案:C. 8

解析:1-12中符合条件的数是2,3,4,6,8,9,10,12,共8个。

10. 代码时间复杂度
答案:C. O(n)

解析:单层循环从1到n,时间复杂度为线性O(n)。

11-15题:二分查找程序

11. 输入8时的输出
答案:B. 错误

解析:数组中有8,位于索引4(从0开始),应输出4。

12. 输入7时的输出
答案:A. 正确

解析:数组中无7,应输出初始值-1。

13. 修改右边界后输入15
答案:D. 输出-1

解析:右边界改为6后无法访问索引7的元素15,查找失败返回-1。

14. 删除break后输入7
答案:C. 输出-1

解析:即使不break,最终仍会因查找失败返回-1。

15. 程序时间复杂度
答案:C. O(log n)

解析:标准二分查找时间复杂度为O(log n)。

三、完形填空题解析

16-20题:回文素数程序

16. 数字反转计算
答案:A. rev * 10 + t % 10

解析:这是构建数字反转的标准方法。

17. 回文数判断
答案:A. rev == t

解析:应比较反转后的数字rev与原数字t(实际应为x,但代码中t已被修改)。

18. 素数判断条件
答案:C. i * i <= x

解析:只需检查到√x即可判断素数。

19. 跳过偶数
答案:B. i%2 == 0

解析:偶数(除2外)都不是素数,可以直接跳过。

20. 回文素数条件
答案:D. isRev(i) && isPrime(i)

解析:需要同时满足回文和素数两个条件。

21-25题:动态规划路径计数

21. 循环条件
答案:B. i<=n

解析:应遍历整个第一行。

22. 障碍判断
答案:C. vis[1][i]==1

解析:vis标记障碍,遇到障碍应终止初始化。

23. 第一列初始化
答案:A. f[i][1]==1

解析:无障碍时路径数初始化为1。

24. 转移条件
答案:D. vis[i][j]==0

解析:无障碍时才进行路径数累加。

25. 最终输出
答案:B. f[n][n]

解析:输出右下角的路径总数。

posted @ 2025-05-07 16:45  行胜于言Ibl  阅读(47)  评论(0)    收藏  举报