林老师 · 客观题题库 · CSP-J 2022 · 入门级第一轮真题

CSP-J 2022 · 入门级第一轮真题

2022 CCF CSP-J(入门级)第一轮 · 客观题真题 · 满分 100 分
真题
复刻
试卷编号OBJ-838046
题目总数20 题 · 100.0 分
试卷类型客观题
考生须知:
① 本卷为客观题单卷,合计 20 题 · 100.0 分,全部为客观题;
② 试卷右上角设有 「提交答卷」「重置考试」 按钮,提交后系统自动判分并显示答题正确情况,请确认全部作答后再行提交;
③ 试卷不显示答案,提交后方可查看每题作答与正确答案的对照;
④ 答卷进度会保留在本地缓存中,刷新或再次打开仍可继续作答;
⑤ 本卷仅供学生练习使用;请勿用于其他用途;题面有问题请联系:i64coder@163.com。

判 分 报 告

0 / 100.0 分
0
答 对 · 得 0
0
答 错 · 失 0
当前筛选下没有题目

客 观 题

20 QUESTIONS · 2 POINTS EACH
第 1 题 单选 未作答

以下哪种功能没有涉及C++语言的面向对象特性支持: ( )。

(2 分)
CSP-J 2022 · 单选 第1题 | 知识点 类与对象、scanf与printf
第 2 题 单选 未作答

66 个元素,按照 665544332211 的顺序进入栈 S,请问下列哪个出栈序列是非法的( )。

(2 分)
CSP-J 2022 · 单选 第2题 | 知识点 栈、栈的应用
第 3 题 单选 未作答

运行以下代码片段的行为是( )。

01int x = 101;
02int y = 201;
03int *p = &x;
04int *q = &y;
05p = q;

(2 分)
CSP-J 2022 · 单选 第3题 | 知识点 程序阅读与输出推断、指针
第 4 题 单选 未作答

链表和数组的区别包括( )。

(2 分)
CSP-J 2022 · 单选 第4题 | 知识点 单向链表、一维数组
第 5 题 单选 未作答

对假设栈 S 和队列 Q 的初始状态为空。存在 e1~e6 六个互不相同的数据,每个数据按照进栈 S、出栈 S、进队列 Q、出队列 Q 的顺序操作,不同数据间的操作可能会交错。已知栈 S 中依次有数据 e1e2e3e4e5e6 进栈,队列 Q 依次有数据 e2e4e3e6e5e1 出队列。则栈 S 的容量至少是( )个数据。

(2 分)
CSP-J 2022 · 单选 第5题 | 知识点 栈、队列、模拟
第 6 题 单选 未作答

对表达式 a+(b-c)*d 的前缀表达式为( ),其中 +-* 是运算符。

(2 分)
CSP-J 2022 · 单选 第6题 | 知识点 栈的应用、栈
第 7 题 单选 未作答

假设字母表 {a, b, c, d, e} 在字符串出现的频率分别为 10%15%30%16%29%。若使用哈夫曼编码方式对字母进行不定长的二进制编码,字母 d 的编码长度为( )位。

(2 分)
CSP-J 2022 · 单选 第7题 | 知识点 哈夫曼编码、哈夫曼树
第 8 题 单选 未作答

一棵有 n 个结点的完全二叉树用数组进行存储与表示,已知根结点存储在数组的第 11 个位置。若存储在数组第 99 个位置的结点存在兄弟结点和两个子结点,则它的兄弟结点和右子结点的位置分别是( )。

(2 分)
CSP-J 2022 · 单选 第8题 | 知识点 完全二叉树、二叉树性质
第 9 题 单选 未作答

考虑由 N 个顶点构成的有向连通图,采用邻接矩阵的数据结构表示时,该矩阵中至少存在( )个非零元素。

(2 分)
CSP-J 2022 · 单选 第9题 | 知识点 邻接矩阵、图的基本概念
第 10 题 单选 未作答

以下对数据结构的表述不恰当的一项为:( )。

(2 分)
CSP-J 2022 · 单选 第10题 | 知识点 栈、队列、图的DFS遍历
第 11 题 单选 未作答

以下哪组操作能完成在双向循环链表结点 p 之后插入结点 s 的效果(其中,next 域为结点的直接后继,prev 域为结点的直接前驱):( )。

(2 分)
CSP-J 2022 · 单选 第11题 | 知识点 双向链表、程序阅读与输出推断、指针
第 12 题 单选 未作答

以下排序算法的常见实现中,哪个选项的说法是错误的:( )。

(2 分)
CSP-J 2022 · 单选 第12题 | 知识点 排序稳定性、选择排序
第 13 题 单选 未作答

八进制数 32.132.1 对应的十进制数是( )。

(2 分)
CSP-J 2022 · 单选 第13题 | 知识点 进制转换、八进制
第 14 题 单选 未作答

