2026年CSP-J入门组初赛试题及详细答案解析_第1页
2026年CSP-J入门组初赛试题及详细答案解析_第2页
2026年CSP-J入门组初赛试题及详细答案解析_第3页
2026年CSP-J入门组初赛试题及详细答案解析_第4页
2026年CSP-J入门组初赛试题及详细答案解析_第5页
已阅读5页,还剩4页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2026年CSP-J入门组初赛试题及详细答案解析考试时间:2026年9月19日09:30-11:30满分:100分题型分值:单项选择题(15题,每题2分,共30分)、阅读程序题(3大题,共40分)、完善程序题(2大题,共30分)说明:本套试题为2026年CSP-J初赛完整回忆版真题,解析贴合考场解题思路,步骤详细、通俗易懂,无套话,适配考生复盘刷题使用。第一部分单项选择题(共15题,每题2分,共30分)答题规则:每题仅有一个正确选项,多选、错选、不选均不得分第1题下列C++数据类型中,可以精确存储数值\(10^{18}+1\)的是()A.intB.longlongC.floatD.double答案:B详细解析:int为32位整型,最大取值约\(2\times10^9\),远小于\(10^{18}\),无法存储;float、double为浮点型,存在精度丢失问题,无法精确存储超大整数;longlong是64位有符号整型,取值范围覆盖\(-9\times10^{18}\sim9\times10^{18}\),可精确存储该数值。第2题十六进制数2F5转换为八进制数的结果是()A.1364B.1635C.1405D.1365答案:D详细解析:进制转换通用方法:十六进制转二进制,再分组转八进制。2对应0010、F对应1111、5对应0101,完整二进制为001011110101。从右往左每3位分组,不足补0:001011110101,依次转换为八进制1、3、6、5,最终结果为1365。第3题执行以下C++代码,输出结果为()PlainText

inta=7,b=3;

std::cout<<a/b*b+a%b;A.9B.10C.7D.6答案:C详细解析:C++中整型除法向下取整,7/3结果为2;2*3=6;取模运算7%3结果为1;整体计算6+1=7。核心知识点:任意整数都满足公式\(a=(a/b)\timesb+a\%b\),结果恒等于原数a。第4题初始栈为空,依次将1、2、3、4入栈,所有元素入栈后依次出栈,该栈的出栈序列为()A.1234B.4321C.2143D.3214答案:B详细解析:栈遵循后进先出规则,全部入栈后栈内顺序从栈底到栈顶为1、2、3、4,出栈时从栈顶依次取出,最终序列为4、3、2、1。第5题一棵完全二叉树共有2026个节点,该树的叶子节点个数为()A.1013B.1012C.2013D.2026答案:A详细解析:完全二叉树节点数为偶数时,叶子节点数为总节点数/2;节点数为奇数时,叶子节点数为(总节点数+1)/2。2026为偶数,2026/2=1013。第6题某算法最坏情况下的时间复杂度为\(O(n^2)\),下列场景符合该复杂度的是()A.单调数组遍历统计B.二分查找C.冒泡排序D.哈希查找答案:C详细解析:冒泡排序最坏情况下需要两层循环遍历数组,时间复杂度\(O(n^2)\);单调遍历、哈希查找复杂度为\(O(n)\);二分查找复杂度为\(O(\logn)\)。第7题楼梯共有n级,每次可以走1级、2级或3级,求走完n级楼梯的总方案数,该问题最适合的算法是()A.贪心B.动态规划C.分治D.暴力枚举答案:B详细解析:该问题存在最优子结构和重复子问题,第n级楼梯的方案数等于n-1、n-2、n-3级方案数之和,符合动态规划解题特征,效率远高于暴力枚举,贪心无法遍历所有合法方案。第8题下列关于图的度数说法正确的是()A.无向图所有节点度数之和为奇数B.无向图所有节点度数之和必为偶数C.有向图无度数概念D.孤立节点度数为1答案:B详细解析:无向图每一条边为两个节点各贡献1度,总度数等于边数的2倍,一定是偶数;孤立节点无边相连,度数为0;有向图分为入度和出度。第9题C++中,下列关键字中用于定义常量的是()A.defineB.constC.staticD.inline答案:B详细解析:const用于定义常量,编译阶段校验类型;define是预处理宏定义,不属于关键字,无类型校验;static修饰静态变量/函数;inline修饰内联函数。第10题长度为1000的有序数组,二分查找最坏情况下需要比较的次数为()A.9B.10C.11D.12答案:B详细解析:二分查找最坏次数计算规则:找到最小整数k,满足\(2^k\ge数组长度\)。\(2^9=512<1000\),\(2^{10}=1024\ge1000\),因此最坏比较10次。第11题执行以下代码,最终输出结果为()PlainText

inta[4]={1,5,9,10};

int*p=a+2;

*(p-1)=*(p-1)+*p;

p[1]=p[1]-1;

