资源简介 浙江省金华市江南中学2019-2020学年高二下学期信息技术4月阶段考试卷一、选择题(本大题共7小题,共35.0分)1.(2020高二下·金华月考)若数组元素d(1)到d(8)的值依次为“86,75,58,46,20,18,12,5”,查找某Key值的VB程序段如下:n=0:i=1:j=8Key=Val(Text 1.Text)Do While i<=jm=(i+j)\2If Key=d(m) Then Exit Do ‘Exit Do表示退出循环If Key>d(m) Thenj=m-1:n=n-1Elsei=m+1:n=n+1End IfLoopLabel 1.Caption=Str(n)当输入不同的Key值, 运行该程序段后, 在标签Label1中显示的不同结果共有( )A.5种 B.6种 C.7种 D.8种【答案】D【知识点】常量、变量及变量的赋值;查找算法及程序实现【解析】【解答】分析程序算法可知,查找某Key值主要通过对分查找算法,变量n用于记录查找过程中中间值指针在第一次定位后的偏移情况,左移一次n-1,右移一次则n+1,则依次查找数列中每一个元素的偏移累计分别为-2、-1、0、0、0、1、2、3,另外若查找key值大于86或小于5,则分别偏移累计为-3和4,当输入不同的Key值,运行该程序段后,在标签Label1中显示的不同结果共有8种输出结果。故答案选D。【分析】本题考查的是对VB程序的分析理解,重点是掌握对分查找的算法思想。二分查找的基本思想是将n个元素分成大致相等的两部分,取a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止;如果x<a[n/2],则只要在数组a的左半部分继续搜索x,如果x>a[n/2],则只要在数组a的右半部搜索x。2.(2020高二下·金华月考)某对分查找算法的VB程序段如下:key=Val(Text 1.Text)Text 2.Text=“”flag=Truei=1:j=8Do While i<=j And flag=Truem=(i+j)\2If key=a(m) Thenflag=FalseElseIf key>a(m) Theni=m+1Elsej=m-1End IfText 2.Text=Text 2.Text+Str(m)Loop数组元素a(1)到a(8)的值依次为“1,3,5,8,10,13,16,21”,在文本框Text 1中输入7,执行该程序段,下列说法正确的是( )A.Flag的值为FalseB.文本框Text 2中显示的内容为4 2 3C.i的值为3D.j的值为4【答案】B【知识点】常量、变量及变量的赋值;查找算法及程序实现【解析】【解答】分析程序代码,按对分査找算法思想,只有当找到目标值时,Flag的值才置为False,而题中查找数“7”不在数列中,因而不会找到,A错误。文本框Text2中显示的内容为各次的中间值m,根据题意,第一次查找i=1,j=8,m=4;第二次查找i=1,j=3,m=2;第三次查找i=3,j=3,m=3,最后i=i+1=4,所以最终文本框Text2中显示的内容为4 2 3,B选项正确,CD选项错误。故答案选B。【分析】本题考查对对分查找算法的理解和运用。对分查找的基本思想是将n个元素分成大致相等的两部分,取a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止;如果x<a[n/2],则只要在数组a的左半部分继续搜索x,如果x>a[n/2],则只要在数组a的右半部搜索x。3.(2020高二下·金华月考)下列VB程序段是选择排序程序的主要部分。其中虚线框内代码用于寻找数据元素d(i)到d(n)的最小值。……For i=1 To n-1k=i For j=i+1 To n If d(j) If i<>k Then kt=d(i): d(i) =d(k): d(k) =ktNext i……框内代码运行结束时,保存最小值的数组元素一定是( )A.d(n) B.d(j) C.d(i) D.d(k)【答案】D【知识点】常量、变量及变量的赋值;排序算法及程序实现【解析】【解答】题目的思想方法是先假设数组的第i项是最小的(第i遍排序),因此k记为i,然后把从第i+1项开始的所有数组元素跟d(k)进行比较,如果比d(k)小,则用k记录元素的下标。这样循环结束后,变量k中存储的就是数组中第i项至第n项的最小元素的下标,d(k)就是第i项至第n项中的最小元素。故答案选D。【分析】本题主要考查的是对选择排序及代码的理解。本题关键是寻找最小值或最大值。变量k记录当前找到的最小值的位置,即数组元素的下标,则d(k)就是当前找到的最小的数组元素。4.(2020高二下·金华月考)以下程序段对数组a中的6个数据a(1)到a(6)进行加工。Dim flag As Booleani=1: flag=TrueDo While i<= 5 And flag=Trueflag=FalseFor j=6 To i+1 Step -1If a(j) k=a(i):a(i)=a(j-1):a(j-1)=kflag=TrueEnd IfNext ji=i+1Loop下列数据序列中,在加工过程中划线处语句执行次数最多的是( )A.24,29,31,20,15,10 B.10,15,20,24,29,31C.29,10,31,15,20,24 D.31,29,24,20,15,10【答案】D【知识点】常量、变量及变量的赋值;排序算法及程序实现【解析】【解答】根据题意:这个程序是用冒泡法将数组中的数进行由小到大的顺序排列。在数组中从第1个数到最后一个数的大小放置正好与所要求的顺序相反时,要交换的次数是最多的,D选项恰好是从大到小的排列,这样交换的次数会最多。故答案选D。【分析】本题考查的是VB程序中冒泡排序的程序。这是冒泡法数据排序的程序,从数组最后一个数开始检查,当后面的数小于前面的数时就交换两个数的位置,直到所有的数中都是后面的数大于前面的数,不在交换,代表排序完成,最后所有的数都由小到大排列。5.(2020高二下·金华月考)利用选择排序对一组原始数据:us,our,my,your,his进行降序排序,第二遍排序结束后的数据序列为( )A.us,our,my,his,your B.your,us,my,our,hisC.your,our,my,us,his D.his,us,our,my,your【答案】B【知识点】排序算法及程序实现【解析】【解答】题中要求降序排序,所以第一遍先在所有单词中找到字典序中排最后的单词“your”,将它与“us”交换位置,得到“your,our,my,us,his”。第二遍再在余下的单词中找出按字典序排最后的单词“us”,将它与“our”交换位置,得到“your,us,my,our,his”。故答案选B。【分析】本题考查的是排序算法的运算过程。6.(2020高二下·金华月考)在VB中,若a是一个整型数组,a(1)、……、a(4)分别为130、45、278、59,则执行下列程序段后,数组a中各元素的值为( )For i= 1 To 3For j=i+1 To 4If a(i) >a(j) Thena(0)=a(i)a(i)=a(j)a(j)=a(0)End IfNext jNext iA.45 59 130 278 B.130 278 45 59C.278 130 59 45 D.59 45 278 130【答案】A【知识点】常量、变量及变量的赋值;排序算法及程序实现7.(2020高二下·金华月考)有如下VB程序段:For i= 1 To 3j=i+1Do While j<= 4If a(i) t=a(i):a(i)=a(j):a(j)=tEnd Ifj=j+1LoopNext i数组元素a(1)到a(4)的数据依次为“33,6,14,17”,程序运行过程中,语句“t=a(i):a(i)=a(j):a(j)=t”被执行的次数为( )A.1 B.2 C.3 D.4【答案】C【知识点】排序算法及程序实现【解析】【解答】依据题干中代码可知,该排序下一个元素比上一个元素小,就进行交换。进行三次以后,下一个元素就不会比上一个小。故答案选C。【分析】本题考查的是冒泡排序的改进算法,它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来;走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。二、非选择题(本大题共1小题,每空5分,共15.0分)8.(2020高二下·金华月考)n个数从小到大选择排序需要经过n-1遍加工,每遍加工从未排序的数据元素中找出最小的元素与当前元素进行交换。小天同学学习了选择排序算法和函数的知识后,编写了一个VB程序,功能如下:运行程序时首先在列表框List 1中显示10个大于10且小于等于99的随机自然数,单击“排序”按钮Command 1后,在列表框List 2中显示这些数据按从小到大排序后的结果,运行结果如图所示。请在划线处填入合适代码。Const n= 10Dima(1 To n) As Integer ‘定义数组aPrivate SubForm_Load()RandomizeFor i=1 To n '产生n个随机自然数,并依次存放在数组a中 List 1.Add ItemS tr(a(i))Next iEnd SubFunction Find Min(x As Integer) '寻找当前需要交换的数组元素下标Dim k As Integer, j As Integerk=xFor j=x+1Ton Next jFind Min=kEnd FunctionPrivate Sub Command 1_Click()Dim i As Integer, k As Integer, t As IntegerFor i= 1 To 9 If k<>i Thent=a(i):a(i)=a(k):a(k)=tEnd IfNext iFor i=1 To nList 2.Add Item Str(a(i))Next iEnd Sub【答案】a(i)=Int(Rnd*89)+11;If a(j)< a(k)Then k=j;k=FindMin(i)【知识点】常量、变量及变量的赋值;排序算法及程序实现1 / 1浙江省金华市江南中学2019-2020学年高二下学期信息技术4月阶段考试卷一、选择题(本大题共7小题,共35.0分)1.(2020高二下·金华月考)若数组元素d(1)到d(8)的值依次为“86,75,58,46,20,18,12,5”,查找某Key值的VB程序段如下:n=0:i=1:j=8Key=Val(Text 1.Text)Do While i<=jm=(i+j)\2If Key=d(m) Then Exit Do ‘Exit Do表示退出循环If Key>d(m) Thenj=m-1:n=n-1Elsei=m+1:n=n+1End IfLoopLabel 1.Caption=Str(n)当输入不同的Key值, 运行该程序段后, 在标签Label1中显示的不同结果共有( )A.5种 B.6种 C.7种 D.8种2.(2020高二下·金华月考)某对分查找算法的VB程序段如下:key=Val(Text 1.Text)Text 2.Text=“”flag=Truei=1:j=8Do While i<=j And flag=Truem=(i+j)\2If key=a(m) Thenflag=FalseElseIf key>a(m) Theni=m+1Elsej=m-1End IfText 2.Text=Text 2.Text+Str(m)Loop数组元素a(1)到a(8)的值依次为“1,3,5,8,10,13,16,21”,在文本框Text 1中输入7,执行该程序段,下列说法正确的是( )A.Flag的值为FalseB.文本框Text 2中显示的内容为4 2 3C.i的值为3D.j的值为43.(2020高二下·金华月考)下列VB程序段是选择排序程序的主要部分。其中虚线框内代码用于寻找数据元素d(i)到d(n)的最小值。……For i=1 To n-1k=i For j=i+1 To n If d(j) If i<>k Then kt=d(i): d(i) =d(k): d(k) =ktNext i……框内代码运行结束时,保存最小值的数组元素一定是( )A.d(n) B.d(j) C.d(i) D.d(k)4.(2020高二下·金华月考)以下程序段对数组a中的6个数据a(1)到a(6)进行加工。Dim flag As Booleani=1: flag=TrueDo While i<= 5 And flag=Trueflag=FalseFor j=6 To i+1 Step -1If a(j) k=a(i):a(i)=a(j-1):a(j-1)=kflag=TrueEnd IfNext ji=i+1Loop下列数据序列中,在加工过程中划线处语句执行次数最多的是( )A.24,29,31,20,15,10 B.10,15,20,24,29,31C.29,10,31,15,20,24 D.31,29,24,20,15,105.(2020高二下·金华月考)利用选择排序对一组原始数据:us,our,my,your,his进行降序排序,第二遍排序结束后的数据序列为( )A.us,our,my,his,your B.your,us,my,our,hisC.your,our,my,us,his D.his,us,our,my,your6.(2020高二下·金华月考)在VB中,若a是一个整型数组,a(1)、……、a(4)分别为130、45、278、59,则执行下列程序段后,数组a中各元素的值为( )For i= 1 To 3For j=i+1 To 4If a(i) >a(j) Thena(0)=a(i)a(i)=a(j)a(j)=a(0)End IfNext jNext iA.45 59 130 278 B.130 278 45 59C.278 130 59 45 D.59 45 278 1307.(2020高二下·金华月考)有如下VB程序段:For i= 1 To 3j=i+1Do While j<= 4If a(i) t=a(i):a(i)=a(j):a(j)=tEnd Ifj=j+1LoopNext i数组元素a(1)到a(4)的数据依次为“33,6,14,17”,程序运行过程中,语句“t=a(i):a(i)=a(j):a(j)=t”被执行的次数为( )A.1 B.2 C.3 D.4二、非选择题(本大题共1小题,每空5分,共15.0分)8.(2020高二下·金华月考)n个数从小到大选择排序需要经过n-1遍加工,每遍加工从未排序的数据元素中找出最小的元素与当前元素进行交换。小天同学学习了选择排序算法和函数的知识后,编写了一个VB程序,功能如下:运行程序时首先在列表框List 1中显示10个大于10且小于等于99的随机自然数,单击“排序”按钮Command 1后,在列表框List 2中显示这些数据按从小到大排序后的结果,运行结果如图所示。请在划线处填入合适代码。Const n= 10Dima(1 To n) As Integer ‘定义数组aPrivate SubForm_Load()RandomizeFor i=1 To n '产生n个随机自然数,并依次存放在数组a中 List 1.Add ItemS tr(a(i))Next iEnd SubFunction Find Min(x As Integer) '寻找当前需要交换的数组元素下标Dim k As Integer, j As Integerk=xFor j=x+1Ton Next jFind Min=kEnd FunctionPrivate Sub Command 1_Click()Dim i As Integer, k As Integer, t As IntegerFor i= 1 To 9 If k<>i Thent=a(i):a(i)=a(k):a(k)=tEnd IfNext iFor i=1 To nList 2.Add Item Str(a(i))Next iEnd Sub答案解析部分1.【答案】D【知识点】常量、变量及变量的赋值;查找算法及程序实现【解析】【解答】分析程序算法可知,查找某Key值主要通过对分查找算法,变量n用于记录查找过程中中间值指针在第一次定位后的偏移情况,左移一次n-1,右移一次则n+1,则依次查找数列中每一个元素的偏移累计分别为-2、-1、0、0、0、1、2、3,另外若查找key值大于86或小于5,则分别偏移累计为-3和4,当输入不同的Key值,运行该程序段后,在标签Label1中显示的不同结果共有8种输出结果。故答案选D。【分析】本题考查的是对VB程序的分析理解,重点是掌握对分查找的算法思想。二分查找的基本思想是将n个元素分成大致相等的两部分,取a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止;如果x<a[n/2],则只要在数组a的左半部分继续搜索x,如果x>a[n/2],则只要在数组a的右半部搜索x。2.【答案】B【知识点】常量、变量及变量的赋值;查找算法及程序实现【解析】【解答】分析程序代码,按对分査找算法思想,只有当找到目标值时,Flag的值才置为False,而题中查找数“7”不在数列中,因而不会找到,A错误。文本框Text2中显示的内容为各次的中间值m,根据题意,第一次查找i=1,j=8,m=4;第二次查找i=1,j=3,m=2;第三次查找i=3,j=3,m=3,最后i=i+1=4,所以最终文本框Text2中显示的内容为4 2 3,B选项正确,CD选项错误。故答案选B。【分析】本题考查对对分查找算法的理解和运用。对分查找的基本思想是将n个元素分成大致相等的两部分,取a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止;如果x<a[n/2],则只要在数组a的左半部分继续搜索x,如果x>a[n/2],则只要在数组a的右半部搜索x。3.【答案】D【知识点】常量、变量及变量的赋值;排序算法及程序实现【解析】【解答】题目的思想方法是先假设数组的第i项是最小的(第i遍排序),因此k记为i,然后把从第i+1项开始的所有数组元素跟d(k)进行比较,如果比d(k)小,则用k记录元素的下标。这样循环结束后,变量k中存储的就是数组中第i项至第n项的最小元素的下标,d(k)就是第i项至第n项中的最小元素。故答案选D。【分析】本题主要考查的是对选择排序及代码的理解。本题关键是寻找最小值或最大值。变量k记录当前找到的最小值的位置,即数组元素的下标,则d(k)就是当前找到的最小的数组元素。4.【答案】D【知识点】常量、变量及变量的赋值;排序算法及程序实现【解析】【解答】根据题意:这个程序是用冒泡法将数组中的数进行由小到大的顺序排列。在数组中从第1个数到最后一个数的大小放置正好与所要求的顺序相反时,要交换的次数是最多的,D选项恰好是从大到小的排列,这样交换的次数会最多。故答案选D。【分析】本题考查的是VB程序中冒泡排序的程序。这是冒泡法数据排序的程序,从数组最后一个数开始检查,当后面的数小于前面的数时就交换两个数的位置,直到所有的数中都是后面的数大于前面的数,不在交换,代表排序完成,最后所有的数都由小到大排列。5.【答案】B【知识点】排序算法及程序实现【解析】【解答】题中要求降序排序,所以第一遍先在所有单词中找到字典序中排最后的单词“your”,将它与“us”交换位置,得到“your,our,my,us,his”。第二遍再在余下的单词中找出按字典序排最后的单词“us”,将它与“our”交换位置,得到“your,us,my,our,his”。故答案选B。【分析】本题考查的是排序算法的运算过程。6.【答案】A【知识点】常量、变量及变量的赋值;排序算法及程序实现7.【答案】C【知识点】排序算法及程序实现【解析】【解答】依据题干中代码可知,该排序下一个元素比上一个元素小,就进行交换。进行三次以后,下一个元素就不会比上一个小。故答案选C。【分析】本题考查的是冒泡排序的改进算法,它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来;走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。8.【答案】a(i)=Int(Rnd*89)+11;If a(j)< a(k)Then k=j;k=FindMin(i)【知识点】常量、变量及变量的赋值;排序算法及程序实现1 / 1 展开更多...... 收起↑ 资源列表 浙江省金华市江南中学2019-2020学年高二下学期信息技术4月阶段考试卷(学生版).docx 浙江省金华市江南中学2019-2020学年高二下学期信息技术4月阶段考试卷(教师版).docx