浙江高考信息技术 · 浙江普通高等学校招生全国统一考试2016A 信息技术 第 11 题

选择题 · 答案 A

← 整套速查表 浙江高考信息技术 全部真题

题目

【加试题】有如下程序段:

For i = 1 To 2
   For j = 5 To i + 1 Step -1
      If a(j) > a(i) Then
         t = a(j): a(j) = a(i): a(i) = t
       End If
   Next j
Next i

数组元素a(1)到a(5)的值依次为“33,24,4,16,77”,经过该程序段“加工”后,数组元素a(1)到a(5)的值依次为

答案:A

解题思维

这题是冒泡排序的变种,但循环结构很特殊:外层i从1到2,内层j从5倒着走到i+1。别急着代入数字,先搞清楚这段代码到底在交换哪两个位置。关键看当 a(j)>a(i) 时,是把大的往前挪还是往后挪。

常见错误

最容易栽跟头的地方是误以为这是标准冒泡,把整个数组排好序了,或者以为只交换了一对。其实因为i只取1和2,内层j的起点固定是5,终点分别是2和3,所以只涉及a(5)与a(1)、a(4)与a(2)两次交换。还有同学会搞反交换方向,以为 a(j)>a(i) 时是把 a(i) 换到后面,结果算出77跑到中间去了,直接掉进选项B或C的坑里。

详细解析(节选)

这道题考的是循环嵌套执行过程的理解,属于基础但容易看花眼的类型。命题人故意把循环范围缩得很小,只让前两个元素参与排序,就是想看看你是不是一眼就能看出它只是局部调整,而不是整套冒泡。拿到题先别急着代入数据,脑子里过一遍循环的走向:外层i=1时,内层j从5到2,也就是j=5,4,3,2;当j=5时,比较a(5)和a(1),如果a(5)大就交换;j=4时比较a(4)和a(1),以此类推。i=2时同理,j从5到3,比较a(5)、a(4)、a(3)和a(2)。这样一拆解,就知道只会有两次真正的交换机会:第一次是i=1,j=5时,第二次是i=1,j=4时(如果还满足条件),以及i=2时的某一次。现在代入初始数组:a(1)=33,a(2)=24,a(3)=4,a(4)=16,a(5)=77。先看i=1,j=5,a(5)=77>a(1)=33,执行交换,数组变成77,24,4,16,33。接着j=4,a(4)=16<a(1)=77,不交换;j=3,a(3)=4<77,不交换;j=2,a(2)=24<77,不交换。外层i进入2,j从5到3。j=5时,a(5)=33>a(2)=24,交换,数组变为77,24,4,16,33→77,33,4,16,24。j=4时,a(4)=16<a(2)=33,不交换;j=3时,a(3)=4<33,不交换。循环结束。最终数组是77,33,4,16,24,对应选项A。很多同学会在这里出错,比如把i=1时的交换当成把77换到a(2)位置,或者忘记i=2时还会再交换一次,导致误选B或C。避坑的关键就是严格按循环顺序一步步走,别跳步。从考频看,这类读程序段并模拟执行的小题在浙江高考信息技术加试题里属于高频考点,近几年几乎每年都有类似变形,主要考察对循环边界和交换逻辑的细致把握。趋势上,命题人越来越喜欢把标准算法(如冒泡、选择、插入)的循环范围做局部化,让考生必须真正模拟执行,而不是靠记忆结论。未来可能会继续考这种'只跑两趟'的变种,或者把交换条件改成a(j)<a(i)来反向排序,但核心思路不变:抓住循环的起止和条件,手推一遍。暂无足够依据预测具体年份的题型变化,但可以确定的是,只要掌握这种逐行模拟的能力,这类题就不会丢分。

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断