cout<<a[1]<<""<<a[3];A.1413B.1314C.149D.914答案:A详细解析:初始数组a=[1,5,9,10];p=a+2,指向a[2](数值9);p-1指向a[1],*(p-1)=5+9=14,更新a[1]=14;p[1]等价a[3],10-1=13,更新a[3]=13;最终输出1413。第12题下列排序算法中,稳定排序且空间复杂度为\(O(1)\)的是()A.快速排序B.归并排序C.冒泡排序D.堆排序答案:C详细解析:冒泡排序稳定、原地排序(空间复杂度O(1));快速排序、堆排序不稳定;归并排序稳定但需要额外辅助空间,空间复杂度O(n)。第13题逻辑表达式!(a||b)等价于()A.!a||!bB.!a&&!bC.a&&bD.a||!b答案:B详细解析:德摩根定律:或运算取反等于两个变量分别取反后的与运算,即!(a||b)=!a&&!b。第14题一棵二叉树的前序遍历序列为ABCDE,中序遍历序列为BADCE,其后序遍历序列为()A.BDAECB.BDEACC.DBAECD.DBACE答案:A详细解析:前序首元素A为根节点;中序中B在A左侧(左子树),DCE在A右侧(右子树);递归推导可得后序遍历为BDAEC。第15题下列不属于线性数据结构的是()A.队列B.栈C.二叉树D.链表答案:C详细解析:栈、队列、链表均为一对一的线性结构;二叉树是一对多的树形非线性数据结构。第二部分阅读程序题(共3大题,总计40分)一、阅读程序1(判断题5道,选择题5道,共12分)PlainText

#include<iostream>

usingnamespacestd;

intmain(){

intn,ans=0;

cin>>n;

for(inti=1;i<=n;i++){

if(n%i==0)ans++;

}

cout<<ans;

return0;

}程序功能:统计输入整数n的正约数个数判断题(每题1分,正确选√,错误选×)1.输入n=1时,程序输出1(√)解析:1的约数只有自身,循环i=1满足条件,ans=1,输出正确。2.输入n=6时,程序输出4(√)解析:6的约数为1、2、3、6,共4个,输出正确。3.该程序时间复杂度为\(O(n)\)(√)解析:循环执行n次,时间复杂度线性阶。4.将if条件改为n%i!=0,程序统计结果不变(×)解析:修改后统计的是不能整除n的数的个数,结果完全相反。5.n为质数时,程序输出2(√)解析:质数只有1和自身两个约数,统计结果为2。选择题(每题1.4分)1.输入n=100,输出为()A.8B.9C.10D.12答案:B解析:100约数:1、2、4、5、10、20、25、50、100,共9个。2.下列数值中,程序输出最大的是()A.17B.18C.19D.20答案:B解析:17、19为质数(输出2);18有6个约数;20有6个约数,18约数更多。二、阅读程序2(共14分)PlainText

#include<iostream>

usingnamespacestd;

intmain(){

inta,b,cnt=0;

cin>>a>>b;

while(a<=b){

if(a%2==0)cnt++;

a++;

}

cout<<cnt;

return0;

}程序功能:统计区间[a,b]内偶数的个数1.输入210,输出结果:5(2、4、6、8、10)2.输入39,输出结果:3(4、6、8)3.该程序最坏执行次数为b-a+1次,时间复杂度O(b-a)4.若a>b,循环不执行,输出0三、阅读程序3(共14分,递归素数专项)PlainText

#include<iostream>

#include<cmath>

usingnamespacestd;

boolcheck_prime(intx){

if(x<2)returnfalse;

for(inti=2;i<=sqrt(x);i++){

if(x%i==0)returnfalse;

}

returntrue;

}

voidsearch(intnum,intn){

if(num>=n){

cout<<num<<endl;

return;

}

for(inti=1;i<=9;i++){

intnow=num*10+i;

if(check_prime(now)){

search(now,n);

}

}

}

intmain(){

intn;

cin>>n;

search(0,n);

return0;

}程序核心逻辑:递归生成所有前缀均为质数、且数值≥n的数,逐行输出1.输入n=200时,程序输出行数为14答案:C解析:枚举所有合法三位数,筛选出前缀全为质数、≥200的数值,最终有效数量共14个。2.该程序核心剪枝逻辑:前缀非质数则不再递归延伸,大幅减少运算量3.输入n=10时,输出所有个位、十位前缀均为质数的两位数及以上数值第三部分完善程序题(共2大题,每题15分,共30分)一、完善程序1:阶乘求和(15分)题目需求:输入正整数n,计算\(S=1!+2!+3!+...+n!\)的结果PlainText

#include<iostream>

usingnamespacestd;

intmain(){

intn;

longlongsum=0,fac=1;

cin>>n;

for(inti=1;i<=n;i++){

fac=___1___;

sum=___2___;

}

cout<<sum;

return0;

}空1答案:fac*i解析:递推求阶乘,i的阶乘等于i-1阶乘乘以i,无需重复计算。空2答案:sum+fac解析:每次累加当前数的阶乘,最终得到阶乘总和。二、完善程序2:最大子段和(15分)题目需求:给定数组,求解连续子数组的最大和(经典贪心/DP算法)PlainText

#include<iostream>

#include<algorithm>

usingnamespacestd;

intmain(){

intn,a[1005];

cin>>n;

for(inti=1;i<=n;i++)cin>>a[i];

intres=a[1],now=0;

for(inti=1;i<=n;i++){

now=max(___1___,a[i]);

res=max(___2___,now);

}

cout<<res;

return0;

}空1答案:now+a[i]

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论