2023年CSP-J真题详解+分析数据

news2024/12/24 5:45:19

目录

亲身体验

江苏卷

选择题

阅读程序题

阅读程序(1)

判断题

单选题

阅读程序(2)

判断题

单选题

阅读程序(3)

判断题

单选题

完善程序题

完善程序(1)

完善程序(2) 

2023CSP-J江苏卷详解

小结

 

亲身体验

2023年的CSP-J是在9月16日9:30--11:30进行的。而我是南京的,统一考点在北京东路30号。

提前半个小时学校门口就被围的水泄不通了,放眼望去,人头攒动,96%都是初中生,这不禁让我

一个小学生有亿点点紧张。

考试进入考场需要检查是否带了违禁物品,座位号是蛇字形贴的,十分公平。

开始考试前会有广播提醒注意事项,考试是答题纸形式,题目数量还是和2022年一样。

好的废话不多说,直接开始讲题,解析在最后。

江苏卷

选择题

一、  单项选择题(共15题,每题2分,共计30分:每题有且仅有一个正确选项)

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

A.unsigned   

B.const

C.static

D.mutable

2.八进制数12345670和07654321的和为?()

A.(22222221)8

B.(21111111)8

C.(22111111)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;

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;

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

A.  6

B.  7

C.  8

D.  9

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

A.  31

B.  18

C.  21

D.  33

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

A.  高精度计算主要是用来处理大整数或需要保留多位小数的运算。

B.  大整数除以小整数的处理的步骤可以是,将被除数和除数对齐,从左到右逐位尝试将除数乘以某个数,通过减法得到新的被除数,并累加商。

C.  高精度乘法的运算时间只与参与运算的两个整数中长度较长者的位数有关。

D.  高精度加法运算的关键在于逐位相加并处理进位。 

8.  后缀表达式“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

9.  数(101010)2和(166)8的和为( )。

A.  (10110000)2

B.  (236) 8

C.  (158)10

