学进去-教育应平等而普惠
试题
类型:操作题
难度系数:0.40
所属科目:高中信息技术
某文本编辑软件可以把所做的文本编辑操作记录下来,并通过撤销和恢复命令来撤销一步操作或恢复一步撤销的操作;也可以通过数字命令一次性撤销最近的多步文本编辑操作,如图所示。

设计算法模拟该功能。约定:①操作记录只存储文本编辑指令;②存储步数最多为5步,存满后早期的操作记录将被覆盖;③程序只显示操作记录的可“撤销”记录,可“恢复”记录不显示;④一旦有新的文本编辑操作,则清空所有可“恢复”记录。
人机交互的指令如下(所有操作示例都基于上一个示例结果继续操作):

所有指令均可使用多次。每次输入一个指令后都输出“F”指令和“B”指令是否可用以及当前可撤销记录。所有无效操作指令输入后均提示“Input Error!”。输入“#”则结束程序。请回答下列问题:
(1)由题意可知,当依次执行指令“T2”、“T2”、“T1”、“T3”、“T1”、“T4”,则最终可撤销记录共有______个。
(2)模拟实现该功能的Python代码如下,请在划线处填入合适的代码。
def printh(head,cur):

print(f[flag[0]*2+flag[1]])

s=″可撤销记录:″

while head!=cur+1:

s=s+hist[head]+″/″

____

print(s)


opera=[″T1″,″T2″,″T3″,″T4″]
f={0:″指令B不可用;指令F不可用″,1:″指令B不可用;指令F可用″,2:″指令B可用;指令F不可用″,3:″指令B可用;指令F可用″}
maxn=5                           #历史记录最多存储的步数
maxsize=100                    #设定最多输入文本编辑指令100次
hist=[″″]* maxsize
cur=-1;tail=0;head=0
flag=[0,0]                    #记录指令B与指令F的状态
while True:

d=input(″请输入操作指令:″)

if d==″#″:break

if d in opera:

if ___ :

head=head+1

cur=cur+1; hist[cur]=d

tail=cur+1

flag=[1,0]

printh(head,cur)

elif″1″<=d<=str((cur-head+1)):

cur=____

if cur==head-1:

flag[0]=0

flag[1]=1

printh(head,cur)

elif d==″F″and tail!=cur+1:

#恢复功能代码略

elif

if cur==head:flag[0]=0

flag[1]=1

cur=cur-1

printh(head,cur)

else:

print(″Input Error!″)


(3)若加框处代码误写为“d==″B″”,会导致某些情况下无法得到符合判断功能的结果。下列4组数据中能测试出这一问题的是______
A.“B”   B.“T1”、“B”、“B”   C.“T1”、“1”、“B”   D.“T1”、“T2”、“B”
编辑解析赚收入
收藏
|
有奖纠错

同类型试题

优质答疑

y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2

用户名称
2019-09-19

y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2

用户名称
2019-09-19
我要答疑
编写解析
解析:

奖学金将在审核通过后自动发放到帐

提交
我要答疑
我要答疑:
提交