# CSP-J 2023 第一轮试题(初赛)

CSP-J 2023 第一轮试题
一、单项选择题(共 15 题,每题 2 分,共计 30 分;每题有且仅有一个正确选项)
在C++中,下面哪个关键字用于声明一个变量,其值不能被修改?
A. unsigned
B. const
C. static
D. mutable
答:选B。
声明常量的格式是 const 数据类型 常量名 = 常量值;,例:const double PI = 3.14;

八进制数1234567 0 8 12345670_812345670 
8

  和0765432 1 8 07654321_807654321 
8

 的和为()。
A. 2222222 1 8 22222221_822222221 
8

 
B. 2111111 1 8 21111111_821111111 
8

 
C. 2211111 1 8 22111111_822111111 
8

 
D. 2222221 1 8 22222211_822222211 
8

 
答:选D
列竖式,两数相加,逢8进1。
12345670
07654321
--------------
22222211

阅读下述代码,请问修改data的value成员以存储3.14,正确的方式是( )。
union Data {
    int num;
    float value;
    char symbol;
};
union Data data;
1
2
3
4
5
6
A. data.value = 3.14;
B. value.data = 3.14;
C. data->value = 3.14;
D. value->data = 3.14;

答:选A。
考察联合体union。一个union内可以定义多种不同的数据类型, 一个某union类型的变量中,允许装入该union中所定义的任何一种数据,这些数据共享同一段内存,以达到节省空间的目的。
联合体类型的变量通过点(.)来取其成员。data.value = 3.14的意思就是将变量data所表示的内存当做float类型,保存3.14这一值。

假设有一个链表的节点定义如下:
struct Node {
    int data;
    Node* next;
};
1
2
3
4
现在有一个指向链表头部的指针: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
考察单链表头插法。注意head指向的不是头结点,而是“链表头部”,也就是第一个结点。
先从堆区申请结点Node* newNode = new Node;,然后给新结点设值newNode->data = 42;,接下来把新结点的下一个结点设为链表的第一个结点newNode->next = head;,最后把指向第一个结点的指针head指向新结点head = newNode;。

根节点的高度为1,一根拥有2023个节点的三叉树高度至少为( )。
A. 6
B. 7
C. 8
D. 9
答:选C
节点数固定,三叉树高度最小时,应该是上面每层都是满的,最下面一层可能不满。
考虑满三叉树每层结点数
第1层 1个
第2层 3个
第3层 9个

第h层 3 h − 1 3^{h-1}3 
h−1
 个
h层满三叉树的总结点数为:3 0 + 3 1 + . . . + 3 h − 1 = ( 3 h − 1 ) / 2 3^0+3^1+...+3^{h-1} = (3^h-1)/23 
0
 +3 
1
 +...+3 
h−1
 =(3 
h
 −1)/2
当h为7时,7层满三叉树的总结点数为( 3 7 − 1 ) / 2 = 1093 (3^7-1)/2=1093(3 
7
 −1)/2=1093。
当h为8时,8层满三叉树的总结点数为( 3 8 − 1 ) / 2 = 3280 (3^8-1)/2=3280(3 
8
 −1)/2=3280。
2023个结点的三叉树结点数大于7层满三叉树的结点数,小于8层满三叉树的结点数,因此该三叉树的高度为8层。想让该树层数更多很容易,排成一条链,高度就是2023。因此一个拥有2023个节点的三叉树高度至少为8。

小明在某一天中依次有七个空闲时间段,他想要选出至少一个空闲时间段来练习唱歌,但他希望任意两个练习的时间段之间都有至少两个空闲的时间段让他休息,则小明一共有( )种选择时间段的方案。
A. 31
B. 18
C. 21
D. 33
答:选B
考察递推。
将问题抽象:有个7位二进制数,其中至少1位是1,要求两个1之间至少有两个0,请问这样的二进制数的个数。
d[i]表示i位二进制数中至少有1位是1,两个1之间至少有两个0的情况数。
易知d[1] = 1,d[2] = 2,d[3] = 3。
当i > 3时,
如果第i位置放1,则第i-1,i-2位置必须是0,情况数为前i-3位至少1位是1,相邻两个1之间至少两个0的的情况数,为d[i-3],以及前i-3位全是0的情况,有1种。共d[i-3]+1种情况。
如果第i位置放0,前i-1位至少1位是1,相邻两个1之间至少两个0的情况数为d[i-1]
因此:d[i] = d[i-1]+d[i-3]+1。
d[4] = d[3]+d[1]+1 = 5
d[5] = d[4]+d[2]+1 = 8
d[6] = d[5]+d[3]+1 = 12
d[7] = d[6]+d[4]+1 = 18

