#6566. 【大湾区】第二届C++语言试题小学组
【大湾区】第二届C++语言试题小学组
一,单项选择题(共15题,每题2分,共计30分:每题有且仅有一个正确选项)
- ()是C++存储单个字符的数据类型。{{ select(1) }}
- int
- float
- char
- string
- ()是稳定的排序方式。{{ select(2) }}
- 快速排序
- 堆排序
- 选择排序
- 归并排序
- ()是8比特无符号整数能表示的最大数字。{{ select(3) }}
- 127
- 128
- 255
- 256
- 每个点都和所有别的点相连的图叫作()。{{ select(4) }}
- 有向图
- 完全图
- 稠密图
- 二分图
- 在一个有 10 个元素的序列中进行二分查找,每个元素被查找的概率相同,平均查询次数为()。{{ select(5) }}
- 29 / 10
- 1og( 10 )
- 19 / 10
- 3
- 若( 120 )表示 3 进制下的数字 120, 那么( 1026 )+( 1AB ) = ()。{{ select(6) }}
- (1001010010)
- (2654)
- (59D)
- (1222211)
- 13 << 2 和 13 >> 2 的结果分别为()。{{ select(7) }}
- 15 0
- 52 3
- 3 52
- 0 15
- 在C++中, cout << () 不能输出数组 a 的地址。{{ select(8) }}
- a
- &a
- &a[0]
- *a
- 一棵有 9 个节点的树最多有()条边。{{ select(9) }}
- 9
- 8
- 81
- 36
- 下图中所使用的数据结构是()。

{{ select(10) }}
- 哈希表
- 栈
- 队列
- 链表
- 节点数为 3 的本质不同的二叉树有 () 种。{{ select(11) }}
- 5
- 3
- 1
- 9
- 某班有 30 名同学,有 20 名同学语文得到满分,有 25 名同学数学得到满分,最少有 () 名同学语、数得到满分。{{ select(12) }}
- 20
- 10
- 15
- 5
- 二进制小数110.011对应的十进制数是()。{{ select(13) }}
- 6.75
- 6.375
- 3.75
- 5.1
- a, b, c 为三个正整数,若a + b + c = 10, ( a, b, c )有()种不同的情况。{{ select(14) }}
- 1331
- 1000
- 84
- 120
- ()命令行可以生成一个源代码为 a.cpp 的可执行文件。{{ select(15) }}
- cpp -o b a.cpp
- cpp -g b a.cpp
- g++ -o b a.cpp
- g++ -g b a.ppp
二,阅读程序(程序输入不超过数组或字符串定义的范围;判断题正确在答题卡上涂“A”,错误涂“B”;除第16题1分外,判断题每题1.5分,选择题每题3分,共计40分)
(一)

■判断题
- 若输人 65 10 A,则输出 65 10 A。(){{ select(16) }}
- 正确
- 错误
- 若输入 114 51.4 0,将输出0 51 r。(){{ select(17) }}
- 正确
- 错误
- 该程序中,头文件 #include< iostream>可以改成 #include<bits/stdc++.h>。(){{ select(18) }}
- 正确
- 错误
■选择题
- 若输出97 5 a,输入可能为()。{{ select(19) }}
- 65 5.7 a
- 97 5.7 a
- 97 4.9 a
- 65 4.9 a
- 若将“d = c”改成“d = c - '0’”,则可能()。{{ select(20) }}
- 若输入的字符为数字,输出的第一个数字与其相同
- 若输入的字符为小写字母,输出的第一个数字与其在字母表中的次序相同
- 若输人的字符为大写字母,输出的第一个数字与其在字母表中的次序相同
- 以上情况均不会出现
- 若将“d = c”改成“d = c - 48”,则可能()。{{ select(21) }}
- 若输人的字符为数字,输出的第一个数字与其相同
- 若输人的字符为小写字母,输出的第一个数字与其在字母表中的次序相同
- 若输人的字符为大写字母,输出的第一个数字与其在字母表中的次序相同
- 以上情况均不会出现
(二)

