ARTICLE · 1039354
2026 CSP-J 初赛全真试题+满分精析
2026 CSP-J 初赛全真试题+满分精析2026年CSP-J初赛已圆满结束!本文为全网精校完整版试题+逐题独家解析,无乱码、无错题、无遗漏,适配所有信奥入门学员复盘估分、查漏补缺。 题型分布:单项选择15题+阅读程序3大题+完善程序2大题 --- 下列C++ 数据类型中,能够精确存储 \(10^{18}+1\) 这个整数的是( )。 A. floatB. long longC. doubleD. int ✅ 答案:B 💡 解析: 十六进制数2F5 转换为八进制数是( )。 A. 1364B. 1635C. 1405D. 1365 ✅ 答案:D 💡 解析:二进制中转法(信奥必考) 执行下列C++ 代码,输出是( )。 int a = 7, b = 3; std::cout << a / b * b + a % b; A. 9B. 10C. 7D. 6 ✅ 答案:C 💡 解析: ✨ 核心公式:a = (a / b) × b + (a % b)(带余除法恒成立) 初始栈为空,将1, 2, 3, 4 依次入栈,入栈过程中允许随时出栈。下列出栈序列中不可能出现的是( )。 A. 2, 4, 3, 1B. 1, 2, 3, 4C. 3, 1, 2, 4D. 1, 4, 3, 2 ✅ 答案:C 💡 解析: 若首个出栈元素为3,说明1、2、3已全部入栈,栈内顺序为:栈顶3→2→栈底1。 根据栈后进先出规则,后续只能先出2、再出1,不可能出现1先于2出栈。 一棵有100 个结点的完全二叉树,其叶子结点个数是( )。 A. 49B. 50C. 64D. 51 ✅ 答案:B 💡 解析:完全二叉树核心结论 最后一个分支结点编号= ⌊总节点数/2⌋ = ⌊100/2⌋ = 50 即:1~50号为分支结点,51~100号为叶子结点,叶子总数 = 100 - 50 = 50个。 执行下列代码后s 的值是( )。 int s = 0; for (int i = 1; i <= 100; i++) if (i % 3 == 0 || i % 5 == 0) s += i; A. 3048B. 2733C. 2318D. 2418 ✅ 答案:D 💡 解析:容斥原理 总和= 3的倍数和 + 5的倍数和 - 15公倍数和(避免重复计算) 1. 3的倍数和:3×(1+2+…+33) = 1683 2. 5的倍数和:5×(1+2+…+20) = 1050 3. 15公倍数和:15×(1+2+…+6) = 315 最终结果:1683+1050-315 = 2418 上楼梯每步可上1 级、2 级或 3 级,从地面走到第 8 级台阶共有多少种不同走法( )。 A. 44B. 121C. 149D. 81 ✅ 答案:D 💡 解析:递推DP模型 递推公式:f(n) = f(n-1)+f(n-2)+f(n-3) 初始边界:f(0)=1、f(1)=1、f(2)=2 依次推导:f(3)=4、f(4)=7、f(5)=13、f(6)=24、f(7)=44、f(8)=81 5×5 网格 BFS 遍历(上、下、左、右顺序),终点E第一次入队时,累计入队格子数(含S、E)为( )。 A. 15B. 12C. 14D. 13 ✅ 答案:C 💡 解析: 严格按照题目指定方向顺序逐层BFS扩展,模拟队列入队规则,终点首次入队时,总计入队格子数为 14个。 满足1 ≤ n ≤ 100 且 gcd(n, 60) = 6 的正整数 n 共有多少个( )。 A. 8B. 6C. 4D. 5 ✅ 答案:B 💡 解析:数论互质原理 1. 设 n=6k,由gcd(6k,60)=6,可得 gcd(k,10)=1 2. 约束范围:1≤6k≤100 → 1≤k≤16 3. 筛选1~16中与10互质的数:1、3、7、9、11、13,共6个 硬币面值1元、4元、6元(数量不限),凑出9元最少需要多少枚硬币( )。 A. 3B. 4C. 5D. 2 ✅ 答案:A 💡 解析:贪心最优解 1. 最优方案:4+4+1 = 9(共3枚) 2. 次优方案:6+1+1+1 = 9(共4枚) 最少需要3枚。 执行代码,最终输出为()。 int a[5] = {1, 3, 5, 7, 9}; int *p = a + 2; *(p - 1) = p[0] + p[2]; p[1] = *(a + 1) - a[0]; cout << a[1] << "," << a[3]; A. 14,13B. 8,13C. 14,7D. 14,2 ✅ 答案:A 💡 解析:指针运算 最终输出:14,13 含1000个互不相同元素的升序数组,二分查找最坏需要比较多少次( )。 A. 500B. 9C. 11D. 10 ✅ 答案:D 💡 解析:二分查找复杂度 最坏比较次数公式:⌊log₂n⌋+1 log₂1000≈9.96,计算得 9+1 = 10次 数组前缀和满足s[i] = 3i² + i,求 a[10] 的值( )。 A. 252B. 310C. 58D. 61 ✅ 答案:C 💡 解析:前缀和差分性质 a[n] = s[n]-s[n-1] s[10]=3×10²+10=310,s[9]=3×9²+9=252 a[10]=310-252 = 58 数轴点:1,3,4,7,10,15,20,选一点P使距离和最小,最小距离和为( )。 A. 37B. 42C. 40D. 38 ✅ 答案:A 💡 解析:中位数定理 奇数个点,距离和最小点为中位数(第4个点:7) 总距离:6+4+3+0+3+8+13 = 37 无向图10个顶点,4个顶点度为3,其余顶点度为4,求边数( )。 A. 36B. 18C. 17D. 20 ✅ 答案:B 💡 解析:图论握手定理 总度数= 2 × 边数 总度数= 4×3 + 6×4 = 36,边数 = 36÷2 = 18 代码 #include using namespace std; int main() { int n; cin >> n; int x = 1, y = 1; while (n > 0) { if (n % 2 == 0) ++x; else { ++x; ++y; } n = n / 2; } cout << x << ' ' << y << endl; return 0; } 核心逻辑:x统计二进制总位数、y统计二进制中1的个数(初始值均+1) 16. 输入3,输出3 3 → 正确 17. 删除第11行++x,输出两数一定相等 → 错误 18. 非负输入,第一个数一定不小于第二个数 → 正确 19. while(n>0)改为while(n>=0) → 死循环 20. 输入6,输出 → 4 3 21. 0~2³¹-1中y=2的数字个数 → 31个 核心考点:逐位加法、不自动去除前导零、进位规则 22. 输入123 456,输出0579 → 正确 23. 输入无前置零,输出一定无前置零 → 错误 24. 取消进位判断,结果一定更小 → 错误 25. 输入12345 678,输出 → 013023 26. 修改进位判断后输入95 15,输出 → 01010 27. n位数相加和小于10ⁿ,输出特征 → 长度n+1,首位为0 核心规则:输出的多位数,删除末位后仍为质数 28. 输入10输出10行 → 错误(实际9行) 29. n≤5,输出一定包含5 → 正确 30. n>10仅枚举奇数,结果不变 → 正确 31. 输入24,第三行输出 → 29 32. 正确结论:≥10的输出数,删末位后仍为质数 33. 输入200,输出总行数 → 14行 --- 34. ① 填:D b[j] * m(高位权重计算) 35. ② 填:B x(存储当前最低位) 36. ③ 填:D b[j] / n(高精度除法求商) 37. ④ 填:B b[j] % n(保留当前位余数) 38. ⑤ 填:C len > 1 && b[len - 1] == 0(去除前导零) 题目功能:分割字符串,使各段均值极差(最大值-最小值)最小 ① 字符转数值:B c >= '0' && c <= '9' ? c - '0' : c - 'A' + 10 ② 枚举右端点:D r = l; r <= n; ++r ③ 计算段平均值:C 1.0 * sum / (r - l + 1) ④ 递归参数:A r + 1, cnt + 1, min(mnb, nwb), max(mxb, nwb) ⑤ 主函数入口:D 1, 0, 1e100, -1e100
📋 试卷信息
一、单项选择题(共15题,每题2分,共30分)
第1题
int(32位):取值范围仅 (-2.14\times10^9 \sim 2.14\times10^9),无法存储超大整数; long long(64位):最大值约 (9.22\times10^{18}),可精确存储 (10^{18}+1); float/double:浮点型有效数字有限,仅支持15~17位精确数字,无法精确存储19位超大整数。
第2题
十六进制转4位二进制:2→0010、F→1111、5→0101,拼接得:001011110101 从低位向高位每3位分组:001 011 110 101 分组转八进制:1、3、6、5,最终结果为 1365。
第3题
C++整数整除向下取整:7 / 3 = 2,2 * 3 = 6 取模运算:7 % 3 = 1 最终计算:6 + 1 = 7
第4题
第5题
第6题
第7题
第8题
第9题
第10题
第11题
p指向a[2]=5,p-1指向a[1] a[1] = a[2]+a[4] = 5+9 = 14 a[3] = a[1]-a[0] = 14-1 = 13