学进去-教育应平等而普惠
试题
类型:操作题
难度系数:0.40
所属科目:高中信息技术
有一款益智游戏,规则如下:轨道上有不同颜色的珠子连成珠串,玩家可以通过炮台发射若干珠子,每次发射一颗珠子到珠串中的某位置,形成新的珠串。当新珠串中出现3颗及以上颜色相同的连续珠子时,这些连续的同色珠子会被消除,并获得相应积分,若消除后仍有符合条件的同色珠子,会继续被消除。记分规则为:在被消除的连续珠子中,前面3颗直接记3分,其余的珠子每颗记2分,例如有5颗相同颜色的连续珠子被消除,可获得7分。程序运行过程如图所示。
编写程序模拟游戏的实现过程,珠子的颜色用数字表示,为方便处理,在珠串最前面加入一颗不可消除的珠子,颜色值为-1。

请回答下列问题:
(1)若珠串为-1,2,2,3,3,2,2,将颜色为3的珠子发射到颜色为2和3的珠子之间,可获得积分为____
(2)定义如下insert(t,pos)函数,函数功能是将颜色为t的珠子,插入到当前珠串中的第pos颗珠子后面(列表link存储珠串的相关数据,例如link中某元素的值为[3,2],3表示某颗珠子的颜色,2表示与该珠子相邻的下一颗珠子的存储地址,变量head保存珠串第一个珠子的存储地址),请在划线处填入合适的代码。
def insert(t,pos): #将颜色为t的珠子,插入到当前珠串第pos颗珠子的后面
       p=head
       while pos>1:
             pos-=1
             p=link[p][1]
       link.append(_________)
       link[p][1]=len(link)-1
(3)定义如下fun()函数,函数功能是:查找珠串里最早出现的可消除珠串,函数返回ret,ret由该珠串起始珠子的前一颗珠子位置和该珠串的连续长度组成。
def fun():
       p=head;st=head
       pre=p
       num=0
       lastcolor=-1
       ret=[-1,0]
       while p!=-1:
             t=link[p][0]
             if t!=lastcolor:
                    if num>=3:
                           ret=[st,num]
                           break
                    lastcolor=t
                    st=pre
                    num=1
             else:
                    num+=1
             pre=p
            p-link[p][1]
       
       return ret
若将函数中加框处代码删除,会导致某些情况下无法得到符合函数功能的结果。调用fun()函数,下列4组数据中能测试出这一问题的是_________(单选,填字母)。
A. head=4
     link=[[2,3],[1,0],[1,1],[2,-1],[-1,2]]
B. head=0
     link=[[-1,1],[2,3],[2,4],[2,2],[1,-1]]
C. head=1
     link=[[2,-1],[-1,3],[2,0],[1,4],[2,2]]
D. head=4
     link=[[2,-1],[1,0],[1,1],[1,2],[-1,3]]
(4)实现模拟游戏过程的部分Python程序如下,请在划线处填入合适的代码。
def clear(g) :#根据fun函数的返回值对珠串进行消除,并统计获得本次消除的积分
       p=g[0]
       q=p
       length=g[1]
       ret=____
       while length>=0:
             q=link[q][1]
             length-=1
       link[p][1]=q
       return ret
def traverl():
       #将轨道中珠串按序输出,代码略
head=7
link=[[1,3],[1,8],[2,1],[5,5],[2,2],[4,4],[3,0],[-1,6],[2,9],[2,-1]]
print("现轨道的珠串为:")
traverl()
points=0
que=[1,1,4,4]   #保存炮台中待发射珠子的颜色
qhead=0
qtail=4
while qhead!=qtail:
       print("当前珠子的颜色为:",que[ghead])
       s-int(input("请输入当前发射位置:"))
       insert(que[qhead],s)
       qhead+=1
       g=fun()
       while g!=[-1,0]:
             points+=clear(g)
             ____
print("最终得分为",points)
print("轨道中剩余的珠串为:")
traverl()
编辑解析赚收入
收藏
|
有奖纠错

同类型试题

优质答疑

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
我要答疑
编写解析
解析:

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

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