■判断题
- 上述代码中,第 13 行、第 14 行双重循环的次序先 i 后 j 改为先 j 后 i,输出结果不变。(){{ select(22) }}
- 正确
- 错误
- 上述代码中,第 13 行、第 14 行双重循环中第 10 行的 i = 0 改为 i = 1, 输出结果一定不变。(){{ select(23) }}
- 正确
- 错误
- 若输人数据中,1 ≤ n ≤ 1000,1 ≤ a[i] ≤ 1000000, 则所求答案一定没有溢出。(){{ select(24) }}
- 正确
- 错误
■选择题
- 当输入的 a[i][j] 全部都是 1 时,输出结果为()。{{ select(25) }}
- 0
- 1
- (y2 - y1) * (x2 - x1)
- (y2 - y1 + 1)*(x2 - x1 + 1)
- 当输人为:

输出为()。{{ select(26) }}
- 4
- 22
- 25
- 33
- 上述代码的时间复杂度为()。{{ select(27) }}
- O(n * n)
- O(n * n * q)
- O(q)
- O(max( n * n, q))
(三)

■判断题
- 上述代码实现了求任意两点之间的最短路。(){{ select(28) }}
- 正确
- 错误
- 上述代码中,输人的a[i][j]的最小上界为1,000,000,007。(){{ select(29) }}
- 正确
- 错误
- 去掉“(a[i][j] == MAXL? - 1 : a[i][j])” 中的括号 “()” 后程序仍能正常编译运行。(){{ select(30) }}
- 正确
- 错误
■选择题
- 上述代码的作用的算法名为()。{{ select(31) }}
- Bellman-Ford
- Floyd
- SPFA
- Dijkstra
- 上述代码的时间复杂度为()。{{ select(32) }}
- O(n)
- O(nlogn)
- O()
- O()
- 若输入数据为:

输出数据中有()个 -1。{{ select(33) }}
- 0
- 8
- 12
- 13
三、完善程序(单选题,每小题3分,共计30分)
(一) (区间极值)输人一个正整数 n,以及 n 个正整数组成的序列,输入一个正整数 q,以及 q 组询问,每组询问求区间最大值。

- (1)处应填()。{{ select(34) }}
- ST[0][i] = a[i]
- ST[0][i] = 0
- ST[i][0] = a[i]
- ST[i][0] = 0
- (2)处应填()。{{ select(35) }}
- (1 << i) - 1
- 1 << (i - 1)
- (1 << i) + 1
- 1 << (i + 1)
- (3)处应填()。{{ select(36) }}
- max(a[j], ST[i - 1][j + D])
- max(a[j], ST[i - 1][j - D])
- max(ST[i - 1][j], ST[i - 1][j + D])
- max(ST[i - 1][j], ST[i - 1][j - D])
- (4)处应填()。{{ select(37) }}
- floor(log2(D))
- floor(ln(D))
- round(log2(D))
- round(ln(D))
- (5)处应填()。{{ select(38) }}
- min(ST[q][1], ST[q][r - (1 << q)])
- min(ST[q][1], ST[q][r -(1 << q) + 1])
- max(ST[q][1], ST[q][r - (1 << q)])
- max(ST[q][1], ST[q][r - (1 << q) + 1])
(二) (强连通分量)给出一张 n 个节点 m 条边的有向图,求这张图的强连通分量
输入: 第一行两个正整数 n, m 表示点数与边数。
接下来 m 行,每行两个正整数 x, y; 表示节点 x 到节点 y 之间有一条有向边。
接下来输入一个整数 q 表示询问数。
接下来 q 行,每行两个正整数 x, y,询问这两个点是否互相可达,即节点 x 可以通过有向边到达 y 点,反之亦然。
输出: 输出询问的答案
试补全程序。

- (1)处应填()。{{ select(39) }}
- min(low[u], low[v])
- min(low[u], dfn[v])
- max(low[u], low[v])
- max(low[u], dfn[v])
- (2)处应填()。{{ select(40) }}
- stack[top] == u
- dfn[u] == low[u]
- stack[top] != u
- dfn[u] != low[u]
- (3)处应填()。{{ select(41) }}
- top != 0
- instack[stack[top]]==1
- stack[top] != cnt
- stack[top] != u
- (4)处应填()。{{ select(42) }}
- E[y].push_back(x)
- E[x].push_back(y)
- E[x].push(y)
- E[y].push(x)
- (5)处应填()。{{ select(43) }}
- dfn[x] == dfn[y]
- low[x] == dfn[y]
- scc[x] == scc[y]
- instack[x] == instack[y]