D.  (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

11.  给定一棵二叉树,其前序遍历结果为:ABDECFG,中序遍历结果为:DEBACFG。请问这棵树的正确后序遍历结果是什么?( )

A.  EDBFGCA

B.  EDBGCFA

C.  DEBGFCA

D.  DBEGFCA

12.  考虑一个有向无环图,该图包括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

13.  在计算机中,以下哪个选项描述的数据存储容量最小?( )

A.  字节(byte)

B.  比特(bit)

C.  字(word)

D.  千字节(kilobyte)

14.  一个班级有10个男生和12个女生。如果要选出一个3人的小组,并且小组中必须至少包含1个女生,那么有多少种可能的组合?( )

A.  1420

B.  1770

C.  1540

D.  2200

15.  以下哪个不是操作系统?( )

A.  Linux

B.  Windows

C.  Android

D.  HTML

阅读程序题

二、  阅读程序(程序输入不超过数组成字符串定义的范围:判断题正确填√,错误填×;除特殊说明外,判断题1.5分,选择题3分,共计40分)

阅读程序(1)

01 #include<iostream>
02 #include<cmath>
03 using namespace std;
04 
05 double f(double a,double b,double c){
06     double s=(a+b+c)/2;
07     return sqrt(s*(s-a)*(s-b)*(s-c));
08 }
09
10 int main(){
11    cout.flags(ios::fixed);
12    cout.precision(4);
13    
14     int a,b,c;
15    cin>>a>>b>>c;
16    cout<<f(a,b,c)<<endl;
17    return 0;
18 }

假设输入的所有数都为不超过1000的正整数,完成下面的判断题和单选题:

判断题

16.  (2分)当输入为“2 2 2”时,输出为“1.7321”( )

17.  (2分)将第7行中的"(s-b)*(s-c)"改为"(s-c)*(s-b)"不会影响程序运行的结果( )

18.  (2分)程序总是输出四位小数( )

单选题

19.  当输入为“3 4 5”时,输出为( )

A.  "6.0000" B. "12.0000" C. "24.0000" D. "30.0000"

20.  当输入为“5 12 13”时,输出为( )

A.  "24.0000" B. "30.0000" C. "60.0000" D. "120.0000"

阅读程序(2)

01 #include<iostream>
02 #include<vector>
03 #include<algorithm>
04 using namespace std;
05 
06 int f(string x,string y){
07     int m=x.size();
08     int n=y.size();
09     vector<vector<int>>v(m+1,vector<int>(n+1,0));
10    for(int i=1;i<=m;i++){
11        for(int j=1;j<=n;j++){
12             if(x[i-1]==y[j-1]){
13                 v[i][j]=v[i-1][j-1]+1;
14             }else{
15                 v[i][j]=max(v[i-1][j],v[i][j-1]);
16             }
17         }
18     }
19     return v[m][n];
20 }
21
22 bool g(string x,string y){
23     if(x.size() != y.size()){
24         return false;
25     }
26     return f(x+x,y)==y.size();
27 }
28
29 int main(){
30     string x,y;
31     cin>>x>>y;
32     cout<<g(x,y)<<endl;
33     return 0;
34 }
判断题

21.  f函数的返回值小于等于min(n,m)。( )

22.  f函数的返回值等于两个输入字符串的最长公共子串的长度。( )

23.  当输入两个完全相同的字符串时,g函数的返回值总是true( )

单选题

24.  将第19行中的“v[m][n]”替换为“v[n][m]”,那么该程序( )

A. 行为不变       B. 只会改变输出   C..一定非正常退出 D. 可能非正常退出

25.  当输入为 "csp-j p-jcs" 时,输出为( )

A. “0”         8. “1”              C  “T”              D. “F”

26 当输入为“csppsc spsccp”时,输出为:( )

A. “T”          B. “F”        c. “0”         0. “1”

阅读程序(3)

01 #include <iostream>
02 #include <cmath>
03 using namespace std;
04 
05 int solve1(int n){
06     return n*n;
07 }
08
09 int solve2(int n){
10    int sum=0;
11    for(int i=1;i<=sqrt(n);i++){
12         if(n%i==0){
13             if(n/i==i){
14                 sum+=i*i;
15             }else{
16                 sum+=i*i+(n/i)*(n/i);
17             }
18         }
19     }
20     return sum;
21 }
22
23 int main(){
24     int n;
25     cin>>n;
26     cout<<solve2(solve1(n))<<" "<<solve1((solve2(n)))<<endl;
27     return 0;
28 }

假设输入的n是绝对值不超过1000的整数,完成下面的判断题和单选题。

判断题

27.  如果输入的n为正整数,solve2函数的作用是计算n所有的因子的平方和( )

28.  第13~14行的作用是避免n的平方根因子i(或n/i)进入第16行而被计算两次( )

29.  如果输入的n为质数,solve2(n)的返回值为n²+1( )

单选题

30.  (4分)如果输入的n为质数p的平方,那么solve2(n)的返回值为( )

A.  p²+p+1  B. n²+n+1  C. n²+1  D. p4+2p²+1

31.  当输入为正整数时,第一项减去第二项的差值一定( )

A.  大于0   B. 大于等于0且不一定大于0   C. 小于0   D. 小于等于0且不一定小于0

32.  当输入为“5”时,输出为( )

A.  "651.625"  B. "650.729"  C. "651.676"  D. "652.625"

完善程序题

三、完善程序(单选题,每小题3分,共计 3 分)

完善程序(1)

(寻找被移除的元素)问题:原有长度为 n+1公差为1等升数列,将数列输到程序的数组时移除了一个元素,导致长度为 n 的开序数组可能不再连续,除非被移除的是第一个或最后之个元素。需要在数组不连续时,找出被移除的元素。试补全程序。

01 #include <iostream
02 #include <vector>
03
04 using namespace std;
05
06 int find missing(vector<int>& nums){
07     int left = 0, right = nums.size() - 1;
08     while (left < right){
09         int mid = left + (right-left) / 2;
10             if (nums[mid] - mid+ ①) {
11                 ②;
12             }else{
13                 ③;
14             }
15     }
16     return ④;
17 }
18
19 int main() (
20    int n;
21    cin >> n;
22     vector<int> nums(n);
23     for (int i= 0; i< n; i++) cin >> nums[i];
24     int missing_number = find_missing(nums);
25     if_(missing_number == ⑤) {
26         cout << "Sequence is consecutive" << endl;
27     }else{
28        cout << "Missing number is " << ,missing numbeer << endl;
29     }
30     return 0;
31 }

33.  ①处应填( )

A.  1 B.nums[0] C.right D.left

34.  ②处应填( )

A.  left=mid+1 B.right=mid-1 C.right=mid D.left=mid

35.  ③处应填( )

A.left=mid+1 B.right=mid-1 C.right=mid D.left=mid

36.  ④处应填( )

A.left+nums[0] B.right+nums[0] C.mid+nums[0] D.right+1

37.  ⑤处应填( )

A.nums[0]+n B.nums[0]+n-1 C.nums[0]+n+1 D.nums[n-1]

完善程序(2) 

(编辑距离)给定两个字符串,每次操作可以选择删除(Delete)、插入(Insert)、替换(Replace),一个字符,求将第一个字符串转换为第二个字符串所需要的最少操作次数。

#include <iostream>
#include <string>
#include <vector>
using namespace std;

int min(int x,int y,int z){
    return min(min(x,y),z);
}

 int edit_dist_dp(string str1,string str2){
 int m=str1.length();
 int n=str2.length();
 vector<vector<int>> dp(m+1,vector<int>(n+1)); 
 for(int i=0;i<=m;i++){
     for(int j=0;j<=n;j++){
        if(i==0)
            dp[i][j]=(1);
        else if(j==0)
            dp[i][j]=(2);
        else if((3))
            dp[i][j]=(4);
        else
            dp[i][j]=1+min(dp[i][j-1],dp[i-1][j],(5)); 
    }
}
return dp[m][n];
}
int main(){

    string str1,str2;
    cin>>str1>>str2;
    cout<<"Mininum number of operation:"<<edit_dist_dp(str1,str2)<<endl;
    return 0; 

}

38.  ①处应填( )

A.j B.i C.m D.n

39.  ②处应填( )

A.j B.i C.m D.n

40.  ③处应填( )

A.  str1[i-1]==str2[j-1] B. str1[i]==str2[j] 

C.  str1[i-1]!=str2[j-1] D. str1[i]!=str2[j]

41.  ④处应填( )

A.  dp[i-1][j-1]+1 B. dp[i-1][j-1]

C. dp[i-1][j] D. dp[i][j-1]

42.  ⑤处应填( )

A.  dp[i][j] + 1 B. dp[i-1][j-1]+1

C. dp[i-1][j-1] D. dp[i][j]

到此本张试卷就结束了,题目全部来自NOI公众号及自己整理,下面开始讲解,讲解为原创!

2023CSP-J江苏卷详解

1.答案 A

解析:const在C++中是常量的意思,其作用是声明一个变量,值从头至尾不能被修改

2.答案 D

解析:八进制加法即逢八进一,列成竖式如下:

3.答案 A

解析:类似于结构体赋值     

4.答案 A

解析:链表的知识

5.答案 C

解析:3^6=729,3^7=2187,7+1=8

6.答案 B

解析:选一个空闲段来练习唱歌有7种方式,选两个有4+3+2+1=10种,选三个有1种

7.答案 C

解析:高精度的运算时间与较长和较短的数都有关系

8.答案 A

解析:请看B站详细解释:数据结构---前缀 中缀 后缀 表达式之间的转换_哔哩哔哩_bilibili

9.答案 D

解析:先分别把二进制数和八进制数转换为十进制数,接着依次比较选项

10.答案 A

解析:哈夫曼编码,通常情况下出现频率最多的字符,往往用最短的编码。不会哈夫曼的看这个:哈夫曼编码(Huffman Coding)原理详解-CSDN博客 

11.答案 A

解析:这题其实考试的时候是印刷错误的,后来监考老师改正过来的。考察的是我们二叉树的知识。根据前序遍历我们知道根是A,在把中序遍历以A为分界线,我们变得出了左子树DEB和右子树CFG,最后画出二叉树,用左-右-根的方法遍历即可。

12.答案 B

解析:对于拓扑排序,有向边u->v,u一定排在v的前面。符合条件的只有1,2,3,4

13.答案 B

1千字节=1024字节=1024x8比特

14.答案 A

解析:分类讨论:1女2男:12x(9+8+7+……+1)=12x45=540

                             2女1男:(11+10+9+……+1)*10=66x10=660

                             3女:C(12,3)=220

                             总共:540+660+220=1420

15.答案 D

解析:HTML是超文本标记语言

小结

以上是选择题的讲解,其他的讲解请看我的博客(目前还没出来),数据分析也会在以后博客提现,欢迎订阅专栏,这样就能看到我的数据分析了!

祝大家能在CSP取得好成绩,一起加油鸭!

  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1061740.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

x64内核实验3-页机制的研究(1)

x64内核实验3-页机制的研究&#xff08;1&#xff09; CR4寄存器 在白皮书的第三卷2.5章对控制寄存器有详细的介绍&#xff0c;下面是白皮书中CR寄存器的结构图&#xff08;这里要说明一下cr4的第12位是由被使用的这个位在2.5章的后半部分有介绍是控制是否开启5级分页的位否则…

[Spring] Spring5——JdbcTemplate 简介

目录 一、JdbcTemplate 概述 1、什么是 JdbcTemplate 2、准备运行环境 二、添加功能 1、示例 三、修改和删除功能 1、示例 四、查询功能 1、查询记录数 2、查询返回 bean 对象 3、查询返回集合 4、测试 五、批量增删改功能 1、批量添加 2、批量修改 3、批量删除…

Context应用上下文理解

文章目录 一、Context相关类的继承关系Context类ContextIml.java类ContextWrapper类ContextThemeWrapper类 二、 什么时候创建Context实例创建Context实例的时机 小结 Context类 &#xff0c;说它熟悉&#xff0c;是应为我们在开发中时刻的在与它打交道&#xff0c;例如&#x…

全方位介绍工厂的MES质量检验管理系统

一、MES质量检验管理系统的定义&#xff1a; MES质量检验管理系统是基于制造执行系统的框架和功能&#xff0c;专注于产品质量的控制和管理。它通过整合和优化质量检验流程&#xff0c;提供实时的数据采集、分析和反馈&#xff0c;帮助工厂实现高效的质量管理。该系统涵盖了从…

解决高分屏DPI缩放PC端百度网盘界面模糊的问题

第一步 更新最新版本 首先&#xff0c;在百度网盘官网下载最新安装包&#xff1a; https://pan.baidu.com/download 进行覆盖安装 第二步 修改兼容性设置 右键百度网盘图标&#xff0c;点击属性&#xff0c;在兼容性选项卡中点击更改所有用户的设置 弹出的选项卡中选择更改高…

linux内核分析:虚拟化

三种虚拟化方式 1. 对于虚拟机内核来讲&#xff0c;只要将标志位设为虚拟机状态&#xff0c;我们就可以直接在 CPU 上执行大部分的指令&#xff0c;不需要虚拟化软件在中间转述&#xff0c;除非遇到特别敏感的指令&#xff0c;才需要将标志位设为物理机内核态运行&#xff0c…

【gitlab】本地项目上传gitlab

需求描述 解决方法 下面的截图是gitlab空项目的描述 上传一个本地项目按其中“Push an existing folder”命令即可。 以renren-fast项目为例 # 用git bash 下载renren-fast项目 git clone https://gitee.com/renrenio/renren-fast.git# 在renren-fast的所属目录 打开git ba…

详谈Spring

作者&#xff1a;爱塔居 专栏&#xff1a;JavaEE 目录 一、Spring是什么&#xff1f; 1.1 Spring框架的一些核心特点&#xff1a; 二、IoC&#xff08;控制反转&#xff09;是什么&#xff1f; 2.1 实现手段 2.2 依赖注入&#xff08;DI&#xff09;的实现原理 2.3 优点 三、AO…

时序分解 | Matlab实现CEEMDAN完全自适应噪声集合经验模态分解时间序列信号分解

时序分解 | Matlab实现CEEMDAN完全自适应噪声集合经验模态分解时间序列信号分解 目录 时序分解 | Matlab实现CEEMDAN完全自适应噪声集合经验模态分解时间序列信号分解效果一览基本介绍程序设计参考资料 效果一览 基本介绍 Matlab实现CEEMDAN完全自适应噪声集合经验模态分解时间…

连续爆轰发动机

0.什么是爆轰 其反应区前沿为一激波。反应区连同前驱激波称为爆轰波。爆轰波扫过后&#xff0c;反应区介质成为高温高压的爆轰产物。能够发生爆轰的系统可以是气相、液相、固相或气-液、气-固和液-固等混合相组成的系统。通常把液、固相的爆轰系统称为炸药。 19世纪80年代初&a…

子监督学习的知识点总结

监督学习 机器学习中最常见的方法是监督学习。在监督学习中&#xff0c;我们得到一组标记数据&#xff08;X&#xff0c;Y&#xff09;&#xff0c;即&#xff08;特征&#xff0c;标签&#xff09;&#xff0c;我们的任务是学习它们之间的关系。但是这种方法并不总是易于处理&…

基于微信小程序的付费自习室

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 文章目录 1 简介2 技术栈3 需求分析3.1用户需求分析3.1.1 学生用户3.1.3 管理员用户 4 数据库设计4.4.1 E…

定时器+按键控制LED流水灯模式+定时器时钟——“51单片机”

各位CSDN的uu们好呀&#xff0c;今天&#xff0c;小雅兰的内容是51单片机中的定时器以及按键控制LED流水灯模式&定时器时钟&#xff0c;下面&#xff0c;让我们进入51单片机的世界吧&#xff01;&#xff01;&#xff01; 定时器 按键控制LED流水灯模式 定时器时钟 源代…

Mac电脑BIM建模软件 Archicad 26 for Mac最新

ARCHICAD 软件特色 智能化 在2D CAD中&#xff0c;所有的建筑构件都由线条构成和表现&#xff0c;仅仅是一些线条的组合而已&#xff0c;当我们阅读图纸的时候是按照制图规范来读取这些信息。我们用一组线条表示平面中的窗&#xff0c;再用另一组不同的线条在立面中表示同一个…

C++11——神奇的右值引用与移动构造

文章目录 前言左值引用和右值引用右值引用的使用场景和意义右值引用引用左值万能引用右值引用的属性完美转发新的默认构造函数强制和禁止生成默认函数 总结 前言 本篇博客将主要讲述c11中新添的新特性——右值引用和移动构造等&#xff0c;从浅到深的了解这个新特性的用法&…

创意填充文本悬停效果

效果展示 CSS 知识点 text-shadow 属性实现 3D 文字clip-path 属性的运用 实现页面基础结构布局 <div class"container"><!-- 使用多个h2标签来实现不同颜色的3D文字 --><h2>Text</h2><h2>Text</h2><h2>Text</h2>…

好奇喵 | Tor浏览器——如何拥有一颗洋葱并使用

前言 在之前的博客中&#xff1a; 1.Surface Web —&#xff1e; Deep Web —&#xff1e; Dark Web&#xff0c;我们解释了表层网络、深层网络等的相关概念&#xff1b; 2.Tor浏览器——层层剥开洋葱&#xff0c;我们阐述了Tor的历史和基本工作原理&#xff1b; 本篇博客介…

笔记--总线舵机YB-SD15M--stm32

文章目录 前言一、官方文档的理解1.发送格式2.命令地址 二、控制文件1.c2.h 文件 前言 使用stm32控制这个总线舵机。 舵机为总线舵机。一定要配合控制板一起用&#xff0c;不然只使用stm32无法控制。 一、官方文档的理解 1.发送格式 发送格式如下&#xff0c;其中的指令类型…

2023版 STM32实战6 输出比较(PWM)包含F407/F103方式

输出比较简介和特性 -1-只有通用/高级定时器才能输出PWM -2-占空比就是高电平所占的比例 -3-输出比较就是输出不同占空比的信号 工作方式说明 -1-1- PWM工作模式 -1-2- 有效/无效电平 有效电平可以设置为高或低电平&#xff0c;是自己配置的 周期选择与计算 周期重…

成都建筑模板批发市场在哪?

成都作为中国西南地区的重要城市&#xff0c;建筑业蓬勃发展&#xff0c;建筑模板作为建筑施工的重要材料之一&#xff0c;在成都也有着广泛的需求。如果您正在寻找成都的建筑模板批发市场&#xff0c;广西贵港市能强优品木业有限公司是一家值得关注的供应商。广西贵港市能强优…