CSP-J 2020 入门级 第一轮(初赛) 答案及解析

  1. 在内存储器中每个存储单元都被赋予一个唯一的序号,称为()。
    A. 地址
    B. 序号
    C. 下标
    D. 编号

答: A
计算机中每个存储单元都是1字节,都有唯一的地址。

  1. 编译器的主要功能是( )。
    A. 将源程序翻译成机器指令代码
    B. 将源程序重新组合
    C. 将低级语言翻译成高级语言
    D. 将一种高级语言翻译成另一种高级语言

答: A
源程序是高级语言程序,如C++程序代码、Java程序代码。
编译器将源程序翻译成的是机器语言,也就是机器指令代码。因此选A。
将源程序重新组合的是连接器。
将低级语言翻译成高级语言的是反编译器。
将一种高级语言翻译成另一种高级语言的是转译器。

  1. 设x=true,y=true,z=false,以下逻辑运算表达式值为真的是( )。
    A. (y∨z)∧x∧z
    B. x∧(z∨y)∧z
    C. (x∧y)∧z
    D. (x∧y)∨(z∨x)

答: D
A选项中最后有∧z,z为false,无论前面表达式的值为什么,任何值∧false的结果都为false,因此A的值为false。
B选项最后也有∧z,z为false,因此B的值为false。
C选项最后也有∧z,z为false,因此C的值为false。
D选项,x∧y值为true, z∨x值为true,true∨true结果为true,选D。

  1. 现有一张分辨率为2048×1024像素的32位真彩色图像。请问要存储这张图像,需要多大的存储空间?( )。
    A. 16MB
    B. 4MB
    C. 8MB
    D. 2MB

答: C
已知存储空间单位之间的关系
1 B = 8 b 1B = 8b 1B=8b
1 K B = 1024 B = 2 10 B 1KB = 1024B = 2^{10}B 1KB=1024B=210B
1 M B = 1024 K B = 2 10 K B 1MB = 1024KB = 2^{10}KB 1MB=1024KB=210KB
每个像素为32位,由于1字节=8位,32位即为4字节。
该图像占用空间 2048 ∗ 1024 ∗ 4 B = 2 11 ∗ 2 10 ∗ 2 2 = 2 23 B = 2 13 K B = 2 3 M B = 8 M B 2048*1024*4B = 2^{11}*2^{10}*2^2 = 2^{23}B = 2^{13}KB = 2^3MB = 8MB 204810244B=21121022=223B=213KB=23MB=8MB

  1. 冒泡排序算法的伪代码如下:
    输入:数组L, n ≥ k。输出:按非递减顺序排序的 L。
    算法 BubbleSort:
   1. FLAG ← n //标记被交换的最后元素位置2. while FLAG > 1 do3.     k ← FLAG -14.     FLAG ← 15.     for j=1 to k do6.         if L(j) > L(j+1) then do7.              L(j)  ↔ L(j+1)8.              FLAG ← j

对n个数用以上冒泡排序算法进行排序,最少需要比较多少次?( )。
A. n 2 n^2 n2
B. n − 2 n-2 n2
C. n − 1 n−1 n1
D. n n n

答: C
该算法对冒泡排序做了优化,flag是上一次冒泡过程中,最后一次交换的数对的第一个数的位置。
因此在下一次进行冒泡排序前,可以保证从位置flag到位置n的元素都已经排好序了。
如果flag为1,则整个序列已经有序,排序结束。
否则进入while循环,由于从第flag个数到第n个数已经有序了,设k为flag-1,只需要对第1到第k个数进行排序。所以接下来j从1到k循环。
这是一趟冒泡过程,只要第j个数大于第j+1个数,二者交换。flag初值设为1,在冒泡过程中只要第j和第j+1个数,发生交换,将flag设为发生交换的数对中第一个数的位置。
该优化可以使得当数列接近有序时,减少冒泡过程中交换元素的次数。
当初始序列就是非递减序列时,k被设为flag-1,也就是n-1。进入while循环,flag被设为1,接下来的for循环中,总共执行k次循环,也就是执行了 n − 1 n-1 n1次比较。没有任何一个位置j满足L(j) > L(j+1),flag的值还是1。下一次循环时,不满足flag>1,跳出。
因此比较次数最少时,比较了 n − 1 次 n-1次 n1

  1. 设A是n个实数的数组,考虑下面的递归算法:
XYZ (A[1..n])if n=1 then return A[1]else temp ← XYZ (A[1..n-1])if temp < A[n]then return tempelse return A[n]

