多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

【C++】CSP-J初赛模拟卷五错题整理(作者自用)

【C++】CSP-J初赛模拟卷五错题整理(作者自用) 这些错题是 《信息学奥赛CSP通关之路——CSP-J/S第一轮原创全真模拟试卷集2026》 这本书中的第5套套模拟题我所做错的题仅供参考。第4题原题在NOI Linux终端中要创建一个名为“test”的新目录应该使用命令。A. new testB. create testC. mkdir testD. md test答案C解析Linux系统中创建目录的命令是mkdirmake directory 的缩写语法为mkdir 目录名。选项A、B不是Linux标准命令选项Dmd是Windows系统下的命令不适用于Linux。因此选C。第5题原题x是正整数且在int范围内则表达式(x (x-1)) 0可以用来判断一个无符号整数x。A. 是偶数B. 是2的幂次C. 是0D. 是奇数答案B解析x (x-1)是判断正整数是否为2的幂次的经典位运算技巧若x是2的幂次如x8二进制1000则x-17二进制0111按位与结果为0。若x不是2的幂次如x6二进制110则x-15二进制101按位与结果为100≠0。题目说明x是正整数故排除C偶数如6和奇数如7不一定满足该条件。因此选B。第11题原题已知二叉树的中序遍历序列为 DBEAC后序遍历序列为 DEBCA则前序遍历序列为 。A. ABCDEB. ABDECC. ABEDCD. ABECD答案B解析确定根节点后序遍历的最后一个节点是根所以根为A。划分左右子树中序序列中A左边D、B、E为左子树右边C为右子树。递归分析左子树左子树的后序序列为 D、E、B去掉根A和右子树C最后一个B是左子树的根。中序序列中B左边是D右边是E所以B的左子为D右子为E。递归分析右子树根为C无子节点。前序遍历顺序根 → 左子树 → 右子树。根为A左子树根为BB的左为DB的右为E右子树为C。得到前序序列A B D E C对应选项B。第24题原题若将程序中的solve(a,b,prec);替换成cout fixed setprecision(prec) (1.0*a/b) endl;其他部分不变则当prec的输入值在[0,15]区间时输出结果是一样的。答案×解析原程序solve函数是用整数运算模拟高精度除法并手动实现四舍五入而替换后的代码使用浮点数运算两者在以下情况会不同除零行为当b0时原程序输出自定义错误提示Error::Division_by_zero!而浮点数直接除零输出inf或报错结果完全不同。浮点精度误差浮点数在表示某些小数时存在精度误差四舍五入的结果可能与整数模拟不一致例如某些边界值如0.5舍入方向可能不同。因此输出结果并非完全一样该说法错误。第26题原题如果输入的数据为2026 0 -6下列说法中正确的是 。A. 程序会因为执行除以0的操作而出错不能正常输出数据B. 程序不会报错但不会输出具体数值而是输出自定义的出错提示语C. 程序不会报错可以正常输出结果输出结果为2026.D. 程序不会报错可以正常输出结果输出结果为2026答案B解析输入中b0程序进入solve函数后首先执行if (b 0)判断条件成立直接输出Error::Division_by_zero!并返回不会执行后续除法操作。因此程序不会因除零崩溃而是输出自定义错误提示语选项B正确。第28题原题该程序使用二分法在单调不升数组中查找某个数在整个数组中排在第几个位置。答案×解析程序中的bSearch函数确实使用了二分法但其返回的是目标元素在数组中的下标从0开始计数而不是“排在第几个位置”位置通常从1开始计数。例如找到下标为3的元素它实际上是数组中的第4个位置两者含义不同。此外二分查找的前提是数组有序但程序并未检查输入数组是否单调不升如果数组不是降序排列二分查找的结果无意义。因此该说法错误。第35题原题完善程序1中③处应填 。if(j1){dp[i][j]max(③);}A.dp[i-1][j], nums[i-1]B.dp[i][j], nums[i-1]C.dp[i-1][j-1] nums[i-1]D.dp[i][j] nums[i-1]答案A解析动态规划中dp[i][j]表示从前i个元素中选出j个互不相邻元素的最大和。当j 1时即只需选1个元素。对于第i个元素对应nums[i-1]有两种选择不选它最大和为dp[i-1][1]选它最大和为nums[i-1]。两者取最大值所以dp[i][j] max(dp[i-1][j], nums[i-1])。因此填dp[i-1][j], nums[i-1]对应选项A。第39题原题完善程序2中②处应填 。A.sort(ivl, ivln);B.sort(ivl, ivln, cmp);C.sort(ivl1, ivl1n);D.sort(ivl1, ivl1n, cmp);答案B解析区间数组为ivl共有n个区间下标范围从0到n-1因此排序时完整的数组范围是ivl到ivln。同时排序规则由自定义比较函数cmp定义按起点升序起点相同时按终点升序所以必须传入比较器cmp。因此正确写法为sort(ivl, ivl n, cmp)对应选项B。
返回列表