目录
卷头
2023CCF非专业级别软件能力认证第一轮
(CSP-J1) 入门级C++语言试题
认证时间:2023年9月16日09:30~11:30
考生注意事项:
试题纸共有10页,答题纸有一页,满分100分。请在答题纸上作答,写在试题纸上的一律无效。
不得使用任何电子设备(如计算机,手机,电子词典等)或查阅任何书籍资料。
基础题
1
在 C++ 中,下面哪个关键字用于声明一个变量, 其值不能被修改?
A unsigned
B const
C static
D mutable
答案: B. const
解析:在C++中, const为常量。
2
八进制数123456708和076543218 的和为
A (22222221)8
B (21111111)8
C (22111111)8
D (22222211)8
答案: D. (22222211)8
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;
答案: A. data.value =3.14;
基础题,自己翻书去。
4
假设有一个链表的节点定义如下:
struct Node {
int data;
Node* next;
}
现在有一个指向链表头部的指针: Node* head。如果想要在链表中插入一个新节点,其成员data的值为42,并使新节点成为链表的第一个 节点,下面哪个操作是正确的?
A Node* newNode = new Node; 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;
答案: A;
5
链表的前插法,自己在纸上模拟一下即可。
根节点的高度为1 ,一棵拥有2023个节点的三叉树高度至少为()。
A 6
B 7
C 8
D 9
答案: C
算上根节点1.
3^(7+1)
6
小明在某一天中依次有七个空闲时间段,他想要选出至少一个空闲时间段来练习唱歌,但他希望任意两个练习的时间段之间都有至少两 个空闲的时间段让他休息。则小明一共有()种选择时间段的方案。
A 31
B 18
C 21
D 33
答案: B. 18
枚举即可。
7
以下关于高精度运算的说法错误的是()
A 高精度计算主要是用来处理大整数或需要保留多位小数的运算
B 大整数除以小整数的处理的步骤可以是,将被除数和除数对齐,从左到右逐位尝试将除数乘以某个数,通过减法得到新的被除数,并累 加商
C 高精度乘法的运算时间只与参与运算的两个整数中长度较长者的位数有关
D 高精度加法运算的关键在于逐位相加并处理进位
答案: C.
并不是只参与
8
后缀表达式 “ 6 2 3 + - 3 8 2 / + * 2 ^ 3 + ” 对应的中缀表达式是()
A ((6-(2+3))(3+8/2))^2+3
B 6-2+33+8/2^2+3
C (6-(2+3))((3+8/2)^2)+3
D 6-((2+3)(3+8/2))^2+3
答案: A.
二叉树绘画(后续)->中序
9
数1010102和1668的和为 ( )
A (10110000)2
B (236)8
C (158)10
D (A0)16
答案是 D (A0)16
解析
首先将二进制数101010(2)转换为十六进制得到A(16),然后将八进制数166(8)转换为十六进制得到0(16),最后将A和0相加得到A0(16)。
10
假设有一组字符{a,b,c,d,e,f},对应的频率分别为5%、9%、 12%、 13%、 16%、45%。请问以下哪个选项是字符a,b,c,d,e,f分别对应的一 组哈夫曼编码?
A 1111,1110,101,100,110,0
B 1010,1001,1000,011,010,00
C 000,001,010,011,10,11
D 1010,1011,110,111,00,01
答案是 A:
解析
<