请问算法 XYZ 的输出是什么?()。
A. A 数组的平均
B. A 数组的最小值
C. A 数组的中值
D. A 数组的最大值

答: B
XYZ函数传入一个数组A,下标1到n。
当n不为1时,使用XYZ处理A数组下标1到n-1,返回值为temp。接下来返回temp和A[n]的较小值。
不断进行递归调用,缩小问题规模,直到n为1时,返回A[1]。
XYZ(A[1…2])这一次调用中,返回值temp为A[1],A[n]为A[2],返回的是A[1]和A[2]的较小值。
XYZ(A[1…3])这一次调用中,返回值temp为A[1…2]的最小值,A[n]为A[3],求二者的最小值,返回的是A[1…3]的最小值小值。
依此类推,可知XYZ(A[1…n-1])返回值temp是A[1…n-1]的最小值,再和A[n]比较,返回的是A[1…n]的最小值,即A数组的最小值,选B。

  1. 链表不具有的特点是()。
    A. 可随机访问任一元素
    B. 不必事先估计存储空间
    C. 插入删除不需要移动元素
    D. 所需空间与线性表长度成正比

答: A
线性表是逻辑结构,链表是线性表的一种物理结构,是一种具体实现。另一种物理结构是顺序表。
A. 随机访问指的是可以以 O ( 1 ) O(1) O(1)复杂度取到线性表中的第i个元素,如果该线性表是顺序表,是可以进行随机访问的。如果是链表,则必须从链表第1个顶点开始,通过第1个顶点找到第2个顶点,通过第2个顶点找到第3个顶点…重复执行直到找到第i个顶点,该过程的复杂度为 O ( n ) O(n) O(n),这样的访问过程不是随机访问。因此A是错的,选A。
B. 如果实现的是动态链表,进行添加或插入结点时,从堆区动态申请内存空间。在进行删除时,将申请的内存空间返还。这样就不需要预估存储空间。
C. 链表进行插入、删除操作只需要改变结点之间的连接关系即可完成,复杂度为 O ( 1 ) O(1) O(1),不需要移动元素。而顺序表进行插入、删除操作需要移动元素。
D. 线性表的长度就是线性表中元素的数量。对于线性表中的每个元素,链表都要为其建立一个结点,每个结点占用内存空间大小相同。如果线性表中有n个元素,实际需要从内存申请n个结点的空间,所需空间与线性表长度是成正比的。

  1. 有10个顶点的无向图至少应该有( )条边才能确保是一个连通图。
    A. 9
    B. 10
    C. 11
    D. 12

答: A
连通图边最少时是一个树(无环连通无向图),树有n个顶点时有n-1条边。10个顶点的树有9条边,选A。

  1. 二进制数1011转换成十进制数是( )。
    A. 11
    B. 10
    C. 13
    D. 12

答: A
其它进制数字转十进制的方法为按位权展开: 1 ∗ 2 3 + 0 ∗ 2 2 + 1 ∗ 2 1 + 1 ∗ 2 0 = 11 1*2^3+0*2^2+1*2^1+1*2^0=11 123+022+121+120=11

  1. 5个小朋友并排站成一列,其中有两个小朋友是双胞胎,如果要求这两个双胞胎必须相邻,则有()种不同排列方法?
    A. 48
    B. 36
    C. 24
    D. 72

答: A
捆绑法,将两个双胞胎小朋友“捆绑”在一起,形成一个元素,剩下每个小朋友是一个元素,共4个元素,先进行全排列,方案数为 P ( 4 , 4 ) P(4,4) P(4,4),这两个小朋友内部的排列有 P ( 2 , 2 ) P(2,2) P(2,2)种,根据乘法原理,最终有 P ( 4 , 4 ) ∗ P ( 2 , 2 ) = 4 ∗ 3 ∗ 2 ∗ 1 ∗ 2 ∗ 1 = 48 P(4,4)*P(2,2)=4*3*2*1*2*1=48 P(4,4)P(2,2)=432121=48种排列方法,选A。

  1. 下图中所使用的数据结构是( )。
    在这里插入图片描述
    A. 栈
    B. 队列
    C. 二叉树
    D. 哈希表

答: A
只在线性表的一端进行操作(包括插入、删除,取数据)的数据结构是栈。

  1. 独根树的高度为1。具有61个结点的完全二叉树的高度为( )。
    A. 7
    B. 8
    C. 5
    D. 6