以下关于高精度运算的说法错误的是( )。
A. 高精度计算主要是用来处理大整数或需要保留多位小数的运算。
B. 大整数除以小整数的处理的步骤可以是,将被除数和除数对齐,从左到右逐位尝试将除数乘以某个数,通过减法得到新的被除数,并累加商。
C. 高精度乘法的运算时间只与参与运算的两个整数中长度较长者的位数有关。
D. 高精度加法运算的关键在于逐位相加并处理进位。
答:选C
A. 高精度计算可以处理大整数的保存和计算,对于保留多位小数的运算,可以采用定点数的形式,在高精度的数字数组中人为规定小数点的位置(即将小数写成整数乘以基数的幂的形式,而后进行整数运算),即可完成定点数小数高精度运算。
如1.2 ∗ 7.3 1.2*7.31.2∗7.3,可以写成:120 ∗ 1 0 − 2 ∗ 734 ∗ 1 0 − 2 = 120 ∗ 734 ∗ 1 0 − 4 120*10^{-2}*734*10^{-2}=120*734*10^{-4}120∗10 
−2
 ∗734∗10 
−2
 =120∗734∗10 
−4
 ,进行整数乘法运算后,得到87600 ∗ 1 0 − 4 87600*10^{-4}87600∗10 
−4
 ,输出时,指定在倒数第4位前输出小数点。
B. 描述了除法竖式的书写过程,高精除低精运算确实就是在模拟除法竖式,B选项描述正确。
C. 高精度乘法的运算时间与参与运算的两个整数的位数都有关,如果两个整数的位数分别为m和n,那么高精乘高精的复杂度为O ( m n ) O(mn)O(mn)
D. 描述正确

后缀表达式“6 2 3 + - 3 8 2 / + * 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) + 3
D. 6 - ((2 + 3) * (3 + 8 / 2)) ^ 2 + 3
答:选A
关于通过后缀表达式建立表达式树的方法,可以进入洛谷 P1449 后缀表达式,看里面的解法2。
先根据后缀表达式建表达式树。得到:

+
^
3
*
-
+
6
+
2
3
3
/
8
2
2
而后中序遍历表达式树,遍历子树得到的中缀表达式两边要加括号,即可得到中缀表达式。

数10101 0 2 101010_2101010 
2

 和16 6 8 166_8166 
8

 的和为( )。
A. 1011000 0 2 10110000_210110000 
2

 
B. 23 6 8 236_8236 
8

 
C. 15 8 10 158_{10}158 
10

 
D. A 0 16 A0_{16}A0 
16

 
答:选D
1位8进制数字转为3位2进制数字。1位16进制数字转为4位2进制数字。把数字都尽量转为二进制数字进行比较。
16 6 8 = 111011 0 2 166_8=1110110_2166 
8

 =1110110 
2

 ,10101 0 2 + 111011 0 2 = 1010000 0 2 101010_2+1110110_2=10100000_2101010 
2

 +1110110 
2

 =10100000 
2

 
将各选项转为二进制:23 6 8 = 1001111 0 2 236_8=10011110_2236 
8

 =10011110 
2

 ,A 0 16 = 1010000 0 2 A0_{16}=10100000_2A0 
16

 =10100000 
2

 
将15 8 10 158_{10}158 
10

 转为8进制,使用除基取余法:
158/8=19…6
19/8=2…3
2/8=0…2
所以15 8 10 = 23 6 8 158_{10}=236_8158 
10

 =236 
8

 ,与B选项相同。
综上,只有D选项的值与题目给定的两个数字的加和相同。

