CSP-J 2022基础知识答案与解析

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

(2 分)

A.C++中调用 printf 函数

B.C++中调用用户定义的类成员函数

C.C++中构造一个 class 或 struct

D.C++中构造来源于同一基类的多个派生类

解析:printf是继承自C的,C是纯面向过程的

2.有 6 个元素,按照 6、5、4、3、2、1 的顺序进入栈 S,请问下列哪个出栈序列是非法的
( )。

(2 分)

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选项3,4出栈,说明此时6,5都在栈中,这时不可能6先出,其他选项模拟即可

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

int x = 101; 
int y = 201; 
int *p = &x; 
int *q = &y; 
p = q;

(2 分)

A.将 x 的值赋为 201

B.将 y 的值赋为 101

C.将 q 指向 x 的地址

D.将 p 指向 y 的地址

考察指针和地址。 第三行 p 指向了 x, 第四行 q 指向了 y, 最后 p 改指 y。

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

(2 分)

A.数组不能排序,链表可以

B.链表比数组能存储更多的信息

C.数组大小固定,链表大小可动态调整

D.以上均正确

 

题不太严谨,但是这里给个解析:数组,如   int ar[10000];   ,他的大小永远都是10000,但是链表插入/删除掉一个元素时,他的大小会改变,所以C

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

(2 分)

A.2

B.3

C.4

D.6

出栈、进队、出队连着的,因此直接视为出栈就行了,按照出栈序列,至少为3个

画出表达树,后序遍历即可

画出哈夫曼树, 看 d 所在的层数即可。

考察完全二叉树的线性数组表示法。根节点 i 的左右孩子分别是 2i 和 2i+1。也可以直接画出二叉树观察。

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

A.N-1

B.N

C.N+1

D.N^{_{2}}

N 个节点连通, 至少需要 N-1条边

???  想看的去这里

11.

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

(2 分)

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;

A 选项最后一步错了,s->next 指向 s 自己了;B 选项最后一步还是 s->next 指向 s 自己了。C 选项最后一步还是将 s->next 指向自己了。

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

(2 分)

A.冒泡排序算法是稳定的

B.简单选择排序是稳定的

C.简单插入排序是稳定的

D.归并排序算法是稳定的

常识啊……记住就好了……

13.八进制数 32.1 对应的十进制数是( )。

(2 分)

A.24.125

B.24.250

C.26.125

D.26.250

整数部分:3*8+2=26,小数部分:1÷8=0.125,C

解析:自己一个一个枚举最后+1(又没说不能空串)

解析:阿克曼函数就是一个典型的递推,这是他的执行方式

我们来看一下

在两个else if都调用了自己

伪代码(?)

代码

好了,基础知识讲解完毕,其他请见下个帖子

  • 26
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值