CSP-J 初赛模拟卷(第 15 套)
参考答案与解析
--- #### **一、单项选择题** **答案速查** | 题号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | | 答案 | B | A | A | A | B | B | A | B | | 题号 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | | 答案 | D | B | A | B | C | A | D | **逐题解析** ##### 第1题 **答案:** B **解析:** 图灵奖是计算机科学领域的重要奖项;其余奖项分别主要面向电影、自然科学及文学等领域、新闻等领域。 ##### 第2题 **答案:** A **解析:** 早期电子计算机首先用于科学与工程中的数值计算,例如数值表和复杂算式的计算。 ##### 第3题 **答案:** A **解析:** 各层最多分别有 $1,2,4,\ldots,2^{n-1}$ 个结点,求和得到 $2^n-1$。 ##### 第4题 **答案:** A **解析:** 删除边 `a` 后,剩余有向路径仍使任意两个顶点互相可达,图仍满足强连通定义,因此选 A。 ##### 第5题 **答案:** B **解析:** `a` 初始为 $1$,每轮减 $2$。执行两轮后 `s=2`、`a=-3`;要使循环此时结束,应输入 `n=-3`。 ##### 第6题 **答案:** B **解析:** 元素 $7$ 与后面的 $2,3,5,4$ 形成 $4$ 个逆序对,元素 $5$ 与 $4$ 再形成 $1$ 个,合计 $5$ 个。 ##### 第7题 **答案:** A **解析:** 字符串是由字符组成的特殊线性表,可以用数组存储;长度可以为零。含空格字符的串仍含有元素,不是空串。 ##### 第8题 **答案:** B **解析:** $10000=2^4\times5^4$。在 $1$ 至 $10000$ 中,去掉能被 $2$ 或 $5$ 整除的数,并加回被重复扣除的 $10$ 的倍数,得到 $10000-5000-2000+1000=4000$ 个。 ##### 第9题 **答案:** D **解析:** 前序顺序为“根、左、右”,中序顺序为“左、根、右”。要使两者相同,每个结点都不能有左子树;因此只含根结点或仅沿右孩子延伸的二叉树符合条件。 ##### 第10题 **答案:** B **解析:** 全集的子集总数为 $S=2^{10}=1024$,含 $7$ 个元素的子集数为 $T=\binom{10}7=120$,因此 $T/S=120/1024=15/128$。 ##### 第11题 **答案:** A **解析:** 不能分享给 Jacob 或他的朋友,否则 Jacob 可能通过评论看到照片。Dana、Michael、Eve 均符合条件,对应 A。 ##### 第12题 **答案:** B **解析:** `x & (x-1)` 每次恰好清除二进制表示中最右侧的一个 `1`。循环次数因此等于 `1` 的个数,所填语句为 `x &= x - 1`。 ##### 第13题 **答案:** C **解析:** 方案二每公里消耗更多,但每周最多安排 $3$ 次。安排 $3$ 次方案二、$2$ 次方案一,共跑 $3\times5+2\times3=21$ 公里,消耗 $3\times600+2\times300=2400$ 千卡,满足时间与里程限制。 ##### 第14题 **答案:** A **解析:** 含 $n$ 个顶点的连通无向图至少有 $n-1$ 条边;取一棵生成树即可达到这个最小值。因此 $10$ 个顶点可用 $9$ 条边构成连通图。 ##### 第15题 **答案:** D **解析:** Linux 可执行文件没有统一的默认扩展名;能否执行主要由文件格式及执行权限决定,因此前三项均不符合。 #### **二、阅读程序** ##### 程序(1) **程序分析:** 递归满足 $\operatorname{luo}(n,m)=\sum_{0\le i=0 && y>=0 && x=0 && y>=0 && x> b[i][j]` | | 34 | `m1-m2+1` | | 35 | `good = true` | | 36 | `m2` | | 37 | `haveAns = true` | ###### 第33题 **答案:** `cin >> b[i][j]` **解析:** 读入第二个矩阵时,应把数据存入 `b[i][j]`。 ###### 第34题 **答案:** `m1-m2+1` **解析:** 小矩阵宽为 `m2`,放置的最后一列起点为 `m1-m2+1`。 ###### 第35题 **答案:** `good = true` **解析:** 开始检查新的位置时,先假定匹配,令 `good=true`,发现不等元素后再改为假。 ###### 第36题 **答案:** `m2` **解析:** 内层比较应遍历小矩阵全部 `m2` 列,因此上界为 `m2`。 ###### 第37题 **答案:** `haveAns = true` **解析:** 发现一个匹配后,需令 `haveAns=true`,以避免最后误输出不存在答案。 ##### 程序(3) **程序分析:** 程序扫描原字符串,把所有非数字字符依次复制到前面,用 `j` 记录保留字符数,最后只输出这 `j` 个字符,从而删除全部数字。 **答案速查** | 题号 | 答案 | | :---: | :--- | | 38 | `\|\|` | | 39 | `j++` | | 40 | `j` | | 41 | `s[i]` | ###### 第38题 **答案:** `||` **解析:** 不属于数字的条件是小于字符 `0` 或大于字符 `9`,应使用逻辑或运算符 `||`。 ###### 第39题 **答案:** `j++` **解析:** 写入一个保留字符后,下一个写入位置需向后移动,执行 `j++`。 ###### 第40题 **答案:** `j` **解析:** `j` 就是删除数字后保留下来的字符数,应作为函数返回值。 ###### 第41题 **答案:** `s[i]` **解析:** 保留字符已经依次存入 `s[0..len-1]`,输出时逐个访问 `s[i]`。