夜雨聆风学习资料网

ARTICLE · 1054426

2026年CSP-J第一轮试题详解(上):单项选择题

2026年CSP-J第一轮试题详解(上):单项选择题
2026年CSP-J第一轮试卷共43题,分为单项选择、阅读程序和完善程序三个部分。为便于阅读,分为上、中、下三篇。
本篇集中解析第1至15题,覆盖数据类型、进制、栈、完全二叉树、BFS、前缀和与图论基础。

知识点本身并不偏,得分关键在于准确理解“精确存储”“第一次入队”等限定条件。

备注:依据两份完整试卷独立整理,对照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. float
  • B. long long
  • C. double
  • D. int

答案

B

解读

long long。题目问的是能否“精确”存储10^18+1double的范围虽然很大,但有效精度不足以精确区分这个量级上相邻的整数;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=27%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≤100gcd(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互质的k1、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,13
  • B. 8,13
  • C. 14,7
  • D. 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题不是靠冷门知识拉开差距,而是检查概念是否准确、计算是否稳定、条件是否读完整。复盘时尤其要分清“知识不会”和“执行过程漏了一步”。下一篇将进入占分更高的三段阅读程序。

相关学习资料