#P5276. 【大湾区】第二届C++语言试题小学组

【大湾区】第二届C++语言试题小学组

Description

**一,单项选择题(共15题,每题2分,共计30分:每题有且仅有一个正确选项)** 1. ()是C++存储单个字符的数据类型。 * int * float * char * string 2. ()是稳定的排序方式。 * 快速排序 * 堆排序 * 选择排序 * 归并排序 3. ()是8比特无符号整数能表示的最大数字。 * 127 * 128 * 255 * 256 4. 每个点都和所有别的点相连的图叫作()。 * 有向图 * 完全图 * 稠密图 * 二分图 5. 在一个有 10 个元素的序列中进行二分查找,每个元素被查找的概率相同,平均查询次数为()。 * 29 / 10 * 1og$_2$( 10 ) * 19 / 10 * 3 6. 若( 120 )$_3$表示 3 进制下的数字 120, 那么( 1026 )$_1$$ _0$+( 1AB )$_1$$_6$ = ()。 * (1001010010)$_2$ * (2654)$_8$ * (59D)$_1$$_6$ * (1222211)$_3$ 7. 13 <> 2 的结果分别为()。 * 15 0 * 52 3 * 3 52 * 0 15 8. 在C++中, cout << () 不能输出数组 a 的地址。 * a * &a * &a[0] * *a 9. 一棵有 9 个节点的树最多有()条边。 * 9 * 8 * 81 * 36 10. 下图中所使用的数据结构是()。 ![image](/upload/106.55.101.120/20250403/03PPjRnVFiYvprxLzu7Ig.png) * 哈希表 * 栈 * 队列 * 链表 11. 节点数为 3 的本质不同的二叉树有 () 种。 * 5 * 3 * 1 * 9 12. 某班有 30 名同学,有 20 名同学语文得到满分,有 25 名同学数学得到满分,最少有 () 名同学语、数得到满分。 * 20 * 10 * 15 * 5 13. 二进制小数110.011对应的十进制数是()。 * 6.75 * 6.375 * 3.75 * 5.1 14. a, b, c 为三个正整数,若a + b + c = 10, ( a, b, c )有()种不同的情况。 * 1331 * 1000 * 84 * 120 15. ()命令行可以生成一个源代码为 a.cpp 的可执行文件。 * 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分)** (一) ![image](/upload/106.55.101.120/20250403/45K7mVhIyeSHuU1Wg1acA.png) ■判断题 16. 若输人 65 10 A,则输出 65 10 A。() * 正确 * 错误 17. 若输入 114 51.4 0,将输出0 51 r。() * 正确 * 错误 18. 该程序中,头文件 #include可以改成 #include。() * 正确 * 错误 ■选择题 19. 若输出97 5 a,输入可能为()。 * 65 5.7 a * 97 5.7 a * 97 4.9 a * 65 4.9 a 20. 若将“d = c”改成“d = c - '0’”,则可能()。 * 若输入的字符为数字,输出的第一个数字与其相同 * 若输入的字符为小写字母,输出的第一个数字与其在字母表中的次序相同 * 若输人的字符为大写字母,输出的第一个数字与其在字母表中的次序相同 * 以上情况均不会出现 21. 若将“d = c”改成“d = c - 48”,则可能()。 * 若输人的字符为数字,输出的第一个数字与其相同 * 若输人的字符为小写字母,输出的第一个数字与其在字母表中的次序相同 * 若输人的字符为大写字母,输出的第一个数字与其在字母表中的次序相同 * 以上情况均不会出现 (二) ![image](/upload/106.55.101.120/20250403/LhTbnQrHUewoaTa0gAcwb.png) ■判断题 22. 上述代码中,第 13 行、第 14 行双重循环的次序先 i 后 j 改为先 j 后 i,输出结果不变。() * 正确 * 错误 23. 上述代码中,第 13 行、第 14 行双重循环中第 10 行的 i = 0 改为 i = 1, 输出结果一定不变。() * 正确 * 错误 24. 若输人数据中,1 ≤ n ≤ 1000,1 ≤ a[i] ≤ 1000000, 则所求答案一定没有溢出。() * 正确 * 错误 ■选择题 25. 当输入的 a[i][j] 全部都是 1 时,输出结果为()。 * 0 * 1 * (y2 - y1) * (x2 - x1) * (y2 - y1 + 1)*(x2 - x1 + 1) 26. 当输人为: ![image](/upload/106.55.101.120/20250403/kjpqe5lN4Paf9Cmhi4fkP.png) 输出为()。 * 4 * 22 * 25 * 33 27. 上述代码的时间复杂度为()。 * O(n * n) * O(n * n * q) * O(q) * O(max( n * n, q)) (三) ![image](/upload/106.55.101.120/20250403/H-hmM-dXfBt0K0XEWd-1f.png) ■判断题 28. 上述代码实现了求任意两点之间的最短路。() * 正确 * 错误 29. 上述代码中,输人的a[i][j]的最小上界为1,000,000,007。() * 正确 * 错误 30. 去掉“(a[i][j] == MAXL? - 1 : a[i][j])” 中的括号 “()” 后程序仍能正常编译运行。() * 正确 * 错误 ■选择题 31. 上述代码的作用的算法名为()。 * Bellman-Ford * Floyd * SPFA * Dijkstra 32. 上述代码的时间复杂度为()。 * O(n) * O(nlogn) * O($n^2$) * O($n^3$) 33. 若输入数据为: ![image](/upload/106.55.101.120/20250403/cCf-Z8m8FUjtP_5XBb6Ma.png) 输出数据中有()个 -1。 * 0 * 8 * 12 * 13 **三、完善程序(单选题,每小题3分,共计30分)** (一) (区间极值)输人一个正整数 n,以及 n 个正整数组成的序列,输入一个正整数 q,以及 q 组询问,每组询问求区间最大值。 ![image](/upload/106.55.101.120/20250403/FybFlg6MKKKJ_iveBYkwX.png) ![image](/upload/106.55.101.120/20250403/LDkp54vN9834ETBXS9E67.png) 34. (1)处应填()。 * ST[0][i] = a[i] * ST[0][i] = 0 * ST[i][0] = a[i] * ST[i][0] = 0 35. (2)处应填()。 * (1 << i) - 1 * 1 << (i - 1) * (1 << i) + 1 * 1 << (i + 1) 36. (3)处应填()。 * 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]) 37. (4)处应填()。 * floor(log2(D)) * floor(ln(D)) * round(log2(D)) * round(ln(D)) 38. (5)处应填()。 * 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 点,反之亦然。 输出: 输出询问的答案 试补全程序。 ![image](/upload/106.55.101.120/20250403/DEEaptp5vQyfnxNTZmPHd.png) ![image](/upload/106.55.101.120/20250403/7v1BeZZgUtE6kJK6BFwN2.png) ![image](/upload/106.55.101.120/20250403/GnC3XvseYF1JyYCDEEH-S.png) 39. (1)处应填()。 * min(low[u], low[v]) * min(low[u], dfn[v]) * max(low[u], low[v]) * max(low[u], dfn[v]) 40. (2)处应填()。 * stack[top] == u * dfn[u] == low[u] * stack[top] != u * dfn[u] != low[u] 41. (3)处应填()。 * top != 0 * instack[stack[top]]==1 * stack[top] != cnt * stack[top] != u 42. (4)处应填()。 * E[y].push_back(x) * E[x].push_back(y) * E[x].push(y) * E[y].push(x) 43. (5)处应填()。 * dfn[x] == dfn[y] * low[x] == dfn[y] * scc[x] == scc[y] * instack[x] == instack[y]