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

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

2023 CCF CSP-J(入门级)第一轮 · 客观题真题 · 满分 100 分
真题
复刻
试卷编号OBJ-839236
题目总数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 2023 · 单选 第1题 | 知识点 常量与变量、整型
第 2 题 单选 未作答

八进制数 12345670812345670_{8}07654321807654321_{8} 的和为( )。

(2 分)
CSP-J 2023 · 单选 第2题 | 知识点 进制运算、八进制
第 3 题 单选 未作答

阅读下述代码,请问修改 datavalue 成员以存储 3.14,正确的方式是( )。

01union Data {
02    int num;
03    float value;
04    char symbol;
05};
06union Data data;

(2 分)
CSP-J 2023 · 单选 第3题 | 知识点 结构体、程序阅读与输出推断、浮点型
第 4 题 单选 未作答

假设有一个链表的节点定义如下:

01struct Node {
02    int data;
03    Node* next;
04};

现在有一个指向链表头部的指针:Node* head。如果想要在链表中插入一个新节点,其成员 data 的值为 42,并使新节点成为链表的第一个节点,下面哪个操作是正确的?( )

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

根节点的高度为 1,一棵拥有 2023 个节点的三叉树高度至少为( )。

(2 分)
CSP-J 2023 · 单选 第5题 | 知识点 二叉树性质、二叉树概念
第 6 题 单选 未作答

小明在某一天中依次有七个空闲时间段,他想要选出至少一个空闲时间段来练习唱歌,但他希望任意两个练习的时间段之间都有至少两个空闲的时间段让他休息。则小明一共有 ( )种选择时间段的方案。

(2 分)
CSP-J 2023 · 单选 第6题 | 知识点 组合、加法原理
第 7 题 单选 未作答

以下关于高精度运算的说法错误的是( )。

(2 分)
CSP-J 2023 · 单选 第7题 | 知识点 高精度、数据范围与溢出
第 8 题 单选 未作答

后缀表达式 6 2 3 + - 3 8 2 / + * 2 ^ 3 + 对应的中缀表达式是( )。

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

1010102101010_{2}1668166_{8} 的和为( )。

(2 分)
CSP-J 2023 · 单选 第9题 | 知识点 进制运算、进制转换
第 10 题 单选 未作答

假设有一组字符 {a,b,c,d,e,f},对应的频率分别为 5%9%12%13%16%45%。请问以下哪个选项是字符 a,b,c,d,e,f 分别对应的一组哈夫曼编码?( )

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

给定一棵二叉树,其前序遍历结果为:ABDECFG,中序遍历结果为:DEBACFG。请问这棵树的正确后序遍历结果是什么?( )

(2 分)
CSP-J 2023 · 单选 第11题 | 知识点 后序遍历、前序遍历、中序遍历
第 12 题 单选 未作答

考虑一个有向无环图,该图包含 4 条有向边:(1,2), (1,3), (2,4)和(3,4)。以下哪个选项是这个有向无环图的一个有效的拓扑排序?( )

(2 分)
CSP-J 2023 · 单选 第12题 | 知识点 图的基本概念
第 13 题 单选 未作答

在计算机中,以下哪个选项描述的数据存储容量最小?( )

(2 分)
CSP-J 2023 · 单选 第13题 | 知识点 存储单位换算、二进制
第 14 题 单选 未作答

一个班级有 10 个男生和 12 个女生。如果要选出一个 3 人的小组,并且小组中必须至少包含 1 个女生,那么有多少种可能的组合?( )

(2 分)
CSP-J 2023 · 单选 第14题 | 知识点 组合、容斥原理
第 15 题 单选 未作答

以下哪个不是操作系统?( )

(2 分)
CSP-J 2023 · 单选 第15题 | 知识点 操作系统概念、网络基础
第 16~20 题 阅读程序 (共 12 分) 未作答

1  #include <iostream>
2  #include <cmath>
3  using namespace std;
4 
5  double f(double a, double b, double c) {
6      double s = (a + b + c) / 2;
7      return sqrt(s * (s - a) * (s - b) * (s - c));
8  }
9 
10  int main() {
11      cout.flags(ios::fixed);
12      cout.precision(4);
13 
14      int a, b, c;
15      cin >> a >> b >> c;
16      cout << f(a, b, c) << endl;
17      return 0;
18  }

16.

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

(2 分)
17.

将第 77 行中的 (s - b) * (s - c) 改为 (s - c) * (s - b) 不会影响程序运行的结果。( )

(2 分)
18.

程序总是输出四位小数。( )

(2 分)
19.

当输入为 3 4 5时,输出为( )。

(3 分)
20.

当输入为 5 12 13时,输出为( )。

(3 分)
CSP-J 2023 · 阅读程序 第16-20题 | 知识点 初等几何、cmath数学函数、格式化输出
第 21~26 题 阅读程序 (共 13.5 分) 未作答

