#781. CSP-J1模拟题2
CSP-J1模拟题2
一、单项选择题(共 15 题,每题 2 分,共计 30 分;每题有且仅有一个正确选项)
- (1047)8 =( )。 {{ select(1) }}
 
- (1011011101)2
 - (11010)5
 - (20213)4
 - (308)16
 
- 若逻辑变量 A、C 为真,B、D 为假,以下逻辑表达式的值为假的是( ) 。 {{ select(2) }}
 
- (B∨C∨D)∨D∧A
 - ((﹁A∧B)∨C)∧﹁B
 - (A∧B)∨﹁(C∧D∨﹁A)
 - A∧(D∨﹁C)∧B
 
- 小恺编写了如下函数,希望计算斐波那契数列 f(n)第 n 项对 10000 取余数的值:
 
int f(int x) {
if(x <= 2)
return 1;
int ans = f(x - 1) + f(x - 2);
ans %= 10000;
return ans;
}
在运行空间限制 128MB、栈空间不超过空间限制、运行时限 1 秒的情况下,在主函数中运行函数 f(12345),则最有可能首先发生什么问题? {{ select(3) }}
- 运行时间超时
 - 栈溢出
 - 访问无效内存
 - 返回错误的答案
 
- 表达式 a+b*(c-d)/e-f 的后缀表达式为( )。 {{ select(4) }}
 
