2023 CSP-J详解

发布时间 2023-09-17 21:28:59作者: Auditorymoon

csp 崩了,滚来写题解,悄悄话,我服了今年这么简单我竟然崩了(蒟蒻石锤)
话不多,来吧上题目
原谅我上来就用四级标题

一.

T1.

1.在C++中,下面那个关键字用于声明一个变量,其值不能被修改?()

A. unsigned
B. const
C.static
D.mutable

这个题不用我多说吧,有点常识就知道

A.无符号性
B.定义常量(不可修改)
C.静态变量
D.可修改变量

T2.

  1. 八进制数12345670和07654321的和是()

原谅我不会打脚标
A.八进制22222221
B.八进制21111111
C.八进制22111111
D.八进制22222211

这个不多讲了,不会可以去查查八进制加减,选D

T3.

3.阅读下列代码,请问修改 data 的 value 成员以储存 3.14,正确的方式是()

union Data{
    int num;
    float value;
    char symbol;
};
union Data data;

A. data.value = 3.14;
B. value.data = 3.14;
C. data->value = 3.14;
D. value->data= 3.14;

普及一下:union是联合体,和struct类似吧,->这个玩意是指针用的。

选A

T4.

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

struct node{
    
    int data;
    Node*next;
}

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

A.Node* newNode = newNode;
newNode->data = 42; newNode->next = head; head = newNode;
B. Node* newNode = new Node; head->data = 42; newNode -> next = head; head = newNode;

C.Node* newNode = new Node; newNode -> data = 42; head->next = newNode;

D.Node* newNode = new Node; newNode -> data = 42; newNode->next = head;

还好考试之前练了练数据结构( * * )
7a64115268ef215082bcb3f952f5cced.png

//悄悄写了一下数据结构的博客

void add_to_head(int x) {
    e[idx] = x; ne[idx] = head; 
    head = idx; 
    idx ++; }
    //将 X 插入头节点的位置

数据结构博客

T5.

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

A. 6
B. 7
C. 8
D. 9

和二叉树打交道这么多年,突然来个三叉树有点懵

一棵满三叉树的节点数是$
(3^n-1)/2$ 所以第2023个节点在 7 — 8层之间,至少是8层

T6.

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

A.31
B.18
C.21
D.33

认识我的都知道,我的特长是组合数学( * * )

选一个有7种情况,选两个有10种情况,选三个只有一种情况。

T7.

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

A. 高精度计算主要是用来处理大整数或者需要保留多位小数的运算
B.大整数除以小整数的处理的步骤可以是,将被除数和除数对齐,从左到右逐位尝试将除数乘以某个数通过减法得到新的被除数,并累加商
C.高精度的乘法的的运算时间只和参与运算的两个整数中的长度较长的位数有关
D.高精度加法运算的关键在于逐位相加并处理进位

这个题蒙也蒙对了
C太绝对了 ( * * )

高精度乘法的时间复杂度难道不是和两个字符串长度的乘积有关???

T8.

后缀表达式“623+-382/+*2^3+”对应的中缀表达式是()

A.((6-(2+3))*(3 + 8 / 2))^2 + 3
B.6 - 2 + 3 * 3 + 8 / 2 ^ 2 + 3
C.(6-(2 + 3)) * ((3 + 8 / 2 ^ 2) ^ 2) + 3
D.6-((2 + 3) * (3 + 8 / 2)) ^ 2 + 3

后缀表达式转中缀表达式不多说了,实在不会网络上比比皆是讲的都比我好

T9.

二进制数 101010 和 八进制数166的和是()

必须吐槽一下,今年的题是想逼着我把计算搞好吗???
A. 10110000 (二进制)
B. 236(八进制)
C. 158(十进制)
D. A0 (十六进制)

进制转换不多说,选D

10

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

A.1111 1110 101 100 011 0
B. 1010 1001 1000 011 010 00
C. 000 001 010 011 10 11
D. 1010 1011 110 111 00 01

这个题还原哈夫曼树啊,我傻了,还原错了(敲死)选了个看起来差不多的……

寻找集合T中权值最小的两个节点;使用两个权值最小的节点构建新的节点;

选 A

15

以下哪个不是操作系统

A.Linux
B.Window
C.Android
D.HTML

常识题不讲 选D

没写完,太晚了,晚安,不定时见