2024CSP-J原创初赛模拟卷5

(认证时间:2023年9月16日 09:30~11:30)
*
基本信息:
姓名:
姓名:
班级:
班级:
学校:
学校:

一、单项选择题(每题只有一个正确选项,每题2分,共30分)

*
1.考虑以下C++代码片段,正确的描述是():
int x = 50;
int *p = &x;
int **q = &p;
*p = 100;
A. x 的值现在是 50
B. x 的值现在是 100
C. q 的值现在是 50
D. p 的值现在是 100
*
2.有5对夫妇参加一个聚会,他们围坐在一个长桌旁。如果每对夫妇必须坐在一起,且每对夫妇内部的座位可以交换,有多少种不同的坐法?()
A. 5!
B.
C. × 5!
D.
*
3.一个班级有15名学生,其中5名是数学竞赛获奖者。现在要从这15名学生中选出一个5人小组参加科学竞赛,要求至少有1名数学竞赛获奖者,有多少种不同的选法?()
A.C(15, 5) - C(10, 5)
B. C(15, 5)
C. C(15, 4)
D. C(15, 5) + C(10, 4)
*
4.从 6 个不同颜色的球中取出 4 个球,其中必须有红球和蓝球,不同的取法有( )种。
A. 15
B. 3
C. 45
D. 6
*
5.下面的 lowbit(x) 函数返回整数在二进制表示下最高位的1和后面所有0对应的整数。例如 lowbit(5) = 8,lowbit(12) = 4。
int lowbit(int x) {
return x & -x;
}
则该函数正确返回的值是( )。
A. x 的二进制表示中最高位的1
B. x 的二进制表示中最低位的1
C. x 的二进制表示中最高位的0
D. x 的二进制表示中最低位的0
*
6.假设有一个单向链表的节点定义如下:

struct Node {

        int data;   

        Node* next;

};

A. 遍历链表,找到最后一个节点,将其 next 指向新节点
B. 直接将新节点的 next 指向链表的第一个节点
C. 创建一个临时节点,将其 next 指向新节点,然后将其添加到链表末尾
D. 直接将新节点的 next 设置为 nullptr
*
7.在一个有n个顶点的无向图中,要确保图中的每个顶点至少被访问一次,至少需要( )条边。
A. n-1
B. n*(n-1)/2
C. n
D. n*(n+1)/2
*
8.十进制数 255 的二进制表示是( )。
A. 11111110
B. 11111111
C. 11111100
D. 11111111
*
9.在排序算法中,冒泡排序的平均时间复杂度是( )。
A. O(n)
B. O(nlogn)
C.O(n^2)
D. O(1)
*
10.已知一棵完全二叉树的前序遍历为 "ABDECFG",其后序遍历可能是( )。
A. DEBFACG
B. DEBGFCA
C. BDAECFG
D. BDCFEAG
*
11.给定表达式的中缀表达式为 "3 + 4 * 5 - 6",其对应的前缀表达式是( )。
A. + 3 *4 5 - 6
B. - + 3 *4 5 6
C. 3 4 + 5 * 6 -
D. 3 + 4 5 * 6 -
*
12.对于一个长度为 的数组,使用选择排序算法对其排序的时间复杂度是( )。
A. O(1)
B. O(n)
C. O(nlogn)
D.o(n^2)
*
13.在一个具有 个节点的二叉搜索树中,查找一个元素的最坏时间复杂度是( )。
A. O(1)
B. O(logn)
C. O(n)
D.O(n^2)
*
14.十进制数 16 对应的八进制数是( )。
A. 20
B. 24
C. 26
D. 28
*
15.在C++ STL中,关于map容器的描述错误的是( )。
A. map容器存储键值对
B. map容器中的元素是有序的
C. map容器中的键必须是唯一的
D. map容器可以使用下标运算符直接访问元素

二、程序阅读(共3大题。程序输入不超过数组或字符串定义的范围,除特殊说明外,判断题1.5分,选择题3分,共计40分)

(12分)https://www.luogu.com.cn/problem/CF1715B

01 


判断题


