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

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

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

判 分 报 告

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

客 观 题

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

在内存储器中每个存储单元都被赋予一个唯一的序号,称为( )。

(2 分)
CSP-J 2020 · 单选 第1题 | 知识点 内存、冯诺依曼体系结构
第 2 题 单选 未作答

编译器的主要功能是( )。

(2 分)
CSP-J 2020 · 单选 第2题 | 知识点 C++程序结构、操作系统概念
第 3 题 单选 未作答

x = truey = truez = false,以下逻辑运算表达式值为真的是( )。

(2 分)
CSP-J 2020 · 单选 第3题 | 知识点 逻辑运算、布尔型
第 4 题 单选 未作答

现有一张分辨率为 2048×10242048\times1024 像素的 3232 位真彩色图像。请问要存储这张图像,需要多大的存储空间?( )

(2 分)
CSP-J 2020 · 单选 第4题 | 知识点 存储单位换算、乘法原理
第 5 题 单选 未作答

冒泡排序算法的伪代码如下:

输入:数组 LLn1n\ge 1。输出:按非递减顺序排序的 LL

算法 BubbleSort:

1  FLAG ← n    //标记被交换的最后元素位置
2  while FLAG > 1 do
3      k ← FLAG - 1
4      FLAG ← 1
5      for j = 1 to k do
6          if L(j) > L(j + 1) then do
7              L(j) ↔ L(j + 1)
8              FLAG ← j

nn 个数用以上冒泡排序算法进行排序,最少需要比较多少次?( )

(2 分)
CSP-J 2020 · 单选 第5题 | 知识点 冒泡排序、排序复杂度
第 6 题 单选 未作答

AAnn 个实数的数组,考虑下面的递归算法:

XYZ(A[1..n])
1 if n = 1 then return A[1]
2 else temp ← XYZ(A[1..n-1])
3      if temp < A[n]
4          then return temp
5          else return A[n]

请问算法 XYZ 的输出是什么?( )

(2 分)
CSP-J 2020 · 单选 第6题 | 知识点 程序阅读与输出推断、递归、一维数组
第 7 题 单选 未作答

链表不具有的特点是( )。

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

1010 个顶点的无向图至少应该有( )条边才能确保是一个连通图。

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

二进制数 10111011 转换成十进制数是( )。

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

55 个小朋友并排站成一列,其中有两个小朋友是双胞胎,如果要求这两个双胞胎必须相邻,则有( )种不同排列方法。

(2 分)
CSP-J 2020 · 单选 第10题 | 知识点 捆绑法、排列
第 11 题 单选 未作答

下图中所使用的数据结构是( )。图示依次执行“压入 A、压入 B、弹出 B、压入 C”。

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

独根树的高度为 11。具有 6161 个结点的完全二叉树的高度为( )。

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

干支纪年法是中国传统的纪年方法,由 1010 个天干和 1212 个地支组合成 6060 个天干地支。由公历年份可以根据以下公式和表格换算出对应的天干地支。

天干=(公历年份)除以 1010 所得余数

地支=(公历年份)除以 1212 所得余数

例如,今年是 20202020 年,20202020 除以 1010 余数为 00,查表为“庚”;20202020 除以 1212,余数为 44,查表为“子”,所以今年是庚子年。

请问 19491949 年的天干地支是( )。

(2 分)
CSP-J 2020 · 单选 第13题 | 知识点 同余与模运算、最小公倍数
第 14 题 单选 未作答

1010 个三好学生名额分配到 77 个班级,每个班级至少有一个名额,一共有( )种不同的分配方案。

(2 分)
CSP-J 2020 · 单选 第14题 | 知识点 隔板法、组合
第 15 题 单选 未作答

有五副不同颜色的手套(共 1010 只手套,每副手套左右手各 11 只),一次性从中取 66 只手套,请问恰好能配成两副手套的不同取法有( )种。

(2 分)
CSP-J 2020 · 单选 第15题 | 知识点 组合、乘法原理、加法原理
第 16~21 题 阅读程序 (共 12 分) 未作答