答: D
有n个结点的完全二叉树的高度为 ⌊ log ⁡ 2 n ⌋ + 1 \lfloor \log_2n \rfloor+1 log2n+1(原理见完全二叉树的相关性质证明)
由于 32 < 61 < 64 32<61<64 32<61<64
所以 2 5 < 61 < 2 6 2^5<61<2^6 25<61<26
不等式取以2为底的对数
log ⁡ 2 2 5 < log ⁡ 2 61 < log ⁡ 2 2 6 \log_2{2^5}<\log_2{61}<\log_2{2^6} log225<log261<log226
5 < log ⁡ 2 61 < 6 5<\log_2{61}<6 5<log261<6
⌊ log ⁡ 2 61 ⌋ + 1 = 5 + 1 = 6 \lfloor \log_2{61} \rfloor+1 = 5+1=6 log261+1=5+1=6,选D。

  1. 干支纪年法是中国传统的纪年方法,由10个天干和12个地支组合成60个天干地支。由公历年份可以根据以下公式和表格换算出对应的天干地支。
    在这里插入图片描述

天干 =(公历年份)除以10所得余数
地支 =(公历年份)除以12所得余数
例如,今年是2020年,2020 除以10余数为0,查表为"庚”;
2020 除以12,余数为4,查表为“子” 所以今年是庚子年。
请问1949年的天干地支是( )
A. 己酉
B. 己亥
C. 己丑
D. 己卯

答: C
1949 m o d 10 = 9 1949\mod 10 = 9 1949mod10=9,查表为“己”
1949 m o d 12 = 5 1949\mod 12 = 5 1949mod12=5,查表为“丑”
所以1949年的天干地支是“己丑”,选C。

  1. 10个三好学生名额分配到7个班级,每个班级至少有一个名额,一共有( )种不同的分配方案。
    A. 84
    B. 72
    C. 56
    D. 504

答: A
10个三好学生名额是完全相同的,将其分配到7个班级。这是将相同小球放入不同盒子的模型,可以使用插板法完成。
一共10个相同的小球放入7个不同的盒子,相当于把10个相同的小球放成一行,在10个小球之间的9个空隙中插入6个相同的板子,方案数为 C ( 9 , 6 ) = C ( 9 , 3 ) = ( 9 ∗ 8 ∗ 7 ) / ( 3 ∗ 2 ∗ 1 ) = 84 C(9,6) = C(9,3) = (9*8*7)/(3*2*1)=84 C(9,6)=C(9,3)=(987)/(321)=84,选A。

  1. 有五副不同颜色的手套(共10只手套,每副手套左右手各1只),一次性从中取6只手套,请问恰好能配成两副手套的不同取法有( )种。
    A. 120
    B. 180
    C. 150
    D. 30

答: A
方法1:6只手套中有两副也就是4只手套完成了配对,还剩下2只手套无法完成配对。首先从5副手套中选择2副完成配对的手套,有 C ( 5 , 2 ) C(5,2) C(5,2)种情况,接下来要在3副手套中找两只无法配对的手套:可以是两只手套都是左手,或右手,有 2 C ( 3 , 2 ) 2C(3,2) 2C(3,2)种情况,或者两只手套一只是左手,一只是右手。左手手套有3种选择,左手手套确定后右手选与左手手套不是一副的手套有2种选择,因此有 3 ∗ 2 3*2 32种,因此总取法有 C ( 5 , 2 ) ∗ ( 2 C ( 3 , 2 ) + 3 ∗ 2 ) = ( 5 ∗ 4 ) / 2 ∗ ( 2 ∗ 3 + 3 ∗ 2 ) = 10 ∗ 12 = 120 C(5,2)*(2C(3,2)+3*2)=(5*4)/2*(2*3+3*2)=10*12=120 C(5,2)(2C(3,2)+32)=(54)/2(23+32)=1012=120,选A。
方法2:使用补集转化思路,首先在5副手套中选择2副完成配对的手套,有 C ( 5 , 2 ) C(5,2) C(5,2)种情况,而后要在3副手套中选出2只手套无法完成配对,我们先考虑在3副手套共6只手套中选出2只手套的所有情况,共有 C ( 6 , 2 ) C(6,2) C(6,2)种情况,从中减去两只手套能配对的3种情况,剩下的就是不能配对的情况。总取法数为 C ( 5 , 2 ) ∗ ( C ( 6 , 2 ) − 3 ) = ( 5 ∗ 4 ) / 2 ∗ ( 6 ∗ 5 / 2 − 3 ) = 10 ∗ 12 = 120 C(5,2)*(C(6,2)-3)=(5*4)/2*(6*5/2-3)=10*12=120 C(5,2)(C(6,2)3)=(54)/2(65/23)=1012=120

