














2022 年 CCF 非专业级软件能力认证(CSP-J/S 2022)第一轮认证于 2022 年 9 月 18 日举行。
本文为您带来 CSP-J 2022 第一轮真题解析(一):单项选择题(共 15 题,每题 2 分,共计 30 分) 的原题还原、选项剖析与深度考点解析,涵盖 C++ 基础语法、数据结构、进制转换、哈夫曼编码、排序算法 等核心知识点。
原题:
以下哪种功能没有涉及 C++ 语言的面向对象特性支持:( )。
A. C++ 中调用printf函数
B. C++ 中调用用户定义的类成员函数
C. C++ 中构造一个class或struct
D. C++ 中构造来源于同一基类的多个派生类
正确答案: A
深度解析:
本题考查 C++ 的 面向对象特性。
printf 是 C 语言的输入输出库函数,属于面向过程的函数调用,并没有涉及面向对象的特性(如封装、继承、多态)。原题:
有 6 个元素,按照 6, 5, 4, 3, 2, 1 的顺序进入栈 S,请问下列哪个出栈序列是非法的( )。
A. 5, 4, 3, 6, 1, 2
B. 4, 5, 3, 1, 2, 6
C. 3, 4, 6, 5, 2, 1
D. 2, 3, 4, 1, 5, 6
正确答案: C
深度解析:
本题考查 栈的后进先出(LIFO)特性。根据进栈顺序 6, 5, 4, 3, 2, 1 逐个模拟:
原题:
运行以下代码片段的行为是( )。
1 2 3 4 5 int x = 101; int y = 201; int *p = &x; int *q = &y; p = q;A. 将 x 的值赋为 201
B. 将 y 的值赋为 101
C. 将 q 指向 x 的地址
D. 将 p 指向 y 的地址
正确答案: D
深度解析:
本题考查 指针的基本赋值操作: 代码中 p 和 q 都是指针变量。q 存储的是 y 的地址。 执行 p = q; 即把 q 中存储的地址赋值给 p,因此 p 也变成了指向 y 的地址,并不会改变 x 或 y 变量本身的值。
原题:
链表和数组的区别包括( )。
A. 数组不能排序,链表可以
B. 链表比数组能存储更多的信息
C. 数组大小固定,链表大小可动态调整
D. 以上均正确
正确答案: C
深度解析:
本题考查 数组与链表的基本性质:
原题:
对假设栈 S 和队列 Q 的初始状态为空。存在 e1 ~ e6 六个互不相同的数据,每个数据按照进栈 S、出栈 S、进队列 Q、出队列 Q 的顺序操作,不同数据间的操作可能会交错。已知栈 S 中依次有数据 e1、e2、e3、e4、e5 和 e6 进栈,队列 Q 依次有数据 e2、e4、e3、e6、e5 和 e1 出队列。则栈 S 的容量至少是( )个数据。
A. 2
B. 3
C. 4
D. 6
正确答案: B
深度解析:
本题考查 栈与队列的性质及混合模拟。 队列 Q 是先进先出,所以出队列的顺序也就是进队列的顺序。根据题意,数据是先出栈再进队列,因此队列的出队顺序其实就等同于栈的出栈顺序。 已知入栈顺序为:e1, e2, e3, e4, e5, e6。出栈顺序为:e2, e4, e3, e6, e5, e1。 我们模拟栈的操作过程,计算栈中最大元素个数:
模拟过程中,栈内同时存在的最大元素个数为 3,因此栈的容量至少是 3。
原题:
对表达式a+(b-c)*d的前缀表达式为( ),其中+、-、*是运算符。
A.*+a-bcd
B.+a*-bcd
C.abc-d*+
D.abc-+d
正确答案: B
深度解析:
本题考查 中缀表达式转前缀表达式。 转换可以借助表达式树(或括号法): a + ((b - c) * d)
(b - c) 的前缀为:- b c(b - c) * d 的前缀为:* - b c da + 上述结果 的前缀为:+ a * - b c d 最终结果:+a*-bcd。原题:
假设字母表{a, b, c, d, e}在字符串出现的频率分别为 10%, 15%, 30%, 16%, 29%。若使用哈夫曼编码方式对字母进行不定长的二进制编码,字母d的编码长度( )位。
A. 1
B. 2
C. 2 或 3
D. 3
正确答案: B
深度解析:
本题考查 哈夫曼树的构造过程: 初始频率:a(10), b(15), d(16), e(29), c(30)。
推导各字符在哈夫曼树中的深度:
原题:
一棵有 $n$ 个结点的完全二叉树用数组进行存储与表示,已知根结点存储在数组的第 1 个位置。若存储在数组第 9 个位置的结点存在兄弟结点和两个子结点,则它的兄弟结点和右子结点的位置分别是( )。
A. 8、18
B. 10、18
C. 8、19
D. 10、19
正确答案: C
深度解析:
本题考查 完全二叉树的数组顺序存储性质。 对于存储在数组下标 $i$ 的结点(根节点下标为 1):
题目中指定结点位置为 $i = 9$:
兄弟结点为 8,右子结点为 19。
原题:
考虑由 $N$ 个顶点构成的有向连通图,采用邻接矩阵的数据结构表示时,该矩阵中至少存在( )个非零元素。
A. $N - 1$
B. $N$
C. $N + 1$
D. $N^2$
正确答案: B
深度解析:
本题考查 有向图的连通性与邻接矩阵。 在图论中,“有向连通图”通常指的是 强连通图(即任意两个顶点互相可达)。 为了构成一个包含 $N$ 个顶点的强连通图,最少需要用 $N$ 条有向边构成一个包含所有顶点的大环。 每一条有向边在邻接矩阵中对应一个非零元素。因此至少需要 $N$ 条边,对应邻接矩阵中至少存在 $N$ 个非零元素。
原题:
以下对数据结构的表述不恰当的一项为:( )。
A. 图的深度优先遍历算法常使用的数据结构为栈。
B. 栈的访问原则后进先出,队列的访问原则是先进先出。
C. 队列常常被用于广度优先搜索算法。
D. 栈与队列存在本质不同,无法用栈实现队列。
正确答案: D
深度解析:
本题考查 基础数据结构特性。
原题:
以下哪组操作能完成在双向循环链表结点p之后插入结点s的效果(其中,next域为结点的直接后继,prev域为结点的直接前驱):( )。
A.p->next->prev=s; s->prev=p; p->next=s; s->next=p->next;
B.p->next->prev=s; p->next=s; s->prev=p; s->next=p->next;
C.s->prev=p; s->next=p->next; p->next=s; p->next->prev=s;
D.s->next=p->next; p->next->prev=s; s->prev=p; p->next=s;
正确答案: D
深度解析:
本题考查 双向链表的结点插入操作顺序。 假设 p 的原后继结点为 q(即 p->next)。我们需要在 p 和 q 之间插入 s。为避免丢失 q 的指针,关键是在修改 p->next 之前,必须先处理好与原后继结点的连接。 分析 D 选项的操作:
s->next=p->next; $\rightarrow$ 将 s 的后继指向原来的 q。p->next->prev=s; $\rightarrow$ 将原来 q 的前驱指向 s。s->prev=p; $\rightarrow$ 将 s 的前驱指向 p。p->next=s; $\rightarrow$ 最后,将 p 的后继指向 s。 整个顺序逻辑严密,没有任何指针丢失的错误。A 和 C 选项中在赋值 p->next=s 之后,又使用了 p->next,导致逻辑谬误。原题:
以下排序算法的常见实现中,哪个选项的说法是错误的:( )。
A. 冒泡排序算法是稳定的
B. 简单选择排序是稳定的
C. 简单插入排序是稳定的
D. 归并排序算法是稳定的
正确答案: B
深度解析:
本题考查 十大排序算法的稳定性: 排序算法的“稳定性”是指:相等的元素在排序后,相对顺序保持不变。
[5, 5, 2],第一趟寻找最小值 2 并与第一个位置交换,序列变为 [2, 5, 5],导致原来两个 5 的相对位置被破坏。原题:
八进制数 32.1 对应的十进制数是( )。
A. 24.125
B. 24.250
C. 26.125
D. 26.250
正确答案: C
深度解析:
本题考查 带小数的进制转换。 将八进制 $32.1_8$ 按权展开转为十进制:
原题:
一个字符串中任意个连续的字符组成的子序列称为该字符串的子串,则字符串abcab有( )个内容互不相同的子串。
A. 12
B. 13
C. 14
D. 15
正确答案: B
深度解析:
本题考查 字符串子串及去重计算。 我们按子串长度枚举:
""(1个)a, b, c(去重后 3个)ab, bc, ca(去重后 3个,末尾的 ab 与前面重复)abc, bca, cab(3个)abca, bcab(2个)abcab(1个) 总计:$1 + 3 + 3 + 3 + 2 + 1 = 13$ 个。原题:
以下对递归方法的描述中,正确的是:( )。
A. 递归是允许使用多组参数调用函数的编程技术
B. 递归是通过调用自身来求解问题的编程技术
C. 递归是面向对象和数据而不是功能和逻辑的编程语言模型
D. 递归是将用某种高级语言转换为机器代码的编程技术
正确答案: B
深度解析:
本题考查 递归编程基础概念。 递归的本质特征就是函数在执行过程中直接或间接地调用自身。
CSP-J 2022 第一轮选择题覆盖的知识点相对经典且基础:
预祝各位考生在备考中夯实基础,稳中求胜!
所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code
GESP 学习专题站:GESP WIKI
"luogu-"系列题目可在洛谷题库进行在线评测。
"bcqm-"系列题目可在编程启蒙题库进行在线评测。
欢迎加入:Java、C++、Python技术交流QQ群(982860385),大佬免费带队,有问必答
欢迎加入:C++ GESP/CSP认证学习QQ频道,考试资源总结汇总
欢迎加入:C++ GESP/CSP学习交流QQ群(688906745),考试认证学员交流,互帮互助
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。