假设有一组字符{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
构建哈夫曼树,每个结点自己是一棵树,权值是相应的频率(相对大小)。每次循环选择权值最小的两棵树,合并为一棵树,新的树的权值是两棵子树的权值加和。

14
a:5
b:9
25
c:12
d:13
30
e:16
55
100
f:45
得到哈夫曼树后,将每个结点连接到左右孩子的边上分别标注0与1(必须一个是0,一个是1,哪边是0哪边是1无所谓),从根结点到叶子结点的路径经过的边上的数字合起来就是该叶子结点表示的字符的哈夫曼编码。
我们不能确定具体各条边上标的是0还是1,但可以确定每个字母的哈夫曼编码的位数。根据哈夫曼树,a与b一定是4位,c,d,e一定是3位,f一定是1位。只有A选项满足这种情况。

给定一棵二叉树,其前序遍历结果为:ABDECFG,中序遍历结果为:DEBACFG。请问这棵树的正确后序遍历
结果是什么?( )
A. EDBGFCA
B. EDBGCFA
C. DEBGFCA
D. DBEGFCA
答:选A
二叉树已知前序中序求后序,方法参考信息学奥赛一本通 1339:【例3-4】求后序遍历

前序遍历根结点A,中序遍历中找到根结点A。
左子树的前序遍历序列:BDE,中序遍历序列:DEB
根结点B,左子树中序:DE,左子树前序:DE。
根结点D,看左子树中序,得到右孩子是E。
右子树的前序遍历序列:CFG,中序遍历序列:CFG
根结点C,右子树中序:FG,右子树前序:FG
根结点F,右孩子G。

对其进行后序遍历的结果是EDBGFCA,选A。

考虑一个有向无环图,该图包括4条有向边:(1,2),(1,3),(2,4),和(3,4)。以下哪个选项是这个有向无环图的一个有效的拓扑排序?( )
A. 4,2,3,1
B. 1,2,3,4
C. 1,2,4,3
D. 2,1,3,4
1
2
3
4
答:选B。
根据求拓扑排序的Kahn算法,每次删掉一个入度为0的顶点,删掉顶点的顺序就是拓扑排序。
该图的拓扑排序可以是1 2 3 4,或1 3 2 4。选B。

在计算机中,以下哪个选项描述的数据存储容量最小?( )
A. 字节(byte)
B. 比特(bit)
C. 字(word)
D. 千字节(kilobyte)
答:选B
字节(byte),简称B。比特(bit),简称b。千字节(kilibyte),简称KB。
有换算关系:1B=8b, 1KB = 1024B。
字(word),即该计算机的字长。一个32位计算机的一个字(word)就是32位。字一定大于字节。
因此,比特描述的数据存储容量最小。

一个班级有10个男生和12个女生。如果要选出⼀个3人的小组,并且小组中必须至少包含1个女生,那么有多少种可能的组合?( )
A. 1420
B. 1770
C. 1540
D. 2200
答:选A
方法1:正向思考。3人小组中至少包含1个女生,可以是2男1女,1男2女,或3女。情况数为:C 10 2 C 12 1 + C 10 1 C 12 2 + C 12 3 = 540 + 660 + 220 = 1420 C_{10}^2C_{12}^1+C_{10}^1C_{12}^2+C_{12}^3=540+660+220=1420C 
10
2

 C 
12
1

 +C 
10
1

 C 
12
2

 +C 
12
3

 =540+660+220=1420
方法2:逆向思考,补集转化。至少包含1个女生的情况数,为选出3人小组的总情况数减去不包含女生的情况数。不包含女生,即3人是3个男生。
情况数为:C 22 3 − C 10 3 = 1540 − 120 = 1420 C_{22}^3-C_{10}^3=1540-120=1420C 
22
3

 −C 
10
3

 =1540−120=1420

以下哪个不是操作系统?( )
A. Linux
B. Windows
C. Android
D. HTML
答:选D
HTML是超文本标记语言,用来编写网页需要用到的语言之一。Linux,Windows,Android都是操作系统。

二、阅读程序
阅读程序(1) 第16-20题
阅读程序(2) 第21-26题
阅读程序(3) 第27-32题

三、完善程序
完善程序(1) 第33-37题
完善程序(2) 第38-42题


君义_noip
关注

5


15

3

专栏目录
CSP - 2023 普及组初赛试题及解析
QD_Jason的博客
 526
CSP - 2023 普及组初赛试题及解析
CSP 2023 入门级第一轮
wangchenyu22的博客
 768
int a,b,c;return 0;
3 条评论
kkkkk271828182
热评
第六题直接枚举更方便
写评论
信息学奥赛初赛天天练-26-CSP-J2023基础题攻略,组合数学、高精度算法、计算机存储奥秘与操作系统实践
ya888g
 1164
6 小明在某一天中依次有七个空闲时间段,他想要选出至少一个空闲时间段来练习唱歌,但他希望任意两个练习的时间段之间都有至少两个空闲的时间段让他休息,则小明一共有( )种选择时间段的方案。6 小明在某一天中依次有七个空闲时间段,他想要选出至少一个空闲时间段来练习唱歌,但他希望任意两个练习的时间段之间都有至少两个空闲的时间段让他休息,则小明一共有( )种选择时间段的方案。B 大整数除以小整数的处理的步骤可以是,将被除数和除数对齐,从左到右逐位尝试将除数乘以某个数,通过减法得到新的被除数,并累加商。
CSP-J 2023年入门组初赛模拟题(8)
2301_77946044的博客
 875
16.输入的x值应在 [0, n−1] 的范围内。F17.把第10行改成d[x]++ ,不影响程序运行结果。T18.对任意在[1, 9]之间的数i,都有 d[i-1]<d[i]<d[i+1]。F19.把第16行改成\if(d[i]>d[i-1]),程序运行的结果会发⽣改变。F20.输人n=9后,接着输入: 1 3 4 5 2 4 3 5 2 后,程序输出结果为(B21.(4分)把程序第 17 行改成 print("%3d" ,i);后,输入 n = 10 后,
历年CSP-J初赛真题解析 | 2023年CSP-J初赛单项选择题(1-15)
COCO_gsta的博客
 4082
第1层1个节点,第2层3个节点,第3层9个节点,第4层27个节点,第5层81个节点,第6层243个节点,第7层729个节点,第8层2187个节点。现在有一个指向链表头部的指针:Node* head, 如果想要在链表中插入一个新节点,其成员data的值为42, 并使新节点成为链表的第一个节点, 下面哪个操作是正确的?12、考虑一个有向无环图,该图包含4条有向边:(1,2),(1,3),(2,4)和(3,4)。按照哈夫曼规则画出哈夫曼树,f节点没有子节点,观察答案A,说明f为0,通过排除法可以直接选A。
2023年CSP-J第一轮认证试题解析
ffalali001的博客
 2118
【代码】2023年CSP-J第一轮认证试题解析。
2023年CSP-J入门级第一轮初赛试题+参考答案
gupuyi2012的博客
 1042
以上就是试卷和答案,祝各位考生取得圆满的成绩。
2022CSP-J初赛真题
08-03
"2022CSP-J初赛真题" 本资源为2022年CCF CSP-J初赛真题,考试时间为2022年9月18日9:30-11:30,考试共计100分,考生须在答题纸上作答,不得使用电子设备或查阅书籍资料。 单项选择题中,考题涵盖了C++语言的面向...
2016-2020年 CSP-J1 CSP-S1 NOIP 初赛真题 答案及解析.rar
09-12
2016-2020年 CSP-J1 CSP-S1 NOIP 初赛真题 答案及解析.rar
NOIP CSP-J CSP-S 初赛 第1轮 学习资料集(J)-2023.08.22.pdf
08-22
4. **算法解析**:CSP初赛的高频考点解析和专项练习,如选择题解析,可以帮助学生熟悉常见的算法题型,提高解题速度和准确性。 5. **课程讲解**:一系列的在线课程和视频讲解了从计算机基础知识到具体编程技巧的...
NOIP CSP-J CSP-S 初赛 第1轮 学习资料集(C)-2023.06.12.pdf
06-12
【CSP-J CSP-S 初赛】是中国计算机学会(CCF)主办的青少年信息学奥林匹克竞赛的初级和高级组别,旨在培养青少年的计算思维、编程技能和问题解决能力。【CSP-J】针对初中生,【CSP-S】则面向高中生。比赛分为初赛、...
2023 CSP-J2 CSP-S2 复赛 第2轮 真题讲解.pdf
10-24
"2023 CSP-J/S 信奥初赛讲评"和"CSP-S 2023 复赛超详细讲解"等资源为考生提供了全面的题目解析,帮助他们理解和掌握解题技巧。同时,"CSP-S 2023 赛前心得"分享了上一年复赛的经验,为考生提供了宝贵的学习参考。 ...
2023年CSP-J第一轮初赛真题解析
lan_in的博客
 1443
需要在数组不连续时, 找出被移除的元素。给定两个字符串,每次操作可以选择删除(Delete)、插入(insert)替换(Replace)个字符,求将第一个字符串转换为第二个字符串所需要的最少操作次数。12.考虑一个有向无环图,该图包含4条有向边:(1,2), (1,3), (2,4)和(3,4)。17. (2分) 将第7行中的“(s - b)*(s - c)”改为“(s - c)*(s - b)” 不会影响程序运行的结果。30.(4分)如果输入的n为质数p的平方,那么solve2(n)的返回值为( )。
2023CSP-J 组真题 1. apple(苹果)
weixin_40252159的博客
 471
由于编号为n的永远是在最后一个,所以当第一次剩余数量 m为3倍余1时,最后一个会被取走,记录此时的天数即可。所以第一个问题:几天取完可以根据每天剩余 m-(m+2)/3,while循环直至m变为0。由于从编号 1开始,每隔 2个取走1个,所以实际是每3个取走1个...假设每一轮开始前的总数为 m,因为每一组取走的都是第1个,所以根据。第二轮取走 (5+2)/3=2个,剩余3个,第三轮取走 (3+2)/3=1个,剩余2个,第四轮取走 (2+2)/3=1个,剩余1个;第一轮取走 10/3=3个,剩余5个;
2023年CSP-J初赛选择题+程序阅读+补充程序题全部详解+答案
最新发布
Alan_Becker的博客
 1452
2023年CSP-J讲解
历年CSP-J初赛真题解析 | 2023年CSP-J初赛阅读程序(16-32)
COCO_gsta的博客
 1713
17、将第7行中的“(s - b) * (s - c)”改“(s - c) * (s - b)”不会影响程序运行的结果。学习C++从娃娃抓起!将"3 4 5"带入计算,其实就是求直角三角形的面积,得到6.0000,选A。当a、b、c无法构成面积时,计算结果为0.0000,也仍然保留四位小数。16、当输入为“2 2 2”时,输出为“1.7321"。同19题,也是求直角三角形的面积,得30.0000,选B。20、当输入为“5 12 13”时,输出为( )。19、当输入为“3 4 5”时,输出为( )
2023CSP-J入门级初赛C++语言试题来源:6547网 www.6547.cn
小码农的博客
 276
(1)(寻找被移除的元素)问题:原有长度为 n+1公差为1等升数列,将数列输到程序的数组时移除了一个元素,导致长度为 n 的开序数组可能不再连续,除非被移除的是第一个或最后之个元素。(2) (编辑距离)给定两个字符串,每次操作可以选择删除(Delete)、插入(Insert)、替换(Replace),一个字符,求将第一个字符串转换为第二个字符串所需要的最少操作次数。33. ①处应填( )34. ②处应填( )35. ③处应填( )38. ①处应填( )39. ②处应填( )
中小学信息学奥赛CSP-J认证 CCF非专业级别软件能力认证-入门组初赛模拟题第一套(选择题)
青少年编程学习指导
 1403
​CSP-J入门组初赛模拟题一(选择题) 1、以下与电子邮件无关的网络协议是 A、SMTP B、POP3 C、MIME D、FTP 答案:D 考点分析:主要考查小朋友们网络相关知识的储备,FTP是文件传输协议和电子邮件无关,所以答案D 2、二进制数1111 0110和0000 1111 进行逻辑异或运算的结果是 A、1111 1001 B、0000 0110 C、1111 1111 D、0000 1001 答案:A 考点分析:主要考查小朋友们二进制相关知识的储备,逻辑异或运算的规
【CSP-J】2023年CSP-J真题加答案解析
じゃそn的博客
 1382
csp-j
csp-j2023第二轮测试点下载
01-21
csp-j2023第二轮测试点下载可以通过以下步骤进行: 首先,您需要登录到csp-j2023的官方网站或者相关平台,然后找到第二轮测试点下载的相关页面或链
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/lq1990717/article/details/132926398

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值