一个字符串中任意个连续的字符组成的子序列称为该字符串的子串,则字符串 abcab 有( )个内容互不相同的子串。

(2 分)
CSP-J 2022 · 单选 第14题 | 知识点 加法原理、乘法原理
第 15 题 单选 未作答

以下对递归方法的描述中,正确的是:( )

(2 分)
CSP-J 2022 · 单选 第15题 | 知识点 递归函数、递归
第 16~21 题 阅读程序 (共 10.5 分) 未作答

1  #include <iostream>
2 
3  using namespace std;
4 
5  int main()
6  {
7      unsigned short x, y;
8      cin >> x >> y;
9      x = (x | x << 2) & 0x33;
10      x = (x | x << 1) & 0x55;
11      y = (y | y << 2) & 0x33;
12      y = (y | y << 1) & 0x55;
13      unsigned short z = x | y << 1;
14      cout << z << endl;
15      return 0;
16  }

16.

删去第 77 行与第 1313 行的 unsigned,程序行为不变。( )

(1.5 分)
17.

将第 77 行与第 1313 行的 short 均改为 char,程序行为不变。( )

(1.5 分)
18.

程序总是输出一个整数 0。( )

(1.5 分)
19.

当输入为 2 2 时,输出为 10。( )

(1.5 分)
20.

当输入为 2 2 时,输出为 59。( )

(1.5 分)
21.

当输入为 13 8 时,输出为( )。

(3 分)
CSP-J 2022 · 阅读程序 第16-21题 | 知识点 位与、位或、移位运算、二进制
第 22~27 题 阅读程序 (共 14.5 分) 未作答

1  #include <algorithm>
2  #include <iostream>
3  #include <limits>
4 
5  using namespace std;
6 
7  const int MAXN = 105;
8  const int MAXK = 105;
9 
10  int h[MAXN][MAXK];
11 
12  int f(int n, int m)
13  {
14      if (m == 1) return n;
15      if (n == 0) return 0;
16 
17      int ret = numeric_limits<int>::max();
18      for (int i = 1; i <= n; i++)
19          ret = min(ret, max(f(n - i, m), f(i - 1, m - 1)) + 1);
20      return ret;
21  }
22 
23  int g(int n, int m)
24  {
25      for (int i = 1; i <= n; i++)
26          h[i][1] = i;
27      for (int j = 1; j <= m; j++)
28          h[0][j] = 0;
29 
30      for (int i = 1; i <= n; i++) {
31          for (int j = 2; j <= m; j++) {
32              h[i][j] = numeric_limits<int>::max();
33              for (int k = 1; k <= i; k++)
34              h[i][j] = min(
35                  h[i][j],
36                  max(h[i - k][j], h[k - 1][j - 1]) + 1);
37          }
38      }
39 
40      return h[n][m];
41  }
42 
43  int main()
44  {
45      int n, m;
46      cin >> n >> m;
47      cout << f(n, m) << endl << g(n, m) << endl;
48      return 0;
49  }

22.

当输入为 7 3 时,第 1919 行用来取最小值的 min 函数执行了 449449 次。( )

(1.5 分)
23.

输出的两行整数总是相同的。( )

(1.5 分)
24.

m11 时,输出的第一行总为 n。( )

(1.5 分)
25.

算法 g(n,m) 最为准确的时间复杂度分析结果为( )。

(3 分)
26.

当输入为 20 2 时,输出的第一行为( )。

(3 分)
27.

当输入为 100 100 时,输出的第一行为( )。

(4 分)
CSP-J 2022 · 阅读程序 第22-27题 | 知识点 线性DP、递归、二维数组
第 28~34 题 阅读程序 (共 15 分) 未作答

1  #include <iostream>
2 
3  using namespace std;
4 
5  int n, k;
6 
7  int solve1()
8  {
9      int l = 0, r = n;
10      while (l <= r) {
11          int mid = (l + r) / 2;
12          if (mid * mid <= n) l = mid + 1;
13          else r = mid - 1;
14      }
15      return l - 1;
16  }
17 
18  double solve2(double x)
19  {
20      if (x == 0) return x;
21      for (int i = 0; i < k; i++)
22          x = (x + n / x) / 2;
23      return x;
24  }
25 
26  int main()
27  {
28      cin >> n >> k;
29      double ans = solve2(solve1());
30      cout << ans << ' ' << (ans * ans == n) << endl;
31      return 0;
32  }

假设 int3232 位有符号整数类型,输入的 n 是不超过 4700047000 的自然数、k 是不超过 int 表示范围的自然数,

28.

该算法最准确的时间复杂度分析结果为 O(logn+k)O(\log n+k)。( )

(1.5 分)
29.

当输入为 9801 1 时,输出的第一个数为 99。( )

