深耕专业教研,探索前沿技术
信息技术来源:台州市2026届高三第二次教学质量评估试题

第 12 题

答案与解析

本题解析

参考答案

A

程序分析

from random import randint
a = [3,1,6,8,12,14,20,9,10,11]
n,total = len(a),0
for i in range(n-1,-1,-2):
    ...

列表长度为10,i依次取9、7、5、3、1,循环执行5轮,total初值为0。

t = i-randint(0,i//2)*2
if a[t] % 2 == 0:
    total += 1
else:
    total -= 1

randint(0,i//2)的取值包含两端。i为奇数,减去不超过i的偶数后,t可取1、3、…、i,即当前范围内的奇数下标。选中元素为偶数时total加1,为奇数时减1。

a[i],a[t] = a[t],a[i]

交换把刚统计的元素放到下标i。下一轮i减少2,该位置便退出待选范围。若t<i,原a[i]换到t处,仍可在后续被选中;若t=i,则该元素原地退出。每轮由此恰好移出一个已统计元素。

5轮后,初始奇数下标1、3、5、7、9上的元素均恰好统计一次。它们是1、8、14、9、11,其中偶数2个、奇数3个,因此total=2-3=-1。