#CSPJ2026. 2026 CCF CSP-J 第一轮 C++ 语言试题

    ID: 313 客观题 尝试: 47 已通过: 1 难度: 10 上传者: 标签>模拟枚举递归递推二分深度优先搜索(DFS)广度优先搜索(BFS)回溯法剪枝数学推导最大公约数进制素数判断(质数筛法)容斥数组操作前缀和栈队列高精度CSP-J入门级2026J组普及

2026 CCF CSP-J 第一轮 C++ 语言试题

2026 CCF CSP-J 第一轮 C++ 语言试题

本卷共43个作答小题,满分100分。每题只选一个答案,答错或未答得0分;判断题A表示正确、B表示错误。

一、单项选择题(每题2分,共30分)

1(2分)

下列 C++ 数据类型中,能够精确存储 1018+110^{18}+1 这个整数的是( )。

{{ select(1) }}

  • float
  • long long
  • double
  • int

2(2分)

十六进制数 2F52F5 转换为八进制数是( )。

{{ select(2) }}

  • 1364
  • 1635
  • 1405
  • 1365

3(2分)

执行下列 C++ 代码,输出是( )。

int a = 7, b = 3;
std::cout << a / b * b + a % b;

{{ select(3) }}

  • 9
  • 10
  • 7
  • 6

4(2分)

初始时栈为空,将 1、2、3、4 依次入栈,入栈过程中允许随时出栈。下列出栈序列中不可能出现的是( )。

{{ select(4) }}

  • 2,4,3,1
  • 1,2,3,4
  • 3,1,2,4
  • 1,4,3,2

5(2分)

一棵有 100 个结点的完全二叉树,其叶子结点个数是( )。

{{ select(5) }}

  • 49
  • 50
  • 64
  • 51

6(2分)

执行下列代码后 s 的值是( )。

int s = 0;
for (int i = 1; i <= 100; i++)
    if (i % 3 == 0 || i % 5 == 0)
        s += i;

{{ select(6) }}

  • 3048
  • 2733
  • 2318
  • 2418

7(2分)

上楼梯每步可上 1 级、2 级或 3 级,从地面(可视为第 0 级)走到第 8 级台阶共有多少种不同走法( )。

{{ select(7) }}

  • 44
  • 121
  • 149
  • 81

8(2分)

下图为 5×55\times5 网格,行号、列号均从 0 开始,# 为障碍,. 为可通行格:

网格

从 S 出发做广度优先搜索(BFS):初始时把 S 入队;每次取出队首格子,按“上、下、左、右”(上 = 行号减 1,下 = 行号加 1,左 = 列号减 1,右 = 列号加 1)的顺序遍历它的四个相邻格子,越界、障碍或已访问的格子跳过,其余格子标记为已访问并入队。当 E 第一次入队时,已经入队过的格子(含 S 和 E)共有多少个( )。

{{ select(8) }}

  • 15
  • 12
  • 14
  • 13

9(2分)

满足 1≤n≤1001\le n\le100 且 gcd⁡(n,60)=6\gcd(n,60)=6 的正整数 nn 共有多少个( )。

{{ select(9) }}

  • 8
  • 6
  • 4
  • 5

10(2分)

某国硬币面值为 1 元、4 元、6 元且数量不限,凑出 9 元最少需要多少枚( )。

{{ select(10) }}

  • 3
  • 4
  • 5
  • 2

11(2分)

执行下列代码,输出是( )。

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];

{{ select(11) }}

  • 14,13
  • 8,13
  • 14,7
  • 14,2

12(2分)

在含 1000 个互不相同元素的升序数组中,用二分法查找给定值(返回元素位置或报告不存在),最坏情况下需要与数组元素比较多少次( )。

{{ select(12) }}

  • 500
  • 9
  • 11
  • 10

13(2分)

数组 a[1..n]a[1..n] 的前缀和数组 ss(即 s[i]=a[1]+a[2]+⋯+a[i]s[i]=a[1]+a[2]+\cdots+a[i])满足 s[i]=3i2+is[i]=3i^2+i。则 a[10]a[10] 的值是( )。

{{ select(13) }}

  • 252
  • 310
  • 58
  • 61

14(2分)

数轴上有 7 个点,坐标分别为 1、3、4、7、10、15、20。在数轴上选取一个整数坐标点 P,使 P 到这 7 个点的距离之和最小,这个最小距离和是( )。

{{ select(14) }}

  • 37
  • 42
  • 40
  • 38

15(2分)

一个无向图有 10 个顶点,其中 4 个顶点的度为 3,其余顶点的度均为 4,则该图的边数是( )。

{{ select(15) }}

  • 36
  • 18
  • 17
  • 20

二、阅读程序(共40分)

程序输入不超过数组或字符串定义的范围。除特殊说明外,判断题1.5分,选择题3分。

阅读程序(一)

阅读程序(一)公共题干与程序1

16(1分)

当输入为 3 时,程序输出为 3 3。

{{ select(16) }}

  • 正确
  • 错误

17(1.5分)

将第 11 行的 ++x; 删除后,程序输出的两个数一定相等。

{{ select(17) }}

  • 正确
  • 错误

18(1.5分)

假设输入为非负整数,则程序输出的第一个数一定不小于第二个数。

{{ select(18) }}

  • 正确
  • 错误

19(3分)

将第 7 行的 while (n > 0) 改为 while (n >= 0) 后,程序可能出现的问题是( )。

