阶段检测(第三、四章) 一、 选择题(本大题共12小题,每小题列出的四个备选项中只有一个是符合题目要求的) 1. 有如下Python程序段: s="2022 Hope To Get Out Of The Epidemic" t="" for i in s: if i<"a" or i>"z": t="" t=i+t print(t) 该程序运行后,最后显示的内容是( A ) A. cimedipE B. cimedip C. cimed D. cime 【解析】 该程序中语句if i<"a" or i>"z"和t=""的功能是当字符i为非小写字母时,变量t就清空。因此在“Epidemic”出现前,变量t中的内容为空。这样变量t中最后的内容为“Epidemic”的重新组合。语句t=i+t的功能就是将“Epidemic”进行逆向组合。A正确。 2. 有后缀表达式“13 + 2 * 3 +2 *”,现利用栈计算该表达式:从左向右扫描,遇到数字时,数字入栈;遇到运算符时,两个元素出栈,用运算符计算,所得结果入栈,如此反复操作,直到扫描结束,栈顶元素是( B ) A. 21 B. 22 C. 23 D. 24 【解析】 本题考查栈的相关操作。依题意可得表达式为:((1+3)*2+3)*2=22,B正确。 3. 有如下Python程序段: import random a=[random.randint(1,5) for i in range(5)] q=[1,3,5,2,1,0] head,tail=0,len(q)-1 i=0 while head!=tail: c=0 while q[head]!=a[i] and c<(tail-head)%len(q): q[tail]=q[head] head=(head+1)%len(q) tail=(tail+1)%len(q) c+=1 if a[i]==q[head]: head=(head+1)%len(q) i+=1 else: break print((tail-head)%len(q)) 执行该程序段后输出的值为3,则列表a的值不可能是( A ) A. [3, 2, 1, 4, 1] B. [5, 2, 4, 1, 1] C. [1, 3, 4, 2, 3] D. [3, 5, 5, 3, 1] 【解析】 本题考查随机数及循环队列知识。本题运算量较大,重点考查了学生的逻辑判断及模拟运算能力。由代码可知,最初数组a产生5个1~5之间的随机整数。最后(tail-head)%len(q)的结果为3,意味着最终循环队列q中的元素数量为3。将各选项中的数据代入模拟可知,A中的数据最终队列中的元素数量只能为2,最终其他参数是head=5,tail=1,c=0,i=3,符合题意。B、C、D的最终输出都是3,均不符合题意。 4. 设栈S初始状态为空,元素a,b,c,d,e,f依次入栈,出栈顺序为b,d,c,f,e,a,那么栈容量至少应该是( D ) A. 6 B. 5 C. 4 D. 3 【解析】 本题考查栈的基本操作。出栈顺序为b,d,c,f,e,a,则a入→b入→b出→c入→d入→d出→c出→e 入→f入→f出→e出→a 出,因此栈容量至少是3。D正确。 5. 若字符串s1="pYTHON学习",有如下Python代码段: s2="";i=0 while i=p[-1]: p+=i el ... ...
~~ 您好,已阅读到文档的结尾了 ~~