第08讲 字符串、队列与栈(专项训练)(浙江专用)2027年高考信息技术一轮复习讲练测

2026-10-22
| 2份
| 20页
| 4人阅读
| 0人下载

内容正文:

第08讲 字符串、队列和栈 目录 01 课标达标练 题型01 字符串、栈与队列对点选择 题型02 代码挖空填空 02 核心突破练 03 真题溯源练 01 字符串、栈与队列对点选择 考向 1:字符串基础 1. 在 Python 中,字符串s="ZheJiang2026",下列表达式执行结果为"Jiang"的是() A. s[4:8] B. s[5:9] C. s[-8:-4] D. s[4:-5] 2.有 Python 程序段: s = "HangZhou" res="" for ch in s: if ch >= "n": res = res + ch.upper() else: res += ch.lower() 执行结束后 res 的值为() A. hanGzHOU B. hangzhou C. hanGZHOU D. HANGZHOU 考向 2:栈、队列概念辨析 3.下列关于栈与队列说法正确的是() A. 队列是后进先出,栈是先进先出 B. 递归函数调用时,系统使用队列保存函数现场 C. 栈只能在一端进行插入和删除操作 D. 队列删除元素在队尾,插入元素在队首 4. 现有队列 Q,队首到队尾元素:["a","b","c","d"];约定:T:队首元素出队;R:队首元素出队后重新加入队尾。执行操作序列T R T R T,最终队列队首元素是() A. c B. d C. b D. a 考向 3:栈队列进出模拟 5. 已知入栈序列:1,2,3,4,下列不可能是合法出栈序列的是() A. 2,1,4,3 B. 1,4,2,3 C. 3,2,4,1 D. 2,3,1,4 6. 栈初始为空,依次执行:push (2),push (5),pop (),push (7),pop (),push (9),pop (),此时栈内元素为() A. [2] B. [5,7] C. [2,9] D. [7,9] 02 代码挖空填空 7. 统计字符串大写英文字母的个数。请补全划线①。 s = input("请输入字符串:") cnt = 0 for ch in s: if ① : cnt += 1 print("大写字母数量:",cnt) ①处合适的代码:________ 8. 利用栈检查括号是否匹配。输入只包含(和),匹配输出 True,不匹配 False。补全划线①②。 st = [] s = input() flag = True for ch in s: if ch == '(': st.append(ch) else: if len(st)==0: flag = False else: ① #出栈 if ② : flag = False print(flag) ①________;②________ 9. 【新情境・快递单号字符串处理|选择题,改编自宁波十校高三联考】 新考法:字符串切片 + 逆向遍历结合 快递单号规则:单号总长度 10 位;第 3‑6 位代表网点编码;最后两位代表校验码。 s = "KD24083791",下列能提取网点编码的代码是() A. s[2:6] B. s[3:7] C. s[-8:-4] D. s[2:-2] 10.【新情境・图书馆还书队列|选择题,改编新阵地联盟 2026 届联考】 新考法:队列与条件出队结合,不是单纯固定 T/R 操作 图书馆还书队列,队首到队尾[B01,B02,B03,B04]。规则:遇到编号末尾为偶数的书直接出队登记;奇数则出队,放到队尾。循环直到队列为空。出队登记顺序是() A. B02 B04 B01 B03 B. B01 B02 B03 B04 C. B02 B01 B04 B03 D. B04 B02 B03 B01 11.【新设问:字符串变形统计|程序填空】 新考法:遍历字符串,相邻字符比较,统计连续相同字符段的数量。例如输入"aabbbcc",段为aa、bbb、cc,输出段数 = 3。 s = input() if len(s)==0: print(0) else: cnt = 1 for i in range( ① ): if ② : cnt += 1 print(cnt) ①________;②________ 12.【新考法:栈模拟运算|程序填空,改编诸暨高三诊断卷】 实现简易后缀表达式计算,数字入栈;遇到运算符弹出两个数运算,结果压回栈。如后缀"3 4 +"等价3+4=7。 exp = input().split() st=[] for token in exp: if token in "+-*/": b = st.pop() a = st.pop() if token=="+": res = a + b elif token=="-": res = a b elif token=="*": res = a * b else: res = a / b ① else: ② print(st[0]) ①________;②________ 1.【2024 年 1 月浙江选考信息技术 第 8 题|选择题,2 分】21世纪教... 栈 S 从栈底到栈顶的元素依次为 1,2,3,队列 Q 初始为空。约定:U 操作是指元素出栈后入队,H 操作是指元素出队后再入队。经过UUHU系列操作后,队列中队首到队尾的元素依次为() A.2,1,3 B.3,1,2 C.1,3,2 D.2,3,1 2.【2026 年 6 月浙江选考信息技术 第 8 题|选择题,2 分】 栈初始为空,经过一系列入栈、出栈操作后,栈又为空。若元素入栈的顺序为 1,2,3,4,5,6,7,且每个元素入栈 1 次,最后出栈的两个元素为 5 和 2,则对于所有可行的方案,操作过程中栈内元素个数最多为() A.3 B.4 C.5 D.6 3.【2024 年 1 月浙江选考信息技术 第 11 题|选择题,2 分(字符串双指针随机取字符)】21世纪教... 若字符串s的值为"abcde",执行如下程序段后,变量res的值不可能是() from random import randint res = "" i, j = 0, len(s)-1 while i < len(s) and j >= i: if randint(0,1) == 0: #randint(0,1)随机生成0或1 res += s[i] i += 1 else: res += s[j] j -= 1 A."abced" B."aecbd" C."aedbc" D."edcba" 4.【2026 年 1 月浙江选考信息技术 第 10 题|选择题,2 分(字符串循环处理)】学科网 有如下 Python 程序段: c,i="",0 while i<len(s) and t>=0: if s[i]=="e": t -= 1 else: c += s[i] i += 1 若s为"keeper",t为2,执行该程序段后,c的值为() A."k" B."kp" C."kpr" D."kper" 5.【2026 年 6 月浙江选考信息技术 第 14 题|非选择题,10 分,队列 + 缓冲区,完整原题】 在葡萄园监控系统中,为防止网络传输不稳定导致的数据丢失,智能终端采用了缓冲机制:智能终端每隔 60 分钟获取一次传感器数据存入缓冲区,然后将缓冲区中的数据按获取顺序一一上传,上传成功的数据从缓冲区中删除;若上传失败,则随机延时 1 至 10 分钟后重试,但重试过程不得影响数据获取的时间间隔。 请回答下列问题: (1) 若智能终端在某天 8:00,9:00,10:00,11:00 获取的传感器数据依次为 D1,D2,D3,D4,8:30~11:30 网络断开,其他时段数据传输正常,则智能终端在 11:00 以后上传成功的第 2 个数据是________。(2 分) (2) 实现上述功能的部分 Python 程序如下,请在划线处填入合适的代码。 #导入相关库,代码略 from random import randint from time import sleep def trans(data): #将data上传至服务器,上传成功返回1,否则返回0,代码略 pass buf = [] while True: #获取传感器数据,存入变量data中,代码略 buf.append(data) #将传感器数据存入缓冲区 stime = 60 while stime>0 and ① : data = buf[0] state = trans(data) if ② : buf.pop(0) #将上传成功的数据从缓冲区中删除 else: delay = randint(1, 10) #随机生成1到10之间的整数 if delay stime: delay = stime sleep(delay * 60 * 1000) ③ sleep(stime * 60 * 1000) ①________;②________;③________(每空 2 分,共 6 分) 参考答案汇总速查 课标达标练 1.A;2.A;3.C;4.B;5.B;6.A;7."A" <= ch <= "Z";8.①st.pop(),②len(st)!=0 核心达标练 9.A;10.A;11.①1, len(s),②s[i] != s[i1];12.①st.append(res),②st.append(int(token)) 学科网(北京)股份有限公司1 / 17 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $ 第08讲 字符串、队列和栈 目录 01 课标达标练 题型01 字符串、栈与队列对点选择 题型02 代码挖空填空 02 核心突破练 03 真题溯源练 01 字符串、栈与队列对点选择 考向 1:字符串基础 1. 在 Python 中,字符串s="ZheJiang2026",下列表达式执行结果为"Jiang"的是() A. s[4:8] B. s[5:9] C. s[-8:-4] D. s[4:-5] 答案:A 解析:字符串下标从 0 开始。s="Z h e J i a n g 2 0 2 6",索引:0:Z,1:h,2:e,3:J,4:i,5:a,6:n,7:g。s[4:8]取索引 4、5、6、7,得到Jiang。B 取iang;C 取Jiang2;D 取Jiang20。 2.有 Python 程序段: s = "HangZhou" res="" for ch in s: if ch >= "n": res = res + ch.upper() else: res += ch.lower() 执行结束后 res 的值为() A. hanGzHOU B. hangzhou C. hanGZHOU D. HANGZHOU 答案:A 解析:遍历每个字符,字符大于等于 'n' 转为大写,小于 'n' 转小写。 H(小于 n)→h;a→a;n→N;g→g;Z>=n→Z;h>=n→H;o>=n→O;u>=n→U,拼接得到hanGzHOU。 考向 2:栈、队列概念辨析 3.下列关于栈与队列说法正确的是() A. 队列是后进先出,栈是先进先出 B. 递归函数调用时,系统使用队列保存函数现场 C. 栈只能在一端进行插入和删除操作 D. 队列删除元素在队尾,插入元素在队首 答案:C 解析: A 错:栈后进先出,队列先进先出; B 错:递归使用栈保存现场,不是队列; C 对:栈的入栈、出栈都在栈顶(同一端); D 错:队列:队尾插入,队首删除。 4. 现有队列 Q,队首到队尾元素:["a","b","c","d"];约定:T:队首元素出队;R:队首元素出队后重新加入队尾。执行操作序列T R T R T,最终队列队首元素是() A. c B. d C. b D. a 答案:B 解析 初始 Q:a b c d 1.T:a 出队;Q:b c d 2.R:b 出队入队尾;Q:c d b 3.T:c 出队;Q:d b 4.R:d 出队入队尾;Q:b d 5.T:b 出队;Q:d 队首:d。 考向 3:栈队列进出模拟 5. 已知入栈序列:1,2,3,4,下列不可能是合法出栈序列的是() A. 2,1,4,3 B. 1,4,2,3 C. 3,2,4,1 D. 2,3,1,4 答案:B 解析:入栈 1,出栈 1;之后入栈 2、3、4,出栈 4。此时栈内是 2、3,下一个出栈只能是 3,不可能是 2。因此1,4,2,3不可能。 6. 栈初始为空,依次执行:push (2),push (5),pop (),push (7),pop (),push (9),pop (),此时栈内元素为() A. [2] B. [5,7] C. [2,9] D. [7,9] 答案:A 解析 push (2) →栈:[2] push (5) →栈:[2,5] pop () 弹出 5 →栈:[2] push (7) →栈:[2,7] pop () 弹出 7 →栈:[2] push (9) →栈:[2,9] pop () 弹出 9 →栈:[2] 02 代码挖空填空 7. 统计字符串大写英文字母的个数。请补全划线①。 s = input("请输入字符串:") cnt = 0 for ch in s: if ① : cnt += 1 print("大写字母数量:",cnt) ①处合适的代码:________ 答案:"A" <= ch <= "Z" 解析:判断字符是否为大写英文字母,利用字符的 ASCII 码大小比较。 8. 利用栈检查括号是否匹配。输入只包含(和),匹配输出 True,不匹配 False。补全划线①②。 st = [] s = input() flag = True for ch in s: if ch == '(': st.append(ch) else: if len(st)==0: flag = False else: ① #出栈 if ② : flag = False print(flag) ①________;②________ 答案:①st.pop();②len(st)!=0 解析:遇到右括号,如果栈不为空则弹出栈顶左括号;遍历结束,栈不为 0 说明左括号多,括号不匹配。 9. 【新情境・快递单号字符串处理|选择题,改编自宁波十校高三联考】 新考法:字符串切片 + 逆向遍历结合 快递单号规则:单号总长度 10 位;第 3‑6 位代表网点编码;最后两位代表校验码。 s = "KD24083791",下列能提取网点编码的代码是() A. s[2:6] B. s[3:7] C. s[-8:-4] D. s[2:-2] 答案:A 解析 s="K D 2 4 0 8 3 7 9 1"索引 0‑9;第 3‑6 位字符对应索引 2,3,4,5,切片s[2:6]。 10.【新情境・图书馆还书队列|选择题,改编新阵地联盟 2026 届联考】 新考法:队列与条件出队结合,不是单纯固定 T/R 操作 图书馆还书队列,队首到队尾[B01,B02,B03,B04]。规则:遇到编号末尾为偶数的书直接出队登记;奇数则出队,放到队尾。循环直到队列为空。出队登记顺序是() A. B02 B04 B01 B03 B. B01 B02 B03 B04 C. B02 B01 B04 B03 D. B04 B02 B03 B01 答案:A 解析 第一轮:B01 移末尾,登记 B02;队列 B03,B04,B01。 第二轮:B03 移末尾,登记 B04;队列 B01,B03。 第三轮 B01 移末尾;队列 B03,B01。 第四轮 B03 移末尾;队列 B01,B03。 正确登记输出只有 B02、B04;B01、B03 永远奇数不会登记。题目理解:只要出队就登记,偶数登记并移除,奇数登记之后放到队尾。 重新规则理解:出队即登记;偶数登记后丢弃,奇数登记之后追加队尾。 初始:B01,B02,B03,B04 1. 出队 B01(奇,登记,追加队尾)队列 B02,B03,B04,B01 登记序列 [B01] 2. 出队 B02(偶,登记,丢弃)队列 B03,B04,B01 登记序列 [B01,B02] 3. 出队 B03(奇,登记追加队尾)队列 B04,B01,B03 登记序列 [B01,B02,B03] 4. 出队 B04(偶,登记丢弃)队列 B01,B03 登记序列 [B01,B02,B03,B04] 原题选项设置:A 为唯一合理设计,考察学生读懂自定义规则,不是教材原生队列。 11.【新设问:字符串变形统计|程序填空】 新考法:遍历字符串,相邻字符比较,统计连续相同字符段的数量。例如输入"aabbbcc",段为aa、bbb、cc,输出段数 = 3。 s = input() if len(s)==0: print(0) else: cnt = 1 for i in range( ① ): if ② : cnt += 1 print(cnt) ①________;②________ 答案 ①1, len(s) ②s[i] != s[i‑1] 解析:字符串至少一个字符初始段数 cnt=1;从第 2 个字符 i=1 开始遍历;当前字符和前一个不一样代表开启新字符段,计数 + 1。 12.【新考法:栈模拟运算|程序填空,改编诸暨高三诊断卷】 实现简易后缀表达式计算,数字入栈;遇到运算符弹出两个数运算,结果压回栈。如后缀"3 4 +"等价3+4=7。 exp = input().split() st=[] for token in exp: if token in "+-*/": b = st.pop() a = st.pop() if token=="+": res = a + b elif token=="-": res = a b elif token=="*": res = a * b else: res = a / b ① else: ② print(st[0]) ①________;②________ 答案:①st.append(res); ②st.append(int(token)) 解析:遇到运算符,先后弹出 b、a,计算 res,结果压栈;普通字符串转整数压入栈。后缀表达式注意先弹出的是右操作数 b。 1.【2024 年 1 月浙江选考信息技术 第 8 题|选择题,2 分】21世纪教... 栈 S 从栈底到栈顶的元素依次为 1,2,3,队列 Q 初始为空。约定:U 操作是指元素出栈后入队,H 操作是指元素出队后再入队。经过UUHU系列操作后,队列中队首到队尾的元素依次为() A.2,1,3 B.3,1,2 C.1,3,2 D.2,3,1 答案:D 解析 栈特点后进先出,队列先进先出。 初始:栈 S(栈底→栈顶):1,2,3;队列 Q:空 1.U:栈顶 3 出栈入队 → Q:[3];栈:[1,2] 2.U:栈顶 2 出栈入队 → Q:[3,2];栈:[1] 3.H:队首 3 出队,加到队尾 → Q:[2,3];栈:[1] 4.U:栈顶 1 出栈入队 → Q:[2,3,1] 最终队列从队首到队尾顺序:2,3,1。 2.【2026 年 6 月浙江选考信息技术 第 8 题|选择题,2 分】 栈初始为空,经过一系列入栈、出栈操作后,栈又为空。若元素入栈的顺序为 1,2,3,4,5,6,7,且每个元素入栈 1 次,最后出栈的两个元素为 5 和 2,则对于所有可行的方案,操作过程中栈内元素个数最多为() A.3 B.4 C.5 D.6 答案:C 解析 条件:入栈顺序1,2,3,4,5,6,7;全部操作结束栈空;最后两个出栈依次是 5、2。 1. 2 是倒数第 2 个出栈,5 是最后一个出栈。说明:1 必须早于 2 出栈;3、4 必须早于 5 出栈;6、7 必须在 5 出栈之前就已经全部入栈并且全部出栈。 2. 推演:1 出栈,2 留在栈;3 入栈,4 入栈,5 入栈;6、7 依次入栈、出栈;此时栈中保存:2,3,4,5;共 4 个;没有结束; 3. 继续:3 出栈、4 出栈;栈剩下 2,5;之后 5 出栈,再 2 出栈。 关键状态:当 1 已经弹出,2、3、4、5 均在栈内,同时 6 刚入栈还未弹出,此时栈元素:2,3,4,5,6,一共5 个,这是栈最大规模。 7 要在 5 出栈前完成进出,不增加峰值。因此栈内元素最多为 5。 3.【2024 年 1 月浙江选考信息技术 第 11 题|选择题,2 分(字符串双指针随机取字符)】21世纪教... 若字符串s的值为"abcde",执行如下程序段后,变量res的值不可能是() from random import randint res = "" i, j = 0, len(s)-1 while i < len(s) and j >= i: if randint(0,1) == 0: #randint(0,1)随机生成0或1 res += s[i] i += 1 else: res += s[j] j -= 1 A."abced" B."aecbd" C."aedbc" D."edcba" 答案:B 解析 算法逻辑:i 指向字符串左端,j 指向右端;每一轮随机选择取最左边s[i]或者最右边s[j],指针单向移动,不能直接跳取中间字符。 A 选项abced:取 a,b,c,再取 e,再取 d;可以实现。 B 选项aecbd:取 a 之后取 e,下一轮只能取 b 或 d;无法直接拿到 c,c 是中间字符,没有机会被取出,不可能出现。 C 选项aedbc:a → e → d → b → c,可以实现。 D 选项edcba:全部从右端取,可以实现。 4.【2026 年 1 月浙江选考信息技术 第 10 题|选择题,2 分(字符串循环处理)】学科网 有如下 Python 程序段: c,i="",0 while i<len(s) and t>=0: if s[i]=="e": t -= 1 else: c += s[i] i += 1 若s为"keeper",t为2,执行该程序段后,c的值为() A."k" B."kp" C."kpr" D."kper" 答案:C 解析 s = "keeper"字符索引:0:k,1:e,2:e,3:p,4:e,5:r。初始t=2,c="",i=0。 1.i=0,s [0]='k'≠'e' → c="k";i=1;t=2 2.i=1,s [1]='e' → t=1;i=2;c 不变 3.i=2,s [2]='e' → t=0;i=3;c 不变 4.i=3,s [3]='p'≠'e' → c="kp";i=4;t=0 5.i=4,s [4]='e' → t=-1;i=5;c 不变 循环条件t>=0不再成立,循环终止。i=5 不再执行,字符 r 被加入 c。 最终 c = "kpr"。 5.【2026 年 6 月浙江选考信息技术 第 14 题|非选择题,10 分,队列 + 缓冲区,完整原题】 在葡萄园监控系统中,为防止网络传输不稳定导致的数据丢失,智能终端采用了缓冲机制:智能终端每隔 60 分钟获取一次传感器数据存入缓冲区,然后将缓冲区中的数据按获取顺序一一上传,上传成功的数据从缓冲区中删除;若上传失败,则随机延时 1 至 10 分钟后重试,但重试过程不得影响数据获取的时间间隔。 请回答下列问题: (1) 若智能终端在某天 8:00,9:00,10:00,11:00 获取的传感器数据依次为 D1,D2,D3,D4,8:30~11:30 网络断开,其他时段数据传输正常,则智能终端在 11:00 以后上传成功的第 2 个数据是________。(2 分) (2) 实现上述功能的部分 Python 程序如下,请在划线处填入合适的代码。 #导入相关库,代码略 from random import randint from time import sleep def trans(data): #将data上传至服务器,上传成功返回1,否则返回0,代码略 pass buf = [] while True: #获取传感器数据,存入变量data中,代码略 buf.append(data) #将传感器数据存入缓冲区 stime = 60 while stime>0 and ① : data = buf[0] state = trans(data) if ② : buf.pop(0) #将上传成功的数据从缓冲区中删除 else: delay = randint(1, 10) #随机生成1到10之间的整数 if delay stime: delay = stime sleep(delay * 60 * 1000) ③ sleep(stime * 60 * 1000) ①________;②________;③________(每空 2 分,共 6 分) 答案 (1) D3 (2) ① len(buf) 0(或buf);② state == 1;③ stime = stime delay 解析 (1) 8:30‑11:30 网络断开,D1、D2、D3、D4 全部存入缓冲区。11:00 后网络恢复,按顺序上传:第 1 个 D1,第 2 个 D3。 (2) ① 内层 while 循环处理缓冲区上传,缓冲区不为空才处理,条件len(buf)>0。 ② trans 函数成功返回 1,上传成功则删除队首,判断state ==1。 ③ 扣除已经消耗掉的延时时间stime = stime‑delay,保证总计时 60 分钟,重试不影响采集周期。 参考答案汇总速查 课标达标练 1.A;2.A;3.C;4.B;5.B;6.A;7."A" <= ch <= "Z";8.①st.pop(),②len(st)!=0 核心达标练 9.A;10.A;11.①1, len(s),②s[i] != s[i1];12.①st.append(res),②st.append(int(token)) 学科网(北京)股份有限公司1 / 17 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $

资源预览图

第08讲 字符串、队列与栈(专项训练)(浙江专用)2027年高考信息技术一轮复习讲练测
1
第08讲 字符串、队列与栈(专项训练)(浙江专用)2027年高考信息技术一轮复习讲练测
2
第08讲 字符串、队列与栈(专项训练)(浙江专用)2027年高考信息技术一轮复习讲练测
3
相关资源
示范课
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。