(1.5 分)
30.

对于任意输入的 n,随着所输入 k 的增大,输出的第二个数会变成 1。( )

(1.5 分)
31.

该程序有存在缺陷。当输入的 n 过大时,第 1212 行的乘法有可能溢出,因此应当将 mid 强制转换为 6464 位整数再计算。( )

(1.5 分)
32.

当输入为 2 1 时,输出的第一个数最接近( )。

(3 分)
33.

当输入为 3 10 时,输出的第一个数最接近( )。

(3 分)
34.

当输入为 256 11 时,输出的第一个数( )。

(3 分)
CSP-J 2022 · 阅读程序 第28-34题 | 知识点 二分查找、浮点型、数据范围与溢出
第 35~39 题 完善程序 (共 15 分) 未作答

试补全程序。

1  #include <bits/stdc++.h>
2  using namespace std;
3 
4  int main() {
5    int n;
6    cin >> n;
7 
8    vector<int> fac;
9    fac.reserve((int)ceil(sqrt(n)));
10 
11    int i;
12    for (i = 1; i * i < n; ++i) {
13      if (①) {
14        fac.push_back(i);
15      }
16    }
17 
18    for (int k = 0; k < fac.size(); ++k) {
19      cout << ② << " ";
20    }
21    if (③) {
22      cout << ④ << " ";
23    }
24    for (int k = fac.size() - 1; k >= 0; --k) {
25      cout << ⑤ << " ";
26    }
27  }

35.

①处应填( )

(3 分)
36.

②处应填( )

(3 分)
37.

③处应填( )

(3 分)
38.

④处应填( )

(3 分)
39.

⑤处应填( )

(3 分)
CSP-J 2022 · 完善程序 第35-39题 | 知识点 枚举、STL容器
第 40~44 题 完善程序 (共 15 分) 未作答

试补全程序。

1  #include <bits/stdc++.h>
2  using namespace std;
3 
4  const int ROWS = 8;
5  const int COLS = 8;
6 
7  struct Point {
8    int r, c;
9    Point(int r, int c) : r(r), c(c) {}
10  };
11 
12  bool is_valid(char image[ROWS][COLS], Point pt,
13                  int prev_color, int new_color) {
14    int r = pt.r;
15    int c = pt.c;
16    return (0 <= r && r < ROWS && 0 <= c && c < COLS &&
17            ① && image[r][c] != new_color);
18  }
19 
20  void flood_fill(char image[ROWS][COLS], Point cur, int new_color) {
21    queue<Point> queue;
22    queue.push(cur);
23 
24    int prev_color = image[cur.r][cur.c];
25    ②;
26 
27    while (!queue.empty()) {
28      Point pt = queue.front();
29      queue.pop();
30 
31      Point points[4] = {③, Point(pt.r - 1, pt.c),
32                          Point(pt.r, pt.c + 1), Point(pt.r, pt.c - 1)};
33      for (auto p : points) {
34        if (is_valid(image, p, prev_color, new_color)) {
35          ④;
36          ⑤;
37        }
38      }
39    }
40  }
41 
42  int main() {
43    char image[ROWS][COLS] = {{'g', 'g', 'g', 'g', 'g', 'g', 'g', 'g'},
44                                {'g', 'g', 'g', 'g', 'g', 'g', 'r', 'r'},
45                                {'g', 'r', 'r', 'g', 'g', 'r', 'g', 'g'},
46                                {'g', 'b', 'b', 'b', 'b', 'r', 'g', 'r'},
47                                {'g', 'g', 'g', 'b', 'b', 'r', 'g', 'r'},
48                                {'g', 'g', 'g', 'b', 'b', 'b', 'b', 'r'},
49                                {'g', 'g', 'g', 'g', 'g', 'b', 'g', 'g'},
50                               {'g', 'g', 'g', 'g', 'g', 'b', 'b', 'g'}};
51 
52    Point cur(4, 4);
53    char new_color = 'y';
54 
55    flood_fill(image, cur, new_color);
56 
57    for (int r = 0; r < ROWS; r++) {
58      for (int c = 0; c < COLS; c++) {
59        cout << image[r][c] << " ";
60      }
61      cout << endl;
62    }
63    // 输出:
64    // g g g g g g g g
65    // g g g g g g r r
66    // g r r g g r g g
67    // g y y y y r g r
68    // g g g y y r g r
69    // g g g y y y y r
70    // g g g g g y g g
71    // g g g g g y y g
72 
73    return 0;
74  }

40.

①处应填( )

(3 分)
41.

②处应填( )

(3 分)
42.

③处应填( )

(3 分)
43.

④处应填( )

(3 分)
44.

⑤处应填( )

(3 分)
CSP-J 2022 · 完善程序 第40-44题 | 知识点 泛洪算法、广度优先搜索、队列