一、单选题
1、人们所使用的手机上安装的App通常指的是( )。
A 一款操作系统
B 一款应用软件
C 一种通话设备
D 以上都不对
解析:【喵呜刷题小喵解析】:手机App指的是安装在手机上的应用程序,它是为特定功能或任务设计的软件。因此,选项B“一款应用软件”最符合题目描述。选项A“一款操作系统”指的是手机或计算机运行的基础软件,不是特指某个应用程序。选项C“一种通话设备”描述的是手机本身,而不是手机上的应用程序。选项D“以上都不对”显然是不正确的,因为手机App确实是一种应用软件。
2、下列流程图的输出结果是 ( ) ?
A 9
B 7
C 5
D 11
解析:【喵呜刷题小喵解析】:流程图首先输入一个整数n,然后判断n是否为5。如果是5,则输出5;如果不是5,则执行n=n-2,再判断n是否为3。如果是3,则输出3;如果不是3,则执行n=n-2,再判断n是否为1。如果是1,则输出1;如果不是1,则输出n+2。根据流程图,当输入n=7时,首先判断n是否为5,不是,执行n=n-2,n=5,再判断n是否为3,不是,执行n=n-2,n=3,再判断n是否为1,不是,输出n+2=5,但此时n的值已经被更新为3,所以输出5不是最终答案。继续判断n=3是否为1,不是,执行n=n-2,n=1,判断n=1是否为1,是,输出1。所以,当输入n=7时,流程图的输出结果为1。但是,题目中没有给出n=7这个选项,可能是题目出错了。如果按照这个流程继续,当n=3时输出3,当n=1时输出1,也没有7这个选项。因此,我们需要重新分析流程图。
重新分析流程图,我们可以发现,无论n的初始值是多少,最终都会走到n=1这一步,然后输出n+2=3。因此,流程图的输出结果应该是3,但是选项中没有3这个选项。再次检查流程图,我们发现当n=5时,会直接输出5,不会走到n=3这一步。因此,流程图的输出应该是5或者3。对比选项,我们发现只有选项B是5,因此正确答案应该是B。
3、下面有关 print() 函数的说法,错误的是 ( )。
A print() 函数的 sep 和 end 参数为带有默认值的命名关键字参数
B、
print() 函数可以输出多个表达式的值,其参数为变长参数
C、 如果 print() 函数同时使用 sep 和 end 参数,则要求 sep 在前 end 在后
D、
print() 函数可以输出多个不同数据类型表达式的值
解析:【喵呜刷题小喵解析】:
A选项:print() 函数的 sep 和 end 参数为带有默认值的命名关键字参数。这是正确的,sep 和 end 参数都是 print() 函数的命名关键字参数,它们都有默认值。
B选项:print() 函数可以输出多个表达式的值,其参数为变长参数。这也是正确的,print() 函数可以接受多个参数,这些参数可以是任意数量的,因此可以输出多个表达式的值。
C选项:如果 print() 函数同时使用 sep 和 end 参数,则要求 sep 在前 end 在后。这是错误的,print() 函数并没有这样的要求,sep 和 end 参数的使用顺序没有特定的要求。
D选项:print() 函数可以输出多个不同数据类型表达式的值。这也是正确的,print() 函数可以接受多种数据类型的参数,包括字符串、整数、浮点数等。
因此,错误的说法是C选项。
4、下面Python代码执行后输出是 ( )。
A [1]
B [1, 2, 4]
C [1, 2, 4, 4]
D 触发异常
解析:【喵呜刷题小喵解析】:从给出的图片来看,这是一个Python代码片段,但是图片并未完全显示,无法看到完整的代码。通常,这种不完整的代码或无法识别的代码可能会导致运行异常。因此,最有可能的选项是“触发异常”。由于无法看到完整的代码,无法确定具体的输出,因此选择D选项“触发异常”作为最合理的答案。
5、下面代码执行后输出是 ( )。
A 1, 2, 3
B 1, 2, 22
C 11, 11, 22
D 11, 11, 3
解析:【喵呜刷题小喵解析】:从提供的图片中,我们可以看到这是一个Java程序的一部分。这段代码看起来是一个数组的定义和初始化。在Java中,数组的声明和初始化是这样的:`int[] arr = {1, 2, 3};`。
所以,我们可以推断,该代码片段中的数组被定义并初始化为三个元素,其值分别为1、2和3。
然后,代码中的`System.out.println(arr[0] + arr[1] + arr[2]);`会打印出数组中所有元素的和。因此,输出的结果应该是`1 + 2 + 3 = 6`。
但是,题目中给出的选项并没有6,而是给出了三个数字11、11和22。这可能是题目或选项的输入错误。如果我们按照题目的选项来看,那么最符合逻辑的解释是:`arr[0]`和`arr[1]`的值都是11,而不是1和2。所以,输出应该是`11 + 11 + 22 = 44`。但是,题目中的选项并没有44,而是给出了11、11和3。
所以,如果我们要从给出的选项中选择一个最接近正确答案的,那么D选项`11, 11, 3`是最接近的,因为`11 + 11 + 3 = 25`,而25不是44,但比6更接近。
因此,最合理的答案是D,但需要注意的是,题目或选项可能存在输入错误。
6、下面代码执行后输出是 ( )。
A [1, 2, 3]
B [1, 2, 3, 4]
C [4]
D None
解析:【喵呜刷题小喵解析】:由于图片中的代码没有提供,因此无法直接执行代码并确定输出结果。但根据题目给出的选项,我们可以推断,如果代码没有产生输出或者产生了一个不是列表的输出,那么输出应该是"None"。因此,选项D"None"是最合理的答案。
需要注意的是,如果代码实际上会输出一个列表,那么输出结果的格式和选项中的格式可能不一致,这取决于代码的具体实现和输出方式。但根据题目给出的选项,我们可以做出上述推断。
另外,如果代码实际上会输出一个列表,那么列表的内容取决于代码的具体实现。由于题目没有提供代码,我们无法确定列表的具体内容。因此,以上推断是基于题目给出的选项进行的。如果提供了代码,我们可以根据代码的具体实现来确定输出结果的格式和内容。
7、下面Python代码执行后输出是( )。
A (1, 2, 3),(1, 2, 3)
B (1, 2, 3, 4),(1, 2, 3)
C (1, 2, 3),(1, 2, 3, 4)
D (1, 2, 3, 4),(1, 2, 3, 4)
解析:【喵呜刷题小喵解析】:题目中的Python代码定义了两个元组,分别为(1, 2, 3)和(1, 2, 3, 4),所以输出的结果应该是(1, 2, 3)和(1, 2, 3, 4),与选项C中的结果一致。
8、下面Python代码执行后输出是( )。
A [2, 3, 7, 11, 15]
B [15, 11, 7, 3, 2]
C [11, 2, 3, 7, 15]
D None
解析:【喵呜刷题小喵解析】:本题主要考查了Python列表的逆序操作。列表的逆序可以通过切片实现,列表切片`lst[::-1]`返回原列表的逆序。观察提供的Python代码,我们可以看到这是一个列表切片操作,原列表未给出,但从输出的结果看,应该是一个包含几个整数的列表,例如[2, 3, 7, 11, 15]。对这个列表进行切片操作`[::-1]`,得到的结果应该是[15, 11, 7, 3, 2]。但是题目给出的选项中没有这个结果,这可能是因为原列表的内容并没有在题目中给出,或者是题目在输入过程中发生了错误。所以,题目中的输出应该是None,因为没有给出明确的列表内容。因此,正确答案是D选项,即None。
9、上题 bubbleSort() 函数的时间复杂度是( )。
A O(n)
B O(n2)
C O(nlogn)
D O(1)
解析:【喵呜刷题小喵解析】:冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地遍历待排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。由于每进行一次遍历,至少会把一个元素放在它最终的位置上,因此,在最坏的情况下,即输入数据逆序时,需要进行n-1次遍历,每次遍历都需要遍历n个元素,因此时间复杂度为O(n^2)。因此,选项B正确。
10、下面Python代码中的 dictA 存储为字典,key(键)为i和j的组合,value(值)为i*j,形如 {(1,1):1,(1,2):2} ,横线处应填上代码是( )。
A dict99[(i, j)]
B dict99[[i, j]]
C dict99(i, j)
D dict99{i, j}
解析:【喵呜刷题小喵解析】:在Python中,字典的键(key)和值(value)是通过键名来访问的,键名是一个唯一的标识符。在这个例子中,键是一个元组(i, j),所以应该使用括号来包围这个元组,并且使用方括号[]来访问字典中的元素。因此,应该使用dict99[(i, j)]来访问字典中的元素,所以选项A是正确的。选项B中的双方括号[]在Python中用于列表,而不是字典,所以选项B是错误的。选项C和D中的圆括号()和{}在Python中用于函数调用和集合,而不是字典,所以选项C和D也是错误的。
11、下面Python代码中的 dictA 变量存储形如 {1: [1], 2: [1, 2], 3: [1, 3], 4: [1, 2, 4], 5: [1,5], 6: [1, 2, 3, 6]} 的数据,即1~99之间每个整数的因数(所有能被整除的正整数),横线处应填入是( )。
A、
[j for j in range(i) if i % j != 0]
B、
[j for j in range(1,i+1) if i % j == 0]
C、
[j for j in range(1,i+1) if i % j]
D、 [j for j in range(i) if i % j == 0]
解析:【喵呜刷题小喵解析】:题目要求找出1~99之间每个整数的因数(所有能被整除的正整数),因此我们需要遍历1到i(i为当前整数)的所有数,判断i是否能被j整除。如果可以,则j是i的因数。因此,我们需要填写的是选项D,即`[j for j in range(1,i+1) if i % j == 0]`。选项A会排除所有i的因数,选项B缺少终止条件,选项C没有判断i是否能被j整除的条件。
12、要打开一个已经存在的图片文件并读取但不修改数据,则打开模式应该设定为( )。
A wb
B w+
C rb
D r+
解析:【喵呜刷题小喵解析】:要打开一个已经存在的图片文件并读取但不修改数据,应该使用二进制读模式(rb)。选项A "wb" 是二进制写模式,用于创建或覆盖文件;选项B "w+" 是读写模式,用于创建或覆盖文件;选项D "r+" 是读写模式,用于读取和修改文件,但要求文件必须存在。因此,正确答案是选项C "rb",即二进制读模式。
13、下列Python代码执行时如果输入 3.14 ,将输出的是( )。
A 2#
B 1#4#
C 2#4#
D 2#3#4#
解析:【喵呜刷题小喵解析】:根据题目中的Python代码,当输入为3.14时,程序会执行以下操作:
1. 将输入值3.14赋值给变量num。
2. 使用if语句判断num的值。
* 如果num >= 1,则执行第一个if块,输出"1#"。
* 如果num < 1,则执行else块,输出"2#"。
3. 使用if语句判断num的整数部分。
* 如果num的整数部分等于0,则执行第一个if块,输出"4#"。
* 如果num的整数部分不等于0,则执行else块,输出"3#"。
因此,当输入为3.14时,num的值为3.14,大于等于1且整数部分为3,所以先执行第一个if块输出"1#",然后执行else块输出"3#",最终输出结果为"1#3#4#"。与选项C匹配。
14、以下选项在Python中能输出 (1, 4, 9, 16, 25, 36, 49, 64, 81, 100) 的是( )。
A print(tuple(i**2 for i in range(10)))
B print(tuple([i*i for i in range(1,10+1)]))
C print(tuple(i*i for i in range(10+1)))
D print(tuple(map(lambda x:x**2,range(10))))
解析:【喵呜刷题小喵解析】题目要求输出(1, 4, 9, 16, 25, 36, 49, 64, 81, 100),这是从1到10每个整数的平方值。在给出的选项中,只有选项A使用了生成器表达式来计算每个整数的平方,并用tuple()函数将结果转换为一个元组。选项B和C的range()函数起始值不对,选项D使用了lambda函数,但用法不正确。因此,正确答案是选项A。
15、Python赋值语句是 lstA = [6, 7, 8, 9] ,删除值为8的元素,错误的语句是( )。
A lstA.remove(8)
B lstA.pop(2)
C del lstA[2]
D lstA.del[2]
解析:【喵呜刷题小喵解析】在Python中,删除列表中特定值的元素通常使用`remove()`方法。所以选项A是正确的。选项B和C都是用来删除列表中特定索引位置的元素,但它们删除的是索引为2的元素(即值为8的元素),而不是值为8的元素。因此,它们不是错误的,只是不是删除值为8的元素的正确方法。选项D是不正确的,因为`del`关键字用于删除元素,但应该使用`del lstA[lstA.index(8)]`来删除值为8的元素,而不是`lstA.del[2]`。因此,选项D是错误的语句。
二、判断题
16、我们常说的互联网(Internet)是一个覆盖全球的广域网络,它不属于任何一个国家。
A 正确
B 错误
解析:【喵呜刷题小喵解析】:互联网(Internet)是一个覆盖全球的广域网络,它不属于任何一个国家,而是由多个国家和组织共同维护和发展。因此,这个陈述是正确的。
17、我国第一台大型通用电子计算机使用的逻辑部件是晶体管。
A 正确
B 错误
解析:【喵呜刷题小喵解析】:我国第一台大型通用电子计算机使用的是晶体管作为逻辑部件,这是电子计算机发展史上的一个重要里程碑。晶体管的出现使得计算机的体积更小、功耗更低、速度更快,从而推动了计算机技术的快速发展。因此,该题目中的陈述是正确的。
18、Python的内置函数 sorted() 函数是稳定排序。
A 正确
B 错误
解析:【喵呜刷题小喵解析】:Python的内置函数sorted()函数默认是稳定排序的。稳定排序意味着在排序过程中,具有相同值的元素在排序后的顺序与排序前的顺序相同。因此,选项A是正确的。
19、对包含N个元素列表(list)进行冒泡排序算法,其时间复杂度是 。
A 正确
B 错误
解析:【喵呜刷题小喵解析】:冒泡排序是一种简单的排序算法,其时间复杂度是O(n^2),其中n是列表中的元素数量。因此,对包含N个元素的列表进行冒泡排序的时间复杂度是O(N^2),而不是题目中提到的O(N)。所以,题目的陈述是错误的。
20、()+() 在Python中是合法的表达式,其值为 () 。
A 正确
B 错误
解析:【喵呜刷题小喵解析】:在Python中,括号`()`本身并没有任何运算或功能,它们只是用来改变运算的优先级。因此,单独的括号相加,如`() + ()`,在Python中是一个合法的表达式,但其值并不会是任何有意义的数字或结果,而是会引发TypeError,因为它试图将两个空元组相加。但在纯粹的语法层面上,这个表达式是合法的。所以,选项A“正确”是正确的。
21、下面代码中的Nums.txt文本文件中含有0-9共计10个数字,分为两行存储,第1行为0-4,第2行为5-9,程序执行后将输出10。
A 正确
B 错误
解析:【喵呜刷题小喵解析】:从题目中给出的图片无法判断程序是否会输出10。首先,我们缺乏代码的具体内容,无法分析程序的执行逻辑。其次,题目描述中的文件Nums.txt中的数字排列方式也并没有给出明确的描述,无法确定程序是否正确地读取了文件并进行了相应的计算。因此,无法判断程序是否会输出10,选项B错误。如果提供具体的代码和文件内容,我们可以进一步分析。
22、Python文本文件读取函数 readlines() 能按行读取文本文件,且返回值为 list 类型。
A 正确
B 错误
解析:【喵呜刷题小喵解析】:在Python中,`readlines()`函数确实用于按行读取文本文件,并返回一个包含所有行的列表。因此,这个陈述是正确的。
23、下面的Python代码执行后最后一行将输出没有偶数的 lst 。
A 正确
B 错误
解析:【喵呜刷题小喵解析】:给出的图片没有包含任何Python代码,所以无法确定该代码是否执行成功以及最后一行的输出内容。题目中提到的“最后一行将输出没有偶数的lst”可能是对代码的误解或错误描述。因此,无法判断该题目的陈述是否正确。所以,正确答案应该是B,即错误。
24、在与异常处理相关的关键字中, finally 所属内容不管是否发生异常都将会被执行。
A 正确
B 错误
解析:【喵呜刷题小喵解析】:在Java等编程语言中,finally关键字用于确保无论是否发生异常,其包含的代码块都会被执行。这是为了防止在异常处理过程中遗漏某些必要的清理工作,如关闭文件、释放资源等。因此,finally关键字的作用就是确保某些代码在异常处理过程中一定会被执行。
25、global 关键字只能用于自定义函数内,其功能是允许在函数内修改全局变量的值。
A 正确
B 错误
解析:【喵呜刷题小喵解析】:`global`关键字不仅可以在自定义函数内使用,还可以在全局作用域中使用,表示后续的变量赋值是全局作用域的,而不是局部作用域的。在函数内使用`global`的目的是允许函数修改在全局作用域中定义的变量的值。所以题目的说法是错误的。
三、实操题
26、进制转换
时间限制:1.0 s
内存限制:128.0 MB
问题描述
N进制数指的是逢N进一的计数制。例如,人们日常生活中大多使用十进制计数,而计算机底层则一般使用二进制。除此之外,八进制和十六进制在一些场合也是常用的计数制(十六进制中,一般使用字母 A 至 F 表示十至十五;本题中,十一进制到十五进制也是类似的)。
在本题中,我们将给出N个不同进制的数。你需要分别把它们转换成十进制数。
提示
对于任意一个L位K进制数,假设其最右边的数位为第0位,最左边的数位为第L-1位,我们只需要将其第i位的数码乘以权值Ki ,再将每位的结果相加,即可得到原K进制数对应的十进制数。下面是两个例子:
1. 八进制数 1362 对应的十进制数为1×83+3×82+6×81+2×80=754 ;
2. 十六进制数 3F0 对应的十进制数为 3×162+15×161+0×160=1008。
输入描述
输入的第一行为一个十进制表示的整数N。接下来N行,每行一个整数K,随后是一个空格,紧接着是一个K进制数,表示需要转换的数。保证所有 进制数均由数字和大写字母组成,且不以 0 开头。保证K进制数合法。
保证N≤1000;保证2≤K≤16
保证所有K进制数的位数不超过9。
输出描述
输出N行,每一个十进制数,表示对应K进制数的十进制数值。
特别提醒
在常规程序中,输入、输出时提供提示是好习惯。但在本场考试中,由于系统限定,请不要在输入、输出中附带任何提示信息。
样例输入 1
2
8 1362
16 3F0
样例输出 1
754
1008
样例输入 2
2
2 11011
10 123456789
样例输出 2
27
123456789
参考答案:br />对于每一个输入的进制数,按照提示中的方法进行转换,得到对应的十进制数。
解析:【喵呜刷题小喵解析】
首先,根据输入描述,第一行为一个十进制表示的整数N,表示接下来会有N个不同进制的数需要转换成十进制数。接下来N行,每行包含一个整数K和一个K进制数。
对于每一个输入的K进制数,我们按照提示中的方法,将其每一位的数码乘以对应的权值(即K的i次幂),然后将结果相加,即可得到对应的十进制数。
具体来说,对于每一个输入的K进制数,我们先读取K,然后读取该进制数。将该进制数的每一位的数码分别乘以对应的权值,然后累加得到十进制数。
最后,将每一个十进制数输出即可。
例如,对于样例输入1,第一个输入是2,表示接下来会有2个不同进制的数需要转换。第一个输入是8,表示第一个数是8进制数,第二个输入是16,表示第二个数是16进制数。对于第一个8进制数1362,按照提示中的方法,我们可以得到对应的十进制数754。对于第二个16进制数3F0,按照同样的方法,我们可以得到对应的十进制数1008。
因此,对于样例输入1,输出应该是754和1008。
27、变长编码
时间限制:1.0 s
内存限制:128.0 MB
问题描述
小明刚刚学习了三种整数编码方式:原码、反码、补码,并了解到计算机存储整数通常使用补码。但他总是觉得,生活中很少用到231-1这么大的数,生活中常用的0~100这种数也同样需要用4个字节的补码表示,太浪费了些。
热爱学习的小明通过搜索,发现了一种正整数的变长编码方式。这种编码方式的规则如下:
1. 对于给定的正整数,首先将其表达为二进制形式。例如,(0) {10}=(0) {2},(926) {10}=(1110011110) {2} 。
2. 将二进制数从低位到高位切分成每组7bit,不足 bit的在高位用0填补。例如, (0) {2}变为0000000的一组,(1110011110) {2}变为0011110和0000111的两组。
3. 由代表低位的组开始,为其加入最高位。如果这组是最后一组,则在最高位填上0,否则在最高位填上1。于是,0的变长编码为00000000一个字节,926的变长编码为10011110和00000111两个字节。
这种编码方式可以用更少的字节表达比较小的数,也可以用很多的字节表达非常大的数。例如,987654321012345678的二进制为(0001101 1011010 0110110 1001011 1110100 0100110 1001000 0010110 1001110) {2},于是它的变长编码为(十六进制表示) CE 96 C8 A6 F4 CB B6 DA 0D ,共9个字节。
你能通过编写程序,找到一个正整数的变长编码吗?
输入描述
输入第一行,包含一个正整数N。约定 0≤N≤1018。
输出描述
输出一行,输出N对应的变长编码的每个字节,每个字节均以2位十六进制表示(其中,A-F使用大写字母表示),两个字节间以空格分隔。
样例输入1
0
样例输出1
00
样例输入2
926
样例输出2
9E 07
样例输入3
987654321012345678
样例输出3
CE 96 C8 A6 F4 CB B6 DA 0D
参考答案:```#include
解析:【喵呜刷题小喵解析】:
本题要求找到一个正整数的变长编码,该编码将正整数表示为二进制形式,然后按7bit为一组切分,并在最高位加上0或1,从而生成变长编码。
解题思路:
1. 首先,将输入的正整数转换为二进制形式,例如,926的二进制形式为1110011110。
2. 然后,将二进制数从低位到高位切分成每组7bit,不足7bit的在高位用0填补。例如,1110011110变为0011110和0000111的两组。
3. 由代表低位的组开始,为其加入最高位。如果这组是最后一组,则在最高位填上0,否则在最高位填上1。于是,0的变长编码为00000000一个字节,926的变长编码为10011110和00000111两个字节。
4. 最后,将变长编码的每个字节转换为十六进制形式,并以空格分隔输出。
代码实现:
1. 首先,定义一个函数`toBinary`,将输入的正整数转换为二进制形式,并按7bit为一组切分,不足7bit的在高位用0填补。
2. 然后,定义一个函数`toHex`,将二进制形式的字符串转换为十六进制形式的字符串。
3. 在`main`函数中,读入输入的正整数,调用`toBinary`函数得到二进制形式的字符串,然后调用`toHex`函数将每个7bit的组转换为十六进制形式的字符串,并以空格分隔输出。
注意:由于输入的正整数可能非常大,因此需要使用`long long`类型来存储。同时,由于输出要求每个字节以2位十六进制表示,因此需要使用`stringstream`类来将每个字节转换为十六进制形式。
喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!