1  #include <iostream>
2  #include <vector>
3  #include <algorithm>
4  using namespace std;
5 
6  int f(string x, string y) {
7      int m = x.size();
8      int n = y.size();
9      vector<vector<int>> v(m+1, vector<int>(n+1, 0));
10      for (int i = 1; i <= m; i++) {
11          for (int j = 1; j <= n; j++) {
12              if (x[i-1] == y[j-1]) {
13                  v[i][j] = v[i-1][j-1] + 1;
14              } else {
15                  v[i][j] = max(v[i-1][j], v[i][j-1]);
16              }
17          }
18      }
19      return v[m][n];
20  }
21 
22  bool g(string x, string y) {
23      if (x.size() != y.size()) {
24          return false;
25      }
26      return f(x + x, y) == y.size();
27  }
28 
29  int main() {
30      string x, y;
31      cin >> x >> y;
32      cout << g(x, y) << endl;
33      return 0;
34  }

21.

f 函数的返回值小于等于 min(n,m)。( )

(1.5 分)
22.

f 函数的返回值等于两个输入字符串的最长公共子串的长度。( )

(1.5 分)
23.

当输入两个完全相同的字符串时,g 函数的返回值总是 true。( )

(1.5 分)
24.

将第 1919 行中的 v[m][n] 替换为 v[n][m],那么该程序( )。

(3 分)
25.

当输入为 csp-j p-jcs 时,输出为( )。

(3 分)
26.

当输入为 csppsc spsccp 时,输出为( )。

(3 分)
CSP-J 2023 · 阅读程序 第21-26题 | 知识点 LCS、线性DP、二维数组
第 27~32 题 阅读程序 (共 14.5 分) 未作答

1  #include <iostream>
2  #include <cmath>
3  using namespace std;
4 
5  int solve1(int n) {
6      return n * n;
7  }
8 
9  int solve2(int n) {
10      int sum = 0;
11      for (int i = 1; i <= sqrt(n); i++) {
12          if (n % i == 0) {
13              if (n/i == i) {
14                  sum += i*i;
15              } else {
16                  sum += i*i + (n/i)*(n/i);
17              }
18          }
19      }
20      return sum;
21  }
22 
23  int main() {
24      int n;
25      cin >> n;
26      cout << solve2(solve1(n)) << " " << solve1(solve2(n)) << endl;
27      return 0;
28  }

27.

如果输入的 n 为正整数,solve2 函数的作用是计算 n 所有的因子的平方和。( )

(1.5 分)
28.

1313-1414 行的作用是避免 n 的平方根因子 i(或 n/i)进入第 1616 行而被计算两次。( )

(1.5 分)
29.

如果输入的 n 为质数,solve2(n) 的返回值为 n2+1n^2+1。( )

(1.5 分)
30.

如果输入的 n 为质数 pp 的平方,那么 solve2(n) 的返回值为( )。

(4 分)
31.

当输入为正整数时,第一项减去第二项的差值一定( )。

(3 分)
32.

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

(3 分)
CSP-J 2023 · 阅读程序 第27-32题 | 知识点 枚举、质数判定
第 33~37 题 完善程序 (共 15 分) 未作答

试补全程序。

1  #include <iostream>
2  #include <vector>
3 
4  using namespace std;
5 
6  int find_missing(vector<int>& nums) {
7      int left = 0, right = nums.size() - 1;
8      while (left < right) {
9          int mid = left + (right - left) / 2;
10          if (nums[mid] == mid + ①) {
11              ②;
12          } else {
13              ③;
14          }
15      }
16      return ④;
17  }
18 
19  int main() {
20      int n;
21      cin >> n;
22      vector<int> nums(n);
23      for (int i = 0; i < n; i++) cin >> nums[i];
24      int missing_number = find_missing(nums);
25      if (missing_number == ⑤) {
26          cout << "Sequence is consecutive" << endl;
27      } else {
28          cout << "Missing number is " << missing_number << endl;
29      }
30      return 0;
31  }

33.

①处应填( )

(3 分)
34.

②处应填( )

(3 分)
35.

③处应填( )

(3 分)
36.

④处应填( )

(3 分)
37.

⑤处应填( )

(3 分)
CSP-J 2023 · 完善程序 第33-37题 | 知识点 二分查找、一维数组
第 38~42 题 完善程序 (共 15 分) 未作答

试补全程序。

1  #include <iostream>
2  #include <string>
3  #include <vector>
4  using namespace std;
5 
6  int min(int x, int y, int z) {
7      return min(min(x, y), z);
8  }
9 
10  int edit_dist_dp(string str1, string str2) {
11      int m = str1.length();
12      int n = str2.length();
13      vector<vector<int>> dp(m + 1, vector<int>(n + 1));
14 
15      for (int i = 0; i <= m; i++) {
16          for (int j = 0; j <= n; j++) {
17              if (i == 0)
18                  dp[i][j] = ①;
19              else if (j == 0)
20                  dp[i][j] = ②;
21              else if (③)
22                  dp[i][j] =④;
23              else
24                  dp[i][j] = 1 + min(dp[i][j - 1], dp[i - 1][j], ⑤);
25          }
26      }
27      return dp[m][n];
28  }
29 
30  int main() {
31      string str1, str2;
32      cin >> str1 >> str2;
33      cout << "Minimum number of operations: "
34          << edit_dist_dp(str1, str2) << endl;
35      return 0;
36  }

38.

①处应填( )

(3 分)
39.

②处应填( )

(3 分)
40.

③处应填( )

(3 分)
41.

④处应填( )

(3 分)
42.

⑤处应填( )

(3 分)
CSP-J 2023 · 完善程序 第38-42题 | 知识点 线性DP、string类