信息技术来源:金丽衢十二校2025学年高三第二次联考
第 10 题
答案与解析
本题解析
参考答案
A
程序分析
s="ABxy#Cd";t=""; flag=True
for i in range(len(s)):
if "a"<=s[i]<="z" and flag:
x=chr(((ord(s[i])-95))%26+97)
elif "A"<=s[i]<="Z" and flag:
x=chr(((ord(s[i])-66))%26+65)
flag=False
else:
x=s[i];flag=True
t=t+x循环依次读取 s 中的字符,flag 初值为 True,两个字母转换分支都要求 flag 为 True。
小写字母的编码以 97 为起点,ord(s[i])-95 等于其从 0 开始的位置加 2,因此第一个分支将小写字母循环后移 2 位,flag 保持 True。
大写字母的编码以 65 为起点,ord(s[i])-66 等于其从 0 开始的位置减 1,因此第二个分支将大写字母循环前移 1 位,并把 flag 设为 False。Python 中负数对 26 取余仍得到 0~25 的余数,所以 A 会转换成 Z。
若当前不是字母,或 flag 为 False,则进入 else:字符原样保留,并将 flag 恢复为 True。每轮把处理后的 x 追加到 t,因此一次大写字母转换后的紧邻字符会原样保留。
按上述规则处理字符串:
| 当前字符 | 处理前 flag | 追加到 t 的字符 | 处理后 flag |
|---|---|---|---|
| A | True | Z | False |
| B | False | B | True |
| x | True | z | True |
| y | True | a | True |
| # | True | # | True |
| C | True | B | False |
| d | False | d | True |
依次拼接后,输出为 ZBza#Bd。
问题反馈
解析有疑问或显示异常?请先复制题目信息,再打开反馈表单填写。
题目编号:2026_03_G3_jinliqu_q010