{{ select(19) }}

  • 陷入死循环
  • 输出结果比原来大
  • 输出结果比原来小
  • 输出结果不受影响

20(3分)

当输入为 6 时,输出为( )。

{{ select(20) }}

  • 3 3
  • 4 2
  • 4 3
  • 5 2

21(3分)

若输入 nn 依次取遍 0,1,2,…,231−10,1,2,\ldots,2^{31}-1 中的所有整数,则程序输出的第二个数恰好为 2 的次数为( )。

{{ select(21) }}

  • 16
  • 30
  • 31
  • 32

阅读程序(二)

阅读程序(二)公共题干与程序1

22(1.5分)

当输入为 123 456 时,程序输出为 0579。

{{ select(22) }}

  • 正确
  • 错误

23(1.5分)

假设输入的两个数均不含前导零,则程序输出的结果也一定不会含有前导零。

{{ select(23) }}

  • 正确
  • 错误

24(1.5分)

将第 21 行改为 c[i]=a[i]+b[i]; 后,程序输出的结果一定比原来的结果小。

{{ select(24) }}

  • 正确
  • 错误

25(3分)

当输入为 12345 678 时,输出为( )。

{{ select(25) }}

  • 012923
  • 013023
  • 13023
  • 130230

26(3分)

将第 22 行的 if (c[i]>=10) 改为 if (c[i]>10) 后,当输入为 95 15 时,输出为( )。

{{ select(26) }}

  • 01010
  • 110
  • 140
  • 1410

27(3分)

假设输入的两个数均为 nn 位正整数(不含前导零),且它们的和小于 10n10^n,则程序输出的字符串一定满足( )。

{{ select(27) }}

  • 第一个字符一定不为 '0'
  • 长度一定为 nn
  • 长度一定为 n+1n+1,且第一个字符为 '0'
  • 长度可能为 n+2n+2

阅读程序(三)

阅读程序(三)公共题干与程序1

28(1.5分)

当输入为 10 时,程序的输出共有 10 行。

{{ select(28) }}

  • 正确
  • 错误

29(1.5分)

若输入的 nn 不大于 5,则程序的输出中一定包含 5。

{{ select(29) }}

  • 正确
  • 错误

30(1.5分)

若输入的 nn 大于 10,将第 17 行的 for (int i=0;i<=9;i++) 改为 for (int i=1;i<=9;i+=2) 后,程序的输出结果一定不变。

{{ select(30) }}

  • 正确
  • 错误

31(3分)

当输入为 24 时,程序输出的第 3 行为( )。

{{ select(31) }}

  • 23
  • 29
  • 31
  • 239

32(3分)

下列关于该程序输出的说法中,正确的是( )。

{{ select(32) }}

  • 输出的数一定按照从小到大的顺序排列
  • 随着输入 nn 的增大,输出的行数一定不会增加
  • 输出的数的个位数字只可能是 3 或 7
  • 输出的每个大于等于 10 的数,十进制下删去它的末位数字后得到的数一定是质数

33(3分)

当输入为 200 时,程序输出的行数为( )。

{{ select(33) }}

  • 12
  • 13
  • 14
  • 15

三、完善程序(每小题3分,共30分)

完善程序(一):进制减半

完善程序(一):进制减半公共题干与程序1

34(3分)

①处应填( )。

{{ select(34) }}

  • b[j] * n
  • b[j] * m
  • b[j - 1] * n
  • b[j - 1] * m

35(3分)

②处应填( )。

{{ select(35) }}

  • x * n
  • x
  • 0
  • m

36(3分)

③处应填( )。

{{ select(36) }}

  • b[j] / m
  • b[j] % n
  • b[j] % m
  • b[j] / n

37(3分)

④处应填( )。

{{ select(37) }}

  • b[j] / m
  • b[j] % n
  • b[j] % m
  • b[j] / n

38(3分)

⑤处应填( )。

{{ select(38) }}

  • len > 0 && b[len - 1] == 0
  • len > 0 && b[0] == 0
  • len > 1 && b[len - 1] == 0
  • len > 1 && b[0] == 0

完善程序(二):平衡分割

完善程序(二):平衡分割公共题干与程序1

完善程序(二):平衡分割公共题干与程序2

39(3分)

①处应填( )。

{{ select(39) }}

  • c <= '9' ? c - '0' : c - 'A' + 10
  • c <= '9' ? c - '0' : c - 'A'
  • c <= '9' ? c - '0' + 1 : c - 'A' + 10
  • c <= '9' ? c - '0' : c - 'A' + 9

40(3分)

②处应填( )。

{{ select(40) }}

  • int r = l; r <= n; r++
  • int r = l; r < n; r++
  • int r = 1; r <= n; r++
  • int r = l; r++ < n

41(3分)

③处应填( )。

{{ select(41) }}

  • get_val(s[r])
  • get_val(s[r-1])
  • s[r-1]
  • s[r]

42(3分)

④处应填( )。

{{ select(42) }}

  • sum/(r-l+1)
  • 1.0*sum/(r-l+1)
  • 1.0*sum/(r-l)
  • sum*1.0/n

43(3分)

⑤处应填( )。

{{ select(43) }}

  • r+1, cnt+1, min(minb,nwb), max(maxb,nwb)
  • r, cnt+1, minb, maxb
  • r+1, cnt, nwb, nwb
  • r, cnt, min(minb,nwb), max(maxb,nwb)