2026年信奥赛C++普及组csp-j初赛模拟卷(一)【文末附答案和解析】

发布时间:2026/8/18 3:57:16
2026年信奥赛C++普及组csp-j初赛模拟卷(一)【文末附答案和解析】 2026年信奥赛C普及组csp-j初赛模拟卷一【文末附答案和解析】一、单项选择题共15题每题2分共30分每题有且仅有一个正确选项1.在标准ASCII码表中已知字母A的ASCII码为65十进制则字母G的ASCII码十六进制表示为 。A. 46B. 47C. 70D. 712.以下关于C语言的说法中正确的是 。A.int类型在任意平台下都占4个字节B.const修饰的变量必须在定义时初始化C.switch语句中必须包含default分支D.break语句只能用于循环结构中3.一棵完全二叉树共有2025个结点则其叶子结点个数为 。A. 1012B. 1013C. 1014D. 10114.某算法的时间复杂度为 T(n) 2T(n/2) O(n)则该算法的时间复杂度为 。A. O(log n)B. O(n)C. O(n log n)D. O(n²)5.若入栈序列为 1,2,3,4,5以下哪个不可能是合法的出栈序列 A. 3,2,1,5,4B. 5,4,3,2,1C. 3,4,5,2,1D. 3,5,4,1,26.在C中以下哪个头文件提供了sort函数 A.iostreamB.cmathC.algorithmD.vector7.十进制数 2025 转换为十六进制是 。A. 0x7E9B. 0x7E8C. 0x7EAD. 0x7EB8.设有一个长度为 n 的数组使用冒泡排序对其进行升序排列最坏情况下的比较次数是 。A. nB. n²C. n(n-1)/2D. n log n9.在C中执行以下代码段后输出结果是 。inta5,b3;cout(ab?a:b)endl;A. 3B. 5C. 6D. 410.已知中序遍历序列为 D B E A F C后序遍历序列为 D E B F C A则前序遍历序列为 。A. A B C D E FB. A B D E C FC. A C F E D BD. A B E D C F11.以下哪个不属于常见的数据结构 A. 栈B. 队列C. 二叉树D. 循环变量12.现有一个5个结点的无向图要保证该图连通至少需要的边数为 。A. 3B. 4C. 5D. 613.下列关于递归的说法中正确的是 。A. 递归算法一定能比迭代算法更快B. 递归必须有终止条件否则会无限递归C. 递归函数不能有返回值D. 所有递归算法都可以转化为递推且递推一定更优14.表达式!(a || b)与以下哪个表达式等价 A.!a !bB.!a || !bC.a bD.!(a b)15.某程序用int存储一个非负整数变量cnt当cnt从 0 开始不断自增第一次出现cnt 0时cnt 的值最接近 。A. 1×10³B. 2×10⁹C. 2×10⁴D. 4×10⁹二、阅读程序共3大题判断题每题2.5分选择题每题3分共40分第1题#includebits/stdc.husingnamespacestd;intcalc(intn){if(n1)returnn;returncalc(n-1)calc(n-2);}intmain(){intx;cinx;coutcalc(x)endl;return0;}16.若输入为 5程序输出为 5。 17.若输入为 10程序输出为 55。 18.将第4行改为return calc(n-1) calc(n-3);输入 4 时输出为 2。 19.若输入为 7程序输出为 。A. 8B. 13C. 21D. 3420.该程序的时间复杂度为 。A. O(n)B. O(n log n)C. O(2ⁿ)D. O(n²)第2题#includeiostreamusingnamespacestd;intfunc(inta,intb){if(b0)returna;returnfunc(b,a%b);}intmain(){inta,b;cinab;coutfunc(a,b)endl;return0;}21.输入 12 18程序输出 6。 22.输入 17 13程序输出 1。 23.若输入的两个数相等且不为0输出等于该数。 24.输入 24 36程序输出 。A. 4B. 6C. 12D. 2425.该程序实现的功能是 。A. 求最小公倍数B. 求最大公约数C. 判断互质D. 做除法取余第3题#includebits/stdc.husingnamespacestd;intmain(){intn,m;cinnm;vectorinta(n);for(inti0;in;i)cina[i];intans0;for(inti0;in;i){intsum0;for(intji;jn;j){suma[j];if(summ)ans;}}coutansendl;return0;}26.输入5 3和数组1 2 1 3 2输出为3。 27.输入4 5和数组1 1 1 1输出为0。 28.该算法的时间复杂度是 O(n²)。 29.输入6 4和数组1 2 3 1 2 1输出为 。A. 2B. 3C. 4D. 530.该程序的功能是 。A. 求数组中和为m的子序列个数B. 求数组中和为m的连续子数组个数C. 求数组中和为m的最大子数组D. 求数组中的所有子数组和三、完善程序共2大题第1题5空每空3分第2题5空每空3分共30分第1题统计二进制中1的个数【问题描述】输入一个非负整数n统计其二进制表示中1的个数。要求使用位运算实现。【程序框架】#includebits/stdc.husingnamespacestd;intcountOnes(intn){intcnt0;while(___ ① ___){cnt;___ ② ___;}returncnt;}intmain(){intn;cinn;coutcountOnes(n)endl;return0;}31.①处应填 。A. n 0B. n ! 0C. n 1D. n 032.②处应填 。A. n 1B. n 1C. n n - 1D. n | n - 133.若将②处改为n 1输入 15 时输出为 。A. 1B. 2C. 3D. 4第2题约瑟夫问题队列模拟【问题描述】n个人围成一圈编号从1到n。从第1个人开始报数报到m的人出列然后从下一个人重新从1开始报数。请使用队列queue模拟该过程输出所有出列人的编号最后输出最后剩下的人的编号。【程序框架】#includebits/stdc.husingnamespacestd;intmain(){intn,m;cinnm;queueintq;for(inti1;in;i){___ ④ ___;}intcnt0;while(___ ⑤ ___){intcurq.front();q.pop();cnt;if(___ ⑥ ___){coutcur ;___ ⑦ ___;}else{___ ⑧ ___;}}coutq.front()endl;return0;}34.④处应填 。A. q.push(i)B. q.pop(i)C. q.front(i)D. q.back(i)35.⑤处应填 。A. q.empty()B. !q.empty()C. q.size() nD. cnt m36.⑥处应填 。A. cnt mB. cnt mC. cnt mD. cnt % m 037.⑦处应填 。A. cnt 0B. cnt 1C. cntD. cnt–38.⑧处应填 。A. q.push(cur)B. q.pop()C. q.front()D. q.push(cnt)参考答案与题解一、单项选择题1. 答案BA65则 G6567171的十六进制为0x47。2. 答案Bconst修饰的变量必须在定义时初始化B正确。int大小与平台有关在16位平台下为2字节在32/64位平台下通常为4字节A错switch中default分支可以省略C错break也可用于switch语句跳出分支D错。3. 答案B完全二叉树中若总结点数为n叶子数为⌈n/2⌉。⌈2025/2⌉ ⌈1012.5⌉ 1013。4. 答案C根据主定理T(n)2T(n/2)O(n)其中a2b2log₂21O(n)与n^1同阶故T(n)O(n log n)。也可用递归树理解每层O(n)共log₂n层。5. 答案D出栈序列要求任意元素出栈后栈中剩余元素的相对顺序与原栈顺序相反。D序列3,5,4,1,2中3出栈后栈内为[1,2]5出栈需先压入4,5此时栈内为[1,2,4]5出栈后栈顶为4之后4出栈后栈内为[1,2]此时栈顶为21不可能在2之前出栈故不合法。6. 答案Csort函数位于algorithm头文件中这是C标准算法库。7. 答案A2025÷16126余9126÷167余14(E)7÷160余7。从下往上读取余数得0x7E9。8. 答案C冒泡排序最坏情况数组逆序下第i趟需比较n-i次总比较次数为 (n-1)(n-2)…1 n(n-1)/2。9. 答案C程序先执行 a表达式的值为5后置自增返回原值然后a变为6。条件判断 5 3 为真三目运算符返回 a此时a已变为6因此输出6。注意这里有一个常见的易错点a在条件判断时是5但进入真值分支时a已经自增为6。10. 答案B后序最后A为根中序中A左侧DBE为左子树右侧FC为右子树。左子树后序DEB、中序DBE推出B为左子树根D为B左孩子E为B右孩子。右子树后序FC、中序FC推出C为右子树根F为C左孩子。前序遍历为根→左→右得A B D E C F。11. 答案D栈、队列、二叉树都是经典数据结构。循环变量是编程语言中的控制变量用于控制循环次数不属于数据结构范畴。12. 答案B5个结点的连通图至少需要n-14条边构成一棵树。少于4条边必然有孤立结点或分为多个连通分量。13. 答案B递归必须有终止条件否则会无限递归导致栈溢出B正确。递归通常比迭代慢且有额外函数调用开销A错递归函数可以有返回值C错并非所有递归都能转化为递推能转化的也不一定更优D错。14. 答案A根据德摩根定律!(a||b) !a !b。15. 答案BC中int类型为32位有符号整数范围为-2³¹ ~ 2³¹-1即约-2.147×10⁹ ~ 2.147×10⁹。cnt从0不断自增当超过2³¹-1后溢出变为负数因此第一次出现负数时cnt约等于2³¹≈2.147×10⁹最接近2×10⁹。二、阅读程序程序一斐波那契数列16. 答案√calc(5) calc(4)calc(3) [calc(3)calc(2)] [calc(2)calc(1)] 32 5。斐波那契数列F₀0F₁1F₂1F₃2F₄3F₅5。17. 答案√calc(10) F₁₀ 55。验证F₆8F₇13F₈21F₉34F₁₀55。18. 答案√修改后递推式为G(n)G(n-1)G(n-3)边界G(0)0G(1)1。按竞赛标准修正边界n0返回0n1返回1G(2)G(1)G(-1)101G(3)G(2)G(0)101G(4)G(3)G(1)112。故答案为2正确。19. 答案Bcalc(7) F₇ 13F₀0, F₁1, F₂1, F₃2, F₄3, F₅5, F₆8, F₇13。20. 答案C该递归存在大量重复计算时间复杂度为O(2ⁿ)准确为O(φⁿ)φ≈1.618。程序二欧几里得算法21. 答案√func(12,18) func(18,12) func(12,6) func(6,0) 6。22. 答案√func(17,13) func(13,4) func(4,1) func(1,0) 1。23. 答案√若ab且不为0func(a,a) func(a,0) a输出等于该数。24. 答案Cfunc(24,36) func(36,24) func(24,12) func(12,0) 12。25. 答案B辗转相除法求最大公约数GCD。程序三连续子数组求和26. 答案√所有连续子数组中和等于3的有[1,2]下标0-1、[3]下标3、[2,1]下标4-5共3个。27. 答案√数组[1,1,1,1]的所有连续子数组和分别为1、2、3、4、2、3、4、3、4、4没有等于5的输出0。28. 答案√外层循环n次内层循环平均n/2次总执行次数约n²/2时间复杂度O(n²)。29. 答案B数组[1,2,3,1,2,1]列举所有连续子数组[1,2,1]下标0-2和4[3,1]下标2-3和4[1,2,1]下标3-5和4[1,2,3]和6[2,3,1]和6等。统计得共3个选B。30. 答案B程序通过双指针i、j枚举所有连续子数组i为起点j为终点计算子数组和并统计等于m的个数。三、完善程序题目一统计二进制中1的个数本题考察位运算。有两种常见方法逐位右移法和lowbit法n (n-1)。31. 答案B循环条件应为 n ! 0当n变为0时所有1已统计完毕。若用n0则无法处理负数但题目限定非负整数n0也可但B选项更严谨。若用n 1则只能判断最低位无法控制循环。若用n 0会导致死循环。故B正确。32. 答案Cn n - 1 是经典的lowbit操作每次将n的二进制中最低位的1变为0执行次数等于1的个数。若用 n 1A选项则每次右移一位需要遍历所有二进制位时间复杂度O(log n)也能正确统计但效率不如C。B选项左移会导致n不断增大死循环。D选项按位或也会死循环。本题要求使用位运算实现C是最优的位运算方法。33. 答案D若使用 n 1 逐位右移输入15二进制1111循环执行4次分别统计4个1输出4。选D。题目二约瑟夫问题-队列模拟该程序使用队列模拟报数过程。初始将所有编号1~n依次入队然后循环处理直到队列中只剩最后一人。每次从队首取出一个人代表报数计数器cnt加1。如果cnt等于m说明该人报到m输出并出列已在pop时移出同时计数器重置为0否则将该人重新放到队尾继续下一轮报数。循环结束后队列中唯一剩余的元素即为最后留下的人。34. 答案A初始化队列将编号1~n依次入队。q.push(i)将i压入队列尾部。35. 答案B循环条件为队列非空。当队列中还有元素时继续模拟。!q.empty()表示队列不为空。36. 答案A报数从1开始递增报到m的人出列。当cnt累加到m时触发出列后将cnt重置为0。cntm准确反映了报到m这一条件。37. 答案A当有人出列后计数器应重置为0从下一个人重新从1开始报数故⑦处填cnt0。38. 答案A若当前报数的人未报到m则应将其放到队尾继续参与下一轮报数故⑧处填q.push(cur)。更多内容请关注专栏信奥赛C普及组csp-j初赛复赛真题题解持续更新https://blog.csdn.net/weixin_66461496/category_12808781.html 点击跳转【秘籍汇总】完整csp信奥赛C学习资料1、csp/信奥赛C完整信奥赛系列课程永久学习https://edu.csdn.net/lecturer/7901 点击跳转2、CSP信奥赛C竞赛拿奖视频课https://edu.csdn.net/course/detail/40437 点击跳转https://edu.csdn.net/course/detail/41081 点击跳转3、csp信奥赛高频考点知识详解及案例实践CSP信奥赛C动态规划https://blog.csdn.net/weixin_66461496/category_13096895.html点击跳转CSP信奥赛C标准模板库STLhttps://blog.csdn.net/weixin_66461496/category_13108077.html 点击跳转信奥赛C提高组csp-s知识详解及案例实践https://blog.csdn.net/weixin_66461496/category_13113932.html 点击跳转4、csp信奥赛冲刺一等奖有效刷题题解信奥赛C普及组CSP-J一等奖通关刷题题单及题解https://blog.csdn.net/weixin_66461496/category_12673810.html 点击跳转信奥赛C普及组csp-j初赛复赛真题题解持续更新https://blog.csdn.net/weixin_66461496/category_12808781.html 点击跳转信奥赛C提高组csp-s初赛复赛真题题解持续更新https://blog.csdn.net/weixin_66461496/category_13125089.html 点击跳转5、GESP C考级真题题解GESP(C 一级二级三级)真题题解持续更新https://blog.csdn.net/weixin_66461496/category_12858102.html 点击跳转GESP(C 四级五级六级)真题题解持续更新https://blog.csdn.net/weixin_66461496/category_12869848.html 点击跳转GESP(C 七级八级)真题题解持续更新https://blog.csdn.net/weixin_66461496/category_13117178.html 点击跳转· 文末祝福 ·#includebits/stdc.husingnamespacestd;intmain(){cout跟着王老师一起学习信奥赛C;cout 成就更好的自己 ;cout csp信奥赛一等奖属于你! ;return0;}