MCOI2503月赛 L2 选择题 解析

 

【答案解析】

1【答案】B

【解析】

sort()函数属于C++标准模板库(STL),必须包含头文件 <algorithm> 才能使用。<functional> 仅在需要降序排序时搭配 greater<int>() 使用

2【答案】D

【解析】

计数排序和桶排序不适合数据范围特别大的,结构体排序更适合多参数的,因此在这四个中,冒泡排序是最合适的

3【答案】A

【解析】

结构体定义需用大括号包裹成员变量,并以分号结尾。

4【答案】C

【解析】

确定数据范围,准备相应长度的标记数组(如最小值和最大值)

统计元素出现次数(通过下标映射)

遍历桶输出结果(按顺序填充)

 

5【答案】A

【解析】

交换相邻元素会消除一对相邻逆序对,总逆序对数量减少1。冒泡排序的每次交换仅影响相邻元素

代码阅读一:【答案】

6.B

7.A

8.B

9.B

10.C

【解析】

● 该题是数位分离和vis标记数组的结合,统计数字n中,0~9每一位数字出现的次数,即便是0也会输出每个数字的统计结果

● 该题是数位分离和vis标记数组的结合,统计数字n中,0~9每一位数字出现的次数

● 数组创建在全局时,每一个位置会自动初始化为0,创建在主函数内,若不手动初始化,则会出现随机的数据,即垃圾数据,会影响统计结果

● 该题是数位分离和vis标记数组的结合,统计数字n中,0~9每一位数字出现的次数

● 数位分离中,n变成0是结束的标志,因此n>=0作为条件的话,会多进行一次分离,统计多一次0出现的次数,导致程序结果出错

代码阅读二:【答案】

11.A

12.B

13.C

14.B

15.A

【解析】

● 本质上vis数组里面为0代表树没有被移走,所以树被移走一直累加也不影响后续的统计

● 由于模拟的是道路,0的位置其实代表的是起点,不能忽略

● vis[i] = 1 表示位置 i 的树被移走,初始为0表示树存在。

● 初始0-1516棵树。移走区间合并为0-67棵树)和8-125棵树),共移走12棵。剩余16-12=4棵。

● 初始0-2021棵树。移走区间合并为2-76棵树)、9-157棵树)和17-193棵树),共移走16棵。剩余21-16=5棵。

完形填空一:【答案】

16.A

17.B

18.D

19.A

20.C

【解析】

● 闰年条件考察,y%4==0 && y%100!=0 || y%400==0,逻辑运算符优先级:非>>

● 统计2001y-1年的天数

● 根据i是否为闰年来决定累加366还是365

● week代表星期几,j代表几号,黑色星期五条件:星期五并且13

● week代表周几,超过7则要重置为1

完形填空二:【答案】

21.B

22.C

23.B

24.B

25.C

【解析】

● class类、struct结构体、typedef类型定义union联合体

● 根据多条件的优先级,年份相同才会进入月份的比较

● 这里需要返回的比较结果,越靠前年龄越大,所以返回小于的比较结果

● 这里需要返回的比较结果,越靠前年龄越大,所以返回小于的比较结果

● 考察sort()函数使用,代码开始位置为1,排序长度为n

posted @ 2025-04-02 15:07  CRt0729  阅读(24)  评论(0)    收藏  举报