1  #include <cstdlib>
2  #include <iostream>
3  using namespace std;
4 
5  char encoder[26] = {'C', 'S', 'P', 0};
6  char decoder[26];
7 
8  string st;
9 
10  int main() {
11      int k = 0;
12      for (int i = 0; i < 26; ++i)
13          if (encoder[i] != 0) ++k;
14      for (char x = 'A'; x <= 'Z'; ++x) {
15          bool flag = true;
16          for (int i = 0; i < 26; ++i)
17              if (encoder[i] == x) {
18                  flag = false;
19                  break;
20              }
21          if (flag) {
22              encoder[k] = x;
23              ++k;
24          }
25      }
26      for (int i = 0; i < 26; ++i)
27          decoder[encoder[i] - 'A'] = i + 'A';
28      cin >> st;
29      for (int i = 0; i < st.length(); ++i)
30          st[i] = decoder[st[i] - 'A'];
31      cout << st;
32      return 0;
33  }

16.

输入的字符串应当只由大写字母组成,否则在访问数组时可能越界。( )

(1.5 分)
17.

若输入的字符串不是空串,则输入的字符串与输出的字符串一定不一样。( )

(1.5 分)
18.

将第 1212 行的 i < 26 改为 i < 16,程序运行结果不会改变。( )

(1.5 分)
19.

将第 2626 行的 i < 26 改为 i < 16,程序运行结果不会改变。( )

(1.5 分)
20.

若输出的字符串为 ABCABCABCA,则下列说法正确的是( )。

(3 分)
21.

若输出的字符串为 CSPCSPCSPCSP,则下列说法正确的是( )。

(3 分)
CSP-J 2020 · 阅读程序 第16-21题 | 知识点 string类、字符ASCII运算、密码与加密
第 22~27 题 阅读程序 (共 13.5 分) 未作答

1  #include <iostream>
2  using namespace std;
3 
4  long long n, ans;
5  int k, len;
6  long long d[1000000];
7 
8  int main() {
9      cin >> n >> k;
10      d[0] = 0;
11      len = 1;
12      ans = 0;
13      for (long long i = 0; i < n; ++i) {
14          ++d[0];
15          for (int j = 0; j + 1 < len; ++j) {
16              if (d[j] == k) {
17                  d[j] = 0;
18                  d[j + 1] += 1;
19                  ++ans;
20              }
21          }
22          if (d[len - 1] == k) {
23              d[len - 1] = 0;
24              d[len] = 1;
25              ++len;
26              ++ans;
27          }
28      }
29      cout << ans << endl;
30      return 0;
31  }

假设输入的 nn 是不超过 2622^{62} 的正整数,kk 都是不超过 1000010000 的正整数,完成下面的判断题和单选题。

22.

k=1k=1,则输出 ans 时,len=n。( )

(1.5 分)
23.

k>1k>1,则输出 ans 时,len 一定小于 nn。( )

(1.5 分)
24.

k>1k>1,则输出 ans 时,klenk^{len} 一定大于 nn。( )

(1.5 分)
25.

若输入的 nn 等于 101510^{15}kk11,则输出等于( )。

(3 分)
26.

若输入的 nn 等于 205891132094649205891132094649(即 3303^{30})、kk33,则输出等于( )。

(3 分)
27.

若输入的 nn 等于 100010002000090100010002000090kk1010,则输出等于( )。

(3 分)
CSP-J 2020 · 阅读程序 第22-27题 | 知识点 进制运算、模拟、一维数组
第 28~33 题 阅读程序 (共 14.5 分) 未作答

1  #include <algorithm>
2  #include <iostream>
3  using namespace std;
4 
5  int n;
6  int d[50][2];
7  int ans;
8 
9  void dfs(int n, int sum) {
10      if (n == 1) {
11          ans = max(sum, ans);
12          return;
13      }
14      for (int i = 1; i < n; ++i) {
15          int a = d[i - 1][0], b = d[i - 1][1];
16          int x = d[i][0], y = d[i][1];
17          d[i - 1][0] = a + x;
18          d[i - 1][1] = b + y;
19          for (int j = i; j < n - 1; ++j)
20              d[j][0] = d[j + 1][0], d[j][1] = d[j + 1][1];
21          int s = a + x + abs(b - y);
22          dfs(n - 1, sum + s);
23          for (int j = n - 1; j > i; --j)
24              d[j][0] = d[j - 1][0], d[j][1] = d[j - 1][1];
25          d[i - 1][0] = a, d[i - 1][1] = b;
26          d[i][0] = x, d[i][1] = y;
27      }
28  }
29 
30  int main() {
31      cin >> n;
32      for (int i = 0; i < n; ++i)
33          cin >> d[i][0];
34      for (int i = 0; i < n; ++i)
35          cin >> d[i][1];
36      ans = 0;
37      dfs(n, 0);
38      cout << ans << endl;
39      return 0;
40  }