*
16.若程序输入 1 1 2 3 4,输出的值一定不是-1。( )
*
17.变量t对题目算法 实现的思路无关。( )
*
18.第11行目的是判断s是否在(k*p,k*p+n*(k-1))这个区间里( )(2分)
*
19.若输入1 1 6 3 100 ,则输出是什么?()
A. -1
B. 38
C. 39
D. 40
*
20.若输入3 6 3 19,则输出是什么()
A. 3 3 19
B. 2 5 19
C. 0 0 19
D. 9 9 19
2.https://www.luogu.com.cn/problem/CF1807D

判断题

*
21.第17行“sum[y]-sum[x-1]”改成“sum[x-1]-sum[y]”对答案不影响( )
*
22.第12行求的是前缀和,目的是能尽快得到区间和( )
*
23. 该题的时间复杂度是O(n)( )
*
24.若把若把第8行去掉对程序结果有影响 ( )
*
25.若输入为5 1 2 2 1 3 2 2 3 3,则属于出的结果为()
A. YES
B. NO
C. yes
D. No
*
26.若输入5 5 2 2 1 3 2 2 3 3 2 3 4 1 5 5 1 4 9 2 4 3,则输出是()?
A. YES YES YES NO YES
B. YES YES YES YES YES
C. YES YES YES NO NO
D. YES YES YES YES NO
3.https://www.luogu.com.cn/problem/CF1427B

判断题


*
28.变量W和L代表‘W’和‘L’的数量( )
*
29.第29行是特判全是‘W’的情况( )
*
30.如果输入1 7 1 LWLWLWL,那么输出:()
A. 18
B. 6
C. 9
D. 27
*
31.如果输入15 5 WWWLLLWWWLLLWWW,那么输出:()
A. 48
B. 7
C. 0
D. 26
*
32.如果输入的k等于0,那么输出:()
A. 一定是0
B. 可能是0
C. 运行时错误
D. 一定不是0
*
33.如果输出的某个测试样例结果是0那是哪种情况()。
A. L+k=0
B. W=0
C. W+L=0
D. W+k=0

一、程序填空(共2大题,每个选择题3分,共计30分)

1、题目描述:给出只会出现pair和int的字符串 要求按照给出pair和int的顺序,添加'<' , '>' , ','这三个符号,使得给出的串成为一个合法的类型.例如:

输入:3

pair pair int int int

输出:pair<pair<int,int>,int>。


*
34.①处应填写()
A. ,sd(),
B. ;(点)
C. ,(逗号)
D. sum+=">";
*
35.②处应填写()
A. “int ”
B. int
C. sum
D. pd
*
36.③处应填写()
A. sum+=”pair<>”
B. sum+=”<int>”
C. sd()
D. sum+="int";
*
37.④处应填写()
A. pd=1
B. pd=0
C. pd=\=0
D. pd=\=1
*
38.⑤处应填写()
A. sd()
B. sum
C. a
D. pd
2 https://www.luogu.com.cn/problem/solution/CF986A

题目描述:

有 n 个城市,城市间有 m 条双向道路。当然,城镇之间两两连通。 生产的货物有 k 种类型,每个城镇只生产一种。 为了举办商品交易会,你必须至少带来 s 种不同类型的商品。将货物从 u 镇带到城镇v 将花费d(u,v) 的费用,其中(u,v) 是从 u 到 v 的最短路径的长度。 路径的长度是这个路径中的道路的数量。

组织者将支付所有的运输费用,但他们可以选择从哪些城镇带来货物。现在他们想计算每个城镇举办商品交易会的最小费用。



*
39.①处应填写()
A. v[a[i]].push_back(i)
B. v[a[i]]++
C. dis[a][i]++
D. dis[a][i]=1
*
40.②处应填写()
A. e[x].push_back(x);
e[y].push_back(y);
B. e[x].push_back(y);
C. e[y].push_back(x);
D. e[x].push_back(y);
e[y].push_back(x);
*
41.③处应填写()
A . v[i].size()
B. dis[i][c]==-1
C. dist[i][c]=1
D. v[i].empty()
*
42.④处应填写()
A. q.pop()
B. q.push(x)
C. q.push(i)
D. q.push(dis[i][c])
*
43.⑤处应填写()
A. ans++;
B. ans=0
C. v[i].clear()
D. cout<<dist[i][0]<<” “;
问卷星提供技术支持
举报