Files

3.5 KiB
Raw Permalink Blame History

2024 CCF 非专业级别软件能力认证第一轮 (CSP-J1) 参考答案

一、单项选择题

  1. C
  2. A (原式为 (12_{10} - 10_{10}) * 13_{10} - 13_{10} = 2 * 13 - 13 = 13)
  3. B (A选2人,BC各1人: C(4,2)×C(3,1)×C(3,1)=54; B选2人,AC各1人: C(4,1)×C(3,2)×C(3,1)=36; C选2人,AB各1人: C(4,1)×C(3,1)×C(3,2)=36。总计54+36+36=126)
  4. D (格雷码的特性是相邻两个编码只有一位不同)
  5. D (1MB = 1024 * 1024 Bytes = 1024 * 1024 * 8 bits = 8388608 bits)
  6. C (struct 是构造数据类型,不是基本数据类型)
  7. D (repeat-until 是 Pascal 等语言的语法)
  8. B (字符'a'的ASCII码是97,97 + 13 = 110,110对应的字符是'n')
  9. B (2⁹ = 512, 2¹⁰ = 1024。所以最多比较10次)
  10. A (Notepad是记事本应用软件)
  11. B (图论基本定理:每条边连接两个顶点,为总度数贡献2)
  12. A (通过前序和中序遍历结果可以唯一确定一棵二叉树,从而得到其后序遍历)
  13. D (栈的特性是后进先出,可逐项模拟验证,D项无法实现)
  14. A (捆绑法:将3个女生视为一个整体,与5个男生进行全排列,有 P(6,6) 种方法。3个女生内部也有 P(3,3) 种排列。总数为 6! * 3! = 720 * 6 = 4320)
  15. B

二、阅读程序

(1) 16. √ (10以内的质数是2, 3, 5, 7,共4个,和为17) 17. × (判断逻辑依然正确,20以内的质数有8个,输出不会变为6) 18. √ 19. B (1到50的质数之和为328) 20. A (修改后,任何大于1的数 p 在循环到 i=p 时都会因 p % p == 0 而被误判为非质数,导致结果错误)

(2) 21. √ (模拟DP过程:dp[1]=10, dp[2]=min(10,0)+15=15, dp[3]=min(15,10)+20=30。返回min(dp[3], dp[2])即min(30,15)=15) 22. × (不会产生编译错误,但可能会因访问数组负数下标而产生运行时错误) 23. × (程序计算的是到达楼顶的最小花费路径,不一定是单个最小元素) 24. A (模拟DP过程,最终返回min(dp[10], dp[9]) = min(6, 104) = 6) 25. B (模拟DP过程,最终返回min(dp[7], dp[6]) = min(45, 30) = 30) 26. A (修改后模拟计算:dp[1]=5, dp[2]=dp[1]+cost[0]=5+5=10, dp[3]=dp[2]+cost[1]=10+10=20。返回min(20,10)=10)

(3) 27. × (customFunction(2, 3) 返回 8。题目问的是函数的返回值,而不是最终输出。最终输出 pow(8, 2) 是64) 28. √ (b为负数,b-1 永远不会等于0,导致无限递归) 29. √ (b越大,递归深度越大,运行时间越长) 30. B (该函数计算 a * (b + 1),即 5 * (4 + 1) = 25) 31. C (customFunction(3, 3) 返回 3 * (3 + 1) = 12。程序最终输出 pow(12, 2) 即 144) 32. D (修改后递归计算:f(3,3) = 3+f(2,2) = 3+2+f(1,1) = 3+2+1+f(0,0) = 3+2+1+0=6。最终输出pow(6,2)即36)


三、完善程序

(1) 判断平方数 33. A (从1开始检查) 34. B (循环的上界是原数的平方根,没有必要超过它) 35. C (判断i的平方是否等于num) 36. C (如果找到,说明是平方数,返回true) 37. D (如果循环结束都没找到,说明不是平方数,返回false)

(2) 汉诺塔问题 38. B (递归的边界条件:当只剩一个盘子时,直接移动) 39. B (对应 move(src, tgt)) 40. B (第一步:将 i-1 个盘子从 src 经由 tgt 移到 tmp) 41. B (第三步的盘子数量为 i-1) 42. B (第三步:将 i-1 个盘子从 tmp 经由 src 移到 tgt)