二、阅读程序

阅读程序(1)
阅读程序(2)
阅读程序(3)

三、完善程序

完善程序(1)
完善程序(2)

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flutter包管理与插件开发完全指南

Flutter作为Google推出的跨平台移动应用开发框架&#xff0c;其强大的生态系统离不开完善的包管理机制和丰富的插件支持。本文将全面介绍Flutter中的包管理体系和插件开发实践&#xff0c;帮助开发者高效管理项目依赖并扩展应用功能。 一、Flutter包管理基础 1.1 包管理概述 …

【视频直播出海】阿里云ApsaraVideo Live:从零搭建全球直播平台的“星际航行”指南!

【视频直播出海】阿里云ApsaraVideo Live&#xff1a;从零搭建全球直播平台的“星际航行”指南&#xff01; 在全球化浪潮的推动下&#xff0c;视频直播行业正以前所未有的速度跨越国界&#xff0c;成为连接世界的“数字新桥梁”。对于渴望拓展海外市场的企业而言&#xff0c;…

OAuth2中的Token

两个不同的Token OAuth2 中主要有两个不同的Token, 其中的区别为是否与用户相关联, 即与用户相关的用户Token, 和与客户端相关的客户端Token, 可以通过用户Token, 查询到用户的相关信息, 客户端Token与用户无关, 一般只用于客户端认证 用户Token 获取用户Token一般有两个方式…

使用 FastMCP 实现 Word 文档与 JSON 数据互转的 Python 服务

一、项目背景 本文分享一个基于 FastMCP 框架实现的文档处理服务&#xff0c;可实现 Word 文档&#xff08;.docx&#xff09;与 JSON 数据格式的双向转换。通过此服务&#xff0c;开发者可以轻松实现文档内容提取、结构化数据填充、样式模板复用等功能&#xff0c;适用于自动…

Vue3轮播图组件,当前轮播区域有当前图和左右两边图,两边图各显示一半,支持点击跳转和手动滑动切换

功能&#xff1a; 自动循环播放&#xff08;到达末尾后回到第一张&#xff09;、可设置切换间隔时间&#xff08;interval属性&#xff09; 左右导航按钮&#xff08;可自定义显示/隐藏&#xff09; 点击底部指示器跳转到指定幻灯片、且位置可调&#xff08;轮播图内部/外部&…

350+交付案例,高质量低成本构建智慧园区数字孪生交付新范式

在智慧园区建设领域&#xff0c;数字孪生技术正成为推动园区智能化转型的核心引擎。山东融谷信息凭借其全要素、全周期、全方位的数字孪生交付能力&#xff0c;已成功交付350余个项目&#xff0c;覆盖产业园区、智慧楼宇、智慧社区等多元场景&#xff0c;低成本高质量交付&…

OpenCV 图像像素类型转换与归一化

一、知识点 1、OpenCV支持多种数据类型&#xff0c;每种类型都对应着不同的取值范围。 (1)、CV_8U取值范围[0, 255]。 (2)、CV_16U取值范围[0, 65535]。 (3)、CV_32F取值范围[0, 1]。 2、OpenCV提供convertTo()函数来转换数据类型&#xff0c;提供normalize()函数来改…

机器学习算法_支持向量机

一、支持向量机 支持向量机只能做二分类任务 SVM全称支持向量机&#xff0c;即寻找到一个超平面使样本分成两类&#xff0c;且间隔最大 硬间隔&#xff1a;如果样本线性可分&#xff0c;在所有样本分类都正确的情况下&#xff0c;寻找最大间隔&#xff1b;如果出现异常值或样…

Linux : echo ~ tail 重定向符

&#x1f680; Linux 常用命令详解&#xff1a;echo、tail 与重定向符号全解析&#xff08;含通俗案例&#xff09; &#x1f4c5; 更新时间&#xff1a;2025年6月17日 &#x1f3f7;️ 标签&#xff1a;Linux基础 | Shell命令 | echo | tail | 输出重定向 | Linux入门 文章目录…

uniapp的更新流程【安卓、IOS、热更新】