- -+a/*b-c-cdef
 - abcd-*e/+f
 - +ab*-cd/e-f
 - f-e/d-d*b+a
 
- 某个 MV 是一段时长 4 分整的视频文件。它每秒播放 10 帧图像,每帧图像是一幅分辨率为 2048×1152 像素(长宽比 16:9)的 32 位真彩色图像,其画面没有被压缩。这个视频没有音频。这个视频文件大约需要占用多大的存储空间?( )。 {{ select(5) }}
 
- 21 GiB
 - 27 GiB
 - 168 GiB
 - 2 GiB
 
- 
下图是一棵二叉树,它的后序遍历是 ( )。

{{ select(6) }}
 
- ABDEFC
 - DBEFAC
 - DFEBCA
 - ABCDEF
 
- 五个本质不同的点在没有重边或者自环的情况下,组成不同的无向图的个数是 ( )? {{ select(7) }}
 
- 10
 - 1024
 - 15
 - 120
 
- 设元素 a,b,c,d,e,f 依次入栈,则下列不合法的出栈序列为( )? {{ select(8) }}
 
- d,c,b,e,f,a
 - f,e,d,c,b,a
 - c,d,f,e,b,a
 - e,d,b,a,f,c
 
- 同时扔出 3 枚完全相同的六面骰子,每个骰子上有 1 到 6 的数字。将得到的点数排序后,有( )种不同的结果? {{ select(9) }}
 
- 208
 - 56
 - 216
 - 120
 
- 在编程时(使用任一种高级语言,不一定是 C++),如果需要从磁盘文件中输入一个很大的二维数组(例如 1000*1000 的 double 型数组),按行读(即外层循环是关于行的)与按列读(即外层循环是关于列的)相比,在输入效率上 ( )。 {{ select(10) }}
 
- 没有区别
 - 按行读的方式更高
 - 按列读的方式更高
 - 取决于数组的存储方式
 
- 不考虑稳定性,下列排序方法中平均时间复杂度最大的是 ( )。 {{ select(11) }}
 
- 插入排序
 - 希尔排序
 - 归并排序
 - 快速排序
 
- 将数组 12,23,-1,19,117,-103,79,602 中的元素按从大到小的顺序排列,每次可以交换任意两个元素,最少需要交换( )次 {{ select(12) }}
 
- 4
 - 5
 - 6
 - 7
 
- 3 名男生和 3 名女生围成一个圈,男生和男生不相邻,女生和女生不相邻。如果两个围成的圈经过旋转可以重合,则视为同一种方案。请问一共有几种方案? {{ select(13) }}
 
- 18
 - 15
 - 12
 - 9
 
- 以下关于 C++字符串的说法,错误的是( )。 {{ select(14) }}
 
- 定义 string 类型的字符串时,不需要预先确定它的最大长度。
 - 字符数组和 string 类型的字符串是可以相互转化的。
 - 定义字符数组 char a[100] 时并从键盘读入字符串,则读入的字符串长度不能超过 99。
 - 定义一个字符串 string s 后,获得它长度的方式就是 strlen(s)。
 
- 中国计算机学会成立于( )年。 {{ select(15) }}
 
- 1961
 - 1962
 - 1971
 - 1972
 
二、阅读程序(程序输入不超过数组或字符串定义的范围;判断题正确填√,
错误填×;除特殊说明外,判断题 2 分,选择题 3 分,共计 40 分)

已知,𝟏 ≤ 𝒏 ≤ 𝟏𝟎 𝟔 , 𝟏 ≤ 𝒂𝒊 ≤ 𝟏𝟎 𝟔。完成下面的判断题和单选题:
⚫ 判断题
- solve2 函数实现了选择排序。( ) {{ select(16) }}
 
- 正确
 - 错误
 
- solve1 函数的时间复杂度为 𝑂(𝑛 + 𝑉),其中 𝑉 指的是 𝑎𝑖 的最大值。( ) {{ select(17) }}
 
- 正确
 - 错误
 
- 当输入数据为: 7 2 3 5 7 1 4 6 时,solve2 函数中的变量 cnt最终值为 9。( ) {{ select(18) }}
 
- 正确
 - 错误
 
- 若将 solve2 函数中的双斜杠全部移除,不会影响输出结果。( ) {{ select(19) }}
 
- 正确
 - 错误
 
⚫ 单选题
- 下列哪组数据,会使得 solve1 函数与 solve2 函数的输出结果不同?( )(假设已经输入了 𝑛 = 8)。 {{ select(20) }}
 
- 1 10 100 1000 10000 888 8888 88888
 - 6321 158987 16305 68486 50556 847 156505 15610
 - 777 888 999 888 777 888 999 666
 - 999993 999994 999995 999996 999997 999998 999999 1000000
 
- 若要使得 solve1 和 solve2 函数的输出结果相同,则应当修改程序中的哪一处? {{ select(21) }}
 
- ①
 - ②
 - ③
 - ④
 

输入保证 t 的长度不大于 s 的长度,且两字符串均只含有大小写字母,不是空串,type = 1,2,3,完成下面的判断题和单选题:
⚫ 判断题
- 将程序中所有的比较运算符小于号 (<) 改为不等于号 (!=),则程序对所有符合要求的输入的输出结果不变.( ) {{ select(22) }}
 
- 正确
 - 错误
 
- 当输入为 1 xyz abcd 时,程序的输出为 xyzd。 ( )
 
{{ select(23) }}
- 正确
 - 错误
 
- 程序在输入为 1 xyz abcd 时的输出与输入为 2 xyz abcd 的输出相同。 ( ) {{ select(24) }}
 
- 正确
 - 错误
 
- 将程序第 25~28 行的 while 循环替换为 do-while 循环(判断条件和循环体不变),则程序对同一合法输入的输出结果一定不变。( ) {{ select(25) }}
 
- 正确
 - 错误
 
⚫ 单选题
- (2 分)若将程序第 13 行改为 for (int i = 0; i < strlen(t);++i) s[i] = t[i];,且已知输入的 type 一定为 1 的情况下,用𝑛 表示 𝑠 的长度,𝑚 表示 𝑡 的长度,则程序的时间复杂度为( )。 {{ select(26) }}
 
- Θ(𝑛 + 𝑚)
 - Θ(𝑛 + 𝑚2 )
 - Θ(𝑛 2 + 𝑚)
 - Θ(𝑛 2 + m2 )
 
- 给程序分别输入选项 ( ) 的两组输入数据,得到的输出不同。 {{ select(27) }}
 
- 1 ab abc 和 3 ab abc
 - 1 AB ABC 和 3 AB ABC
 - 1 de fgh 和 3 de fgh
 - 1 DE FGH 和 3 DE FGH
 

以下程序的输入数据的绝对值均不超过𝟏𝟎 𝟑。完成下面的判断题和单选题:
⚫ 判断题
- 存在一种合法的输入数据,使得运行程序时,某次 find_down 函数的返回值是 −1。( ) {{ select(28) }}
 
- 正确
 - 错误
 
- 该程序的时间复杂度为 Θ(𝑛 2𝑚2 )。( )
 
{{ select(29) }}
- 正确
 - 错误
 
- 对于任意 𝑢 ∈ [0,6),「先执行 front_rotate(u),再执行right_rotate(u)」,与「先执行 right_rotate(u),再执行front_rotate(u)」,最终 𝑢 的值相同。( ) {{ select(30) }}
 
- 正确
 - 错误
 
⚫ 单选题
- 将 anchorX、anchorY、anchorZ 依次更换为( )时,对于全部合法数据,与改变之前的输出结果无异。
 
{{ select(31) }}
- Left、Front、Down
 - Left、Up、Front
 - Left、Down、Back
 - Down、Right、Front
 
- ( 2 分)对于以下的输入数据,输出结果为 ( )。
 
5 5
2 8 15 1 10
5 19 19 3 5
6 6 2 8 2
12 16 3 8 17
12 5 3 14 13
1 1 1 1 1 1
{{ select(32) }}
- 95
 - 97
 - 94
 - 103
 
- ( 2 分)对于以下的输入数据,输出结果为 ( )。
 
2 5
2 8 15 3 10
5 19 19 3 5
1 2 3 4 5 6
{{ select(33) }}
- 194
 - 157
 - 193
 - 201
 
三、完善程序(单选题,每小题 3 分,共计 30 分)
- (支付问题)有 n 种纸币,其中第 i 种纸币的面值为 ai 元。每种纸币只有一张。求能支付多少种金额(不包括 0 元)。数据范围满足 n≤200, ai的总和不超过 5000。
试补全程序。

 
- ① 处应填( )。 {{ select(34) }}
 
- n += a[i]
 - m += a[i]
 - n = a[i]
 - m = a[i]
 
- ② 处应填( )。 {{ select(35) }}
 
- f[0] = 1
 - f[1] = 1
 - a[0] = 1
 - a[1] = 1
 
- ③ 处应填( )。 {{ select(36) }}
 
- for (int j = a[i]; j <= n; j++)
 - for (int j = n; j >= a[i]; j--)
 - for (int j = a[i]; j <= m; j++)
 - for (int j = m; j >= a[i]; j--)
 
- ④ 处应填( )。 {{ select(37) }}
 
- f[j - 1] + 1
 - f[j - a[i]] + 1
 - f[j] || f[j - a[i]]
 - f[j] && f[j - a[i]]
 
- ⑤ 处应填( )。 {{ select(38) }}
 
- f[i]
 - f[i - 1]
 - f[i] == f[i + 1]
 - f[i] == f[i - 1]
 
- (凑出 17)给定 𝑛(1 ≤ 𝑛 ≤ 20) 个互不相同的正整数 𝑎1, 𝑎2, … 𝑎𝑛 (1 ≤ 𝑎𝑖 ≤109 ),将之排成一行。你需要在每个 𝑎𝑖 前加上一个加号(+)或减号(-),使这 𝑛 个数字组成一个算式。请问是否存在一种添加符号的方案,使该算式的值为 17?如果存在,请输出 Yes,否则输出 No。 例如,给定 𝑛 = 5, 𝑎1 = 1, 𝑎2 = 4, 𝑎3 = 5, 𝑎4 = 9, 𝑎5 = 8,则 −𝑎1 − 𝑎2 + 𝑎3 +𝑎4 + 𝑎5 = 17。
 
提示:使用穷举法解决这个问题。
试补全程序。

- ① 处应填( )。 {{ select(39) }}
 
- (s >> p) & 1
 - (s << p) & 1
 - s & (1 << p) & 1
 - s & (1 >> p) & 1
 
- ② 处应填( )。 {{ select(40) }}
 
- int i = 0; i <= n; ++i
 - int i = 1; i <= n; ++i
 - int i = 0; i < n; ++i
 - int i = 1; i < n; ++i
 
- ③ 处应填( )。 {{ select(41) }}
 
- 1 << n
 - (1 << n) | 1
 - (1 << n) + 1
 - (1 << n) -1
 
- ④ 处应填( )。 {{ select(42) }}
 
- int sum = 0
 - unsigned long long sum = 0
 - unsigned short sum = 0
 - unsigned int sum = 0
 
- ⑤ 处应填( )。 {{ select(43) }}
 
- sum = a[j] + sum
 - sum = a[j] - sum
 - sum = -a[j] + sum
 - sum = -a[j] - sum
 
Statistics
Related
In following contests: