ARTICLE · 1054426
2026年CSP-J第一轮试题详解(上):单项选择题
知识点本身并不偏,得分关键在于准确理解“精确存储”“第一次入队”等限定条件。
备注:依据两份完整试卷独立整理,对照AKCSP、OIerMaster、CSDN和OneCoder等多方资料逐题交叉核验。程序输出、边界条件及争议题另按原卷代码独立推演,力求最大限度减少误差。
截至发文,CCF/NOI尚未公布正式标准答案,最终以官方发布为准。
本篇答案速查
1-5 B D C C B6-10 D D C B A11-15 A D C A B
第1至15题
第1题
下列C++数据类型中,能够精确存储整数10^18+1的是( )。
A. floatB. long longC. doubleD. int
答案
B
解读
long long。题目问的是能否“精确”存储10^18+1。double的范围虽然很大,但有效精度不足以精确区分这个量级上相邻的整数;64位long long既没有这个精度问题,数值范围也足够。
第2题
十六进制数2F5转换为八进制数是( )。
A. 1364 B. 1635 C. 1405 D. 1365
答案
D
解读
1365(八进制)。2F5转成十进制是2×16²+15×16+5=757,再连续除以8,余数倒序为1365。也可以先把十六进制转成二进制,再每三位一组转八进制。
第3题
执行下面的代码,输出是( )。
代码
int a = 7, b = 3;std::cout << a / b * b + a % b;
A. 9 B. 10 C. 7 D. 6
答案
C
解读
输出7。C++整数除法中7/3=2,7%3=1,所以表达式为2×3+1=7。它其实就是“商×除数+余数=被除数”。
第4题
初始时栈为空,将1、2、3、4依次入栈,入栈过程中允许随时出栈。下列出栈序列中不可能出现的是( )。
A. 2,4,3,1 B. 1,2,3,4 C. 3,1,2,4 D. 1,4,3,2
答案
C
解读
3,1,2,4不可能。若3先出栈,1、2、3必然已经依次入栈。3弹出后,2压在1上面,不可能越过2先取出1。
第5题
一棵有100个结点的完全二叉树,其中叶子结点个数是( )。
A. 49 B. 50 C. 64 D. 51
答案
B
解读
50个叶子。100个结点的完全二叉树中,编号大于⌊100/2⌋的结点没有孩子,因此编号51至100都是叶子,共50个。
第6题
执行下面的代码后,s的值是( )。
代码
int s = 0;for (int i = 1; i <= 100; i++)if (i % 3 == 0 || i % 5 == 0)s += i;
A. 3048 B. 2733 C. 2318 D. 2418
答案
D
解读
2418。计算1至100中3或5的倍数之和,用容斥:3的倍数和为1683,5的倍数和为1050,15的倍数和为315,所以1683+1050-315=2418。
第7题
上楼梯每步可上1级、2级或3级,从地面(第0级)走到第8级台阶,共有多少种不同走法( )。
A. 44 B. 121 C. 149 D. 81
答案
D
解读
81种。设走到第i级的方法数为f(i),最后一步可能跨1、2或3级,所以f(i)=f(i-1)+f(i-2)+f(i-3)。从f(0)=1、f(1)=1、f(2)=2递推到f(8)=81。
第8题
在下面的5×5网格中,#为障碍,.为可通行格:
从S出发做BFS。初始把S入队,每次取出队首,按“上、下、左、右”的顺序访问相邻格。当E第一次入队时,已经入队过的格子(含S和E)共有多少个( )。
代码
S . . # .. . . # .. . . # .# # . . E. . . # .
A. 15 B. 12 C. 14 D. 13
答案
C
解读
14个格子。题目问的是终点E“第一次入队”时,一共有多少格子入过队,而不是最短路长度,也不是E出队时的数量。必须按照“上、下、左、右”的固定顺序逐层模拟BFS,数到E入队为14。
第9题
满足1≤n≤100且gcd(n,60)=6的正整数n共有多少个( )。
A. 8 B. 6 C. 4 D. 5
答案
B
解读
6个。令n=6k,条件可化为gcd(k,10)=1,又因为n≤100,所以1≤k≤16。其中与10互质的k为1、3、7、9、11、13,共6个。
第10题
某国硬币面值为1元、4元、6元且数量不限,凑出9元最少需要多少枚( )。
A. 3 B. 4 C. 5 D. 2
答案
A
解读
最少3枚。4+4+1=9,三枚可以做到;两枚硬币的所有组合又都凑不出9,所以答案不是凭“尽量拿大面值”猜出来的,而是3枚可行、2枚不可行。
第11题
执行下面的代码,输出是( )。
代码
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。指针p指向a[2]=5。第一句把a[1]改成p[0]+p[2]=5+9=14;第二句再用修改后的a[1]计算a[3]=14-1=13。执行顺序是关键。
第12题
在含1000个互不相同元素的升序数组中,用二分法查找给定值(返回元素位置或报告不存在),最坏情况下需要与数组元素比较多少次( )。
A. 500 B. 9 C. 11 D. 10
答案
D
解读
最坏比较10次。因为2^9=512<1000≤1024=2^10,二分查找最坏需要10次元素比较。把“下标从0开始”误当成少比较一次,是常见混淆。
第13题
数组a[1..n]的前缀和s[i]=a[1]+a[2]+...+a[i],并且s[i]=3i²+i。那么a[10]的值是( )。
A. 252 B. 310 C. 58 D. 61
答案
C
解读
58。前缀和满足a[10]=s[10]-s[9],因此(3×10²+10)-(3×9²+9)=310-252=58。
第14题
数轴上有7个点,坐标分别为1、3、4、7、10、15、20。选取一个整数坐标点P,使P到这7个点的距离之和最小。这个最小距离和是( )。
A. 37 B. 42 C. 40 D. 38
答案
A
解读
最小距离和37。七个点已经有序,使绝对距离之和最小的位置是中位数7。代入得到6+4+3+0+3+8+13=37。
第15题
一个无向图有10个顶点,其中4个顶点的度为3,其余顶点的度均为4,则该图的边数是( )。
A. 36 B. 18 C. 17 D. 20
答案
B
解读
18条边。度数和为4×3+6×4=36。无向图中每条边对度数和贡献2,所以边数为36/2=18。
前15题没有特别偏的知识,但多次考查“范围与精度”“入队与出队”“修改前与修改后”这样的细微区别。错题不能只归因于粗心,要找到具体漏掉的条件。
小结
前15题不是靠冷门知识拉开差距,而是检查概念是否准确、计算是否稳定、条件是否读完整。复盘时尤其要分清“知识不会”和“执行过程漏了一步”。下一篇将进入占分更高的三段阅读程序。