UniApp应用更新方案 两种更新方式 APP全量升级&#xff1a;需要重新下载安装包热更新&#xff1a;通过下载wgt资源包实现&#xff0c;用户只需重启应用 Android更新实现 用户需要授权安装权限&#xff0c;流程为下载APK后自动弹出安装界面 var dtask plus.downloader.cre…

火山引擎解码生态型增长铁律

“技术流量与力量的崛起&#xff0c;本质上是一场生态规模的竞赛。每次浪潮的排头兵&#xff0c;都是指尖沾着代码的开发者——互联网时代的Linux社区让开源席卷全球&#xff0c;移动互联网的App Store催生百万开发者&#xff0c;而今天&#xff0c;大模型正在用API重构产业。”…

警惕GO的重复初始化

go的初始化方式有很多种&#xff0c;在某些情况下容易引起重复初始化导致错误。 事例如下&#xff1a; 当使用gorm连接数据库时定义了全局DB var DB *gorm.DB 但是在后面某个函数内部初始化时导致DB重新初始化变成了局部变量&#xff0c;导致原来的全局变量DB还是nil func I…

python校园服务交流系统

目录 技术栈介绍具体实现截图系统设计研究方法&#xff1a;设计步骤设计流程核心代码部分展示研究方法详细视频演示试验方案论文大纲源码获取/详细视频演示 技术栈介绍 Django-SpringBoot-php-Node.js-flask 本课题的研究方法和研究步骤基本合理&#xff0c;难度适中&#xf…

AlexNet:图像分类领域的里程碑网络及其创新剖析

文章目录 前言AlexNet一、网络的背景二、网络结构三、网络的创新3.1 首次使用GPU训练网络3.2 使用Relu激活函数3.2.1 sigmoid激活函数和tanh激活函数3.2.1.1 sigmoid激活函数3.2.1.2 tanh激活函数 3.3 Relu激活函数3.4 使用LRN局部响应归一化(已弃用)3.4.1 LRN的定义与起源3.4.…

iOS性能调优实践:结合KeyMob等多个工具提升应用稳定性与流畅度

在iOS应用开发中&#xff0c;性能问题往往难以通过单一工具轻松解决。尤其是当App面临用户反馈的流畅度差、卡顿严重、内存泄漏等问题时&#xff0c;开发者需要依靠多种工具的组合&#xff0c;才能有效地排查和优化性能瓶颈。 在我们最近的一个项目中&#xff0c;开发团队在处…

球形波方程的推导与解法

题目 问题 6. 一个球形波是三维波动方程的解,形式为 u ( r , t ) u(r,t) u(r,t),其中 r r r 是到原点的距离(球坐标)。波动方程的形式为: u t t = c 2 ( u r r + 2 r u r ) (球形波方程) . u_{tt} = c^{2} \left( u_{rr} + \frac{2}{r} u_{r} \right) \quad \text{(球形…

自动打电话软件设计与实现

文章目录 方案概述实现代码1. 安装必要的库2. 主程序代码3. HTML模板 (templates/index.html) 功能说明部署说明扩展功能建议注意事项 方案概述 使用Twilio的API进行电话呼叫实现基本的呼叫逻辑添加简单的用户界面 实现代码 1. 安装必要的库 pip install twilio flask2. 主…

RedissonLock源代码分析与锁应用

文章目录 前言一、RedissonLock源代码分析1.1 尝试加锁2.2 解锁 二、锁业务应用1.服务层方法注解方式 注入锁1.1 定义DistributedLock 注解类1.2 定义DistributedLockAspect 切片类1.3 尝试获取锁代码片断1.4 释放锁代码片断1.5 服务层注入锁注解 2.代码行加锁2.1 pom.xml文件引…

深入理解mysql索引

一、什么是索引&#xff1f; 索引&#xff08;Index&#xff09; 是数据库管理系统中一种特殊的数据结构&#xff0c;存储在磁盘上。它包含对数据表中一列或多列的值进行排序&#xff0c;并存储了指向表中实际数据行物理位置或主键值的引用指针。可以把它类比为书籍的目录&…

VMware vSphere Foundation 9.0 技术手册 —— Ⅰ 安装 ESXi 9.0 (虚拟机)

目录 1. 安装 ESXi 9.0 (虚拟机)&#xff08;1&#xff09;ESXi Standard Boot Menu&#xff08;2&#xff09;ESXi 安装导向&#xff08;3&#xff09;最终用户许可协议&#xff08;4&#xff09;选择系统盘&#xff08;5&#xff09;选择键盘类型&#xff08;6&#xff09;设…