假设输入的 nn 是不超过 5050 的正整数,d[i][0]d[i][1] 都是不超过 1000010000 的正整数,完成下面的判断题和单选题。

28.

若输入 nn00,此程序可能会死循环或发生运行错误。( )

(1.5 分)
29.

若输入 nn2020,接下来的输入全为 00,则输出为 00。( )

(1.5 分)
30.

输出的数一定不小于输入的 d[i][0]d[i][1] 的任意一个。( )

(1.5 分)
31.

若输入的 nn2020,接下来的输入是 202099202000,则输出为( )。

(3 分)
32.

若输入的 nn3030,接下来的输入是 303000303055,则输出为( )。

(3 分)
33.

若输入的 nn1515,接下来的输入是 151511,以及 151511,则输出为( )。

(4 分)
CSP-J 2020 · 阅读程序 第28-33题 | 知识点 深度优先搜索、回溯、二维数组
第 34~38 题 完善程序 (共 15 分) 未作答

(质因数分解)给出正整数 nn,请输出将 nn 质因数分解的结果,结果从小到大输出。

例如:输入 n=120,程序应该输出 2 2 2 3 5,表示 120=2×2×2×3×5120=2\times2\times2\times3\times5。输入保证 2n1092\le n\le10^9。提示:先从小到大枚举变量 i,然后用 i 不停试除 n 来寻找所有的质因子。

试补全程序。

1  #include <cstdio>
2  using namespace std;
3 
4  int n, i;
5 
6  int main() {
7      scanf("%d", &n);
8      for (i = ①; ② <= n; i++) {
9          ③ {
10              printf("%d ", i);
11              n = n / i;
12          }
13      }
14      if (④)
15          printf("%d ", ⑤);
16      return 0;
17  }

34.

①处应填( )。

(3 分)
35.

②处应填( )。

(3 分)
36.

③处应填( )。

(3 分)
37.

④处应填( )。

(3 分)
38.

⑤处应填( )。

(3 分)
CSP-J 2020 · 完善程序 第34-38题 | 知识点 质因数分解、for循环、while循环
第 39~43 题 完善程序 (共 15 分) 未作答

(最小区间覆盖)给出 nn 个区间,第 ii 个区间的左右端点是 [ai,bi][a_i,b_i]。现在要在这些区间中选出若干个,使得区间 [0,m][0,m] 被所选区间的并覆盖(即每一个 0im0\le i\le m 都在某个所选的区间中)。保证答案存在,求所选区间个数的最小值。

输入第一行包含两个整数 nnmm1n50001\le n\le50001m1091\le m\le10^9)。

接下来 nn 行,每行两个整数 aia_ibib_i0ai,bim0\le a_i,b_i\le m)。

提示:使用贪心法解决这个问题。先用 Θ(n2)\Theta(n^2) 的时间复杂度排序,然后贪心选择这些区间。

试补全程序。

1  #include <iostream>
2 
3  using namespace std;
4 
5  const int MAXN = 5000;
6  int n, m;
7  struct segment { int a, b; } A[MAXN];
8 
9  void sort() // 排序
10  {
11      for (int i = 0; i < n; i++)
12          for (int j = 1; j < n; j++)
13              if (①)
14              {
15                  segment t = A[j];
16 
17              }
18  }
19 
20  int main()
21  {
22      cin >> n >> m;
23      for (int i = 0; i < n; i++)
24          cin >> A[i].a >> A[i].b;
25      sort();
26      int p = 1;
27      for (int i = 1; i < n; i++)
28          if (③)
29              A[p++] = A[i];
30      n = p;
31      int ans = 0, r = 0;
32      int q = 0;
33      while (r < m)
34      {
35          while (④)
36              q++;
37          ⑤;
38          ans++;
39      }
40      cout << ans << endl;
41      return 0;
42  }

39.

①处应填( )。

(3 分)
40.

②处应填( )。

(3 分)
41.

③处应填( )。

(3 分)
42.

④处应填( )。

(3 分)
43.

⑤处应填( )。

(3 分)
CSP-J 2020 · 完善程序 第39-43题 | 知识点 贪心、冒泡排序、结构体