浙江高考信息技术学科历年选考真题经典算法选择及填空题Word文档格式.docx
- 文档编号:18407971
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:25
- 大小:255.28KB
浙江高考信息技术学科历年选考真题经典算法选择及填空题Word文档格式.docx
《浙江高考信息技术学科历年选考真题经典算法选择及填空题Word文档格式.docx》由会员分享,可在线阅读,更多相关《浙江高考信息技术学科历年选考真题经典算法选择及填空题Word文档格式.docx(25页珍藏版)》请在冰豆网上搜索。
a(j)=a(j-1):
a(j-1)=k
flag=True
EndIf
Nextj
i=i+1
Loop
Str(i)
Label3.Caption="
排序过程的加工遍数为"
+'
(2)
Fori=1Ton
List2.AddItemStr(a(i))
Nexti
3.【2016.4】有如下程序段:
Fori=1To2
Forj=5Toi+1Step-1
Ifa(j)>
a(i)Then
t=a(j):
a(j)=a(i):
a(i)=t
数组元素a
(1)到a(5)的值依次为“33,24,45,16,77”,经过该程序段“加工”后,数组元素a
(1)到a(5)的值依次为()
A.77,45,33,16,24B.77,33,45,16,24
C.77,24,45,16,33D.77,45,33,24,16
4.【2016.4】已知一无序数组a(下标1到n),通过引入数组b(下标1到n),使得a(b
(1))≤a(b
(2))≤a(b(3))……≤a(b(n))(示例如图所示),对这些有序数据可进行对分查找。
则第一次查找时,中点位置m与中点值分别是()
A.m的值是Fix((1+n)/2),中点值是a(m)
B.m的值是Fix((1+n)/2),中点值是a(b(m))
C.m的值是Fix((b
(1))+b(n))/2),中点值是a(m)
D.m的值是Fix((b
(1))+b(n))/2),中点值是a(b(m))
5.【2016.4】某地1900-1999年的平均降水量数据保存在数据库中。
现要求找出相邻两年年平均降水量变化(即本年度与上年度“年平均降水量”差值的绝对值)最大的年份区间。
如果多个符合要求的年份区间,只输入距今最近的。
小吴为此编写了VB程序,程序运行时,单击按钮Command1后,在文本框Text1中输出运行结果。
Dimw(1To100)AsSingle'
依次存储1900-1999年的年平均降水量数据
Constn=100
本过程从数据库中按19000-1999年依次读取年平均降水量数据,并存储在数组w中
DimiAsInteger,imaxAsInteger
1
imax=
Fori=3Ton
Abs(w(i-1)-w(i-2))
IfAbs(w(i)-w(i-1))>
=Thenimax=i
Text1.Text="
年平均降水量变化最大的年份区间是"
+Str(imax+1898)+"
-"
+Str(imax+1899)
6.【2016.10】某对分査找算法的VB程序段如下:
i=1:
j=9:
n=0
key=Val(Textl.Text)
DoWhilei<
=j
n=n+1
m=Fix((i+j)/2)
Ifkey=d(m)ThenExitDo'
ExitDo表示退出循环
Ifkey<
d(m)Thenj=m-1Elsei=m+1
数组元素d
(1)到d(9)的值依次为“7,12,18,25,39,58,61,72,86”。
若该程序段运行结束后,n的值为2,则key的值是()
A.39B.18或61C.18或72D.12或61
7.【2016.10】小吴为了研究冒泡排序过程中数据的“移动”情况,编写了一个VB程序,功能如下:
在列表框List1中显示排序前数据(存储在数组a中),在文本框Text1中输入初始位置(即下标值),单击“排序”按钮Command1后,在标签Label1中显示指定初始位置的数据在排序过程中的位置变化情况,排序后的数据显示在列表框List2中。
程序运行界面如图所示。
实现上述功能的VB程序如下,但加框处代码有错,请改正。
a
(1)=30:
a
(2)=47:
a(3)=30:
a(4)=72
a(5)=70:
a(6)=23:
a(7)=99:
a(8)=24
n=8
Fori=1To8
List1.AddItema(i)
DimiAsInteger,jAsInteger,kAsInteger
DimposAsInteger
DimsAsString
s=Text1.Text
pos=Val(Text1.Text)
Fori=1Ton-1
Forj=nToi+1Step-1
Ifa(j)<
a(j-1)=a(j)
a(j)=k
如果pos位置的数据参与交换,则更新pos值,记录pos变化位置
Ifpos=jThen
pos=j-1
s=s+"
→"
+Str(pos)
pos=j
EndIf
Nextj
Label1.Caption="
位置变化情况:
"
+s
Fori=1Ton
List2.AddItemStr(a(i))
8.【2017.4】某对分查找算法的VB程序段如下:
key=Val(Text1.Text)
j=10
Text2.Text="
m=Int((i+j)/2+0.5)
Ifkey=a(m)ThenExitDo'
a(m)Thenj=m-1Elsei=m+1
Text2.Text=Text2.Text+Str(a(m))
数组元素a
(1)到a(10)的值依次为“8,17,24,30,36,40,55,58,61,66”,文本框Text1中输入的值是30,执行该程序段,文本框Text2中显示的是()
A.4024
B.402436
C.3624
D.361724
9.【2017.4】小赵对选择排序算法进行了如下改进:
在数组的所有元素中找出最小和最大数据的元素,然后将这两个元素分别与第一个和最后一个元素交换数据,在余下的元素中找出最小和最大数据的元素,分别与第二个和倒数第二个元素交换数据,以此类推,直到所有元素的数据按升序排列。
小赵编写的VB程序段如下:
p=1:
q=10
DoWhilep<
q
iMin=p:
iMax=p
Fori=p+1Toq
Ifa(i)<
a(iMin)TheniMin=i
Ifa(i)>
a(iMax)TheniMax=i
Nexti
t=a(iMin):
a(iMin)=a(p):
a(p)=t
①
t=a(iMax):
a(iMax)=a(q):
a(q)=t
p=p+1
q=q-1
要使程序实现上述算法思想,则方框中的语句是()
A.IfiMax=pTheniMax=iMin
B.IfiMin=pTheniMin=iMax
C.IfiMax=pTheniMin=iMax
D.IfiMin=pTheniMax=iMin
10.【2017.4】小王编写了一个依据成绩计算名次的VB程序,成绩为0到100之间的整数。
算法的基本思想:
先统计每个分数的个数,然后按照分数从高到低依次计算每个有效分数(该分数的个数不为0)对应的名次,分数相同时名次并列。
最高分为第1名,该分数的名次与个数之和为下一个有效分数的名次,以此类推。
程序用数组A存放每个分数对应的个数,数组B存放每个分数对应的名次。
例如,下表中最高分100有2个,并列第1名,则分数96的名次为分数100的名次加上分数100的个数,即第3名。
分数
100
99
98
97
96
95
94
…
个数(A数组)
2
3
名次(B数组)
4
程序运行时,学生数据显示在列表框List1中,单击“计算”按钮Command1,计算结果显示在列表框List2中,程序运行界面如图所示。
实现上述功能的VB程序如下,请回答下列问题:
(1)如表所示,若分数93的个数为2,则该分数对应的名次为_____________。
(2)请在划线处填入合适的代码。
DimsName(1To50)AsString'
存放学生姓名
DimsScore(1To50)AsInteger'
存放学生分数
DimrecCountAsInteger'
存放学生人数
本过程从数据库中读取学生数据,存储在相应的变量中,并在List1中显示
'
整数转换成长度固定的字符串
Functionads(xAsInteger,nAsInteger)AsString
DimsxAsString,nxAsInteger,iAsInteger
sx=Str(x):
nx=Len(sx)
Fori=1Ton-nx
sx="
"
+sx
EndFunction
DimA(0To100)AsInteger'
存放每个分数的个数
DimB(0To100)AsInteger'
存放每个分数的名次
DimmcAsInteger,scoreAsInteger,iAsInteger
Fori=0To100
A(i)=0
Fori=1TorecCount'
计算每个分数的个数
②
mc=1
Fori=100To0Step-1'
计算每个分数的名次
IfA(i)<
>
0Then
B(i)=mc
③
List2.Clear
List2.AddItem"
姓名分数名次"
----------------"
Fori=1TorecCount
score=sScore(i)
mc=B(sScore(i))
List2.AddItemsName(i)+ads(score,5)+"
第"
+ads(mc,3)+"
名"
11.【2017.11】某对分査找算法的VB程序段如下:
j=7:
s="
key=Int(Rnd*100)
m=(i+j)\2
Ifkey=a(m)Then
s=s+"
M"
:
ExitDo'
ExitDo表示退出循环
ElseIfkey<
a(m)Then
j=m-1:
L"
Else
i=m+1:
R"
Text1.Text=s
数组元素a
(1)到a(7)的值依次为“24,35,38,41,45,69,78”。
若该程序段执行后,文本框Text1中显示的内容可能是()
A.RLB.LMRC.RLRD.LRLM
12.【2017.11】小李基于冒泡排序算法编写了一个VB程序,功能如下:
在文本框Text1中显示排序前的数据,单击“排序”按钮Command1,在文本框Text2中显示剔除重复数据后的升序排序结果。
程序运行界面如下图所示。
Constn=10
Dima(1Ton)AsInteger
DimiAsInteger,jAsInteger,tAsInteger
DimbottomAsInteger
获取排序前数据依次存储在数组a中,并在文本框Text1中显示。
bottom=n
=bottom-1
Forj=bottomToi+1Step-1
a(j-1)=t
ElseIfa(j)=a(j-1)Then'
相邻两个数据相等,进行剔除处理
a(bottom)=a(j)
bottom=bottom-1
Fori=1Tobottom
Text2.Text=Text2.Text+Str(a(i))
13.【2018.4】下列VB程序功能为:
根据文本框Text1中各字符的大小关系,计算各字符升序排列的序号,并将序号保存在数组y中。
如文本框内容为“2011”,程序运行后y
(1)~y(4)各元素的值分别为“4,1,2,3”。
n=Len(s)
y(i)=1
Fori=1To
(1)
Forj=
(2)Ton
If(3)Then
y(j)=y(j)+1
Else
y(i)=y(i)+1
上述程序段3各方框处的表达式分别为()
A.
(1)n
(2)1(3)Mid(s,j,1)>
=Mid(s,i,1)
B.
(1)n
(2)1(3)Mid(s,j,1)>
Mid(s,i,1)
C.
(1)n-1
(2)i+1(3)Mid(s,j,1)>
D.
(1)n-1
(2)i+1(3)Mid(s,j,1)>
14.【2018.4】有一组正整数,要求供对其中的素数进行升序排序。
排序后素数在前,非素数在后。
排序示例如下。
排序前
86
71
5
41
81
79
37
89
排序后
Constn=8
DimiAsInteger,jAsInteger,kAsInteger,tAsInteger
DimflagAsBoolean
读取一组正整数,存储在数组a中,代码略
k=1
IfIsPrime(a(k))Thenflag=TrueElseflag=False
Forj=i+1Ton
IfIsPime(a(j))Then
a(k)Then
k=j
Ifk<
iThen
t=a(k):
a(k)=a(i):
IfNotflagThenExitFor'
ExitFor表示退出循环
依次输出排序后的数据。
FunctionIsPrime(mAsInteger)AsBoolean
本函数判断m是否是素数:
是素数返回值为True,不是素数返回值为False
15.【2018.11】下列VB程序功能为:
16.【2018.11】数组a中存储的是左右交替上升的n个正整数,如下表所示:
a
(1)
a
(2)
a(3)
……
a(n-2)
a(n-1)
a(n)
25
38
55
31
12
依据对分查找思想,设计一个在数组a中查找数据key的程序,实现该功能的VB程序如下,但加框处代码有错,请改正。
Constn=6
Dima(1Ton)AsInteger,flagAsBoolean
DimiAsInteger,jAsInteger,mAsInteger,keyAsInteger
‘读取一组正整数,按上述规则存入数组a中,代码略
j=(n+1)\2
flag=False
jAndNotflag
j=m-1
i=m+1
IfNotflagAndj>
m=n–i
Ifkey=a(m)Thenflag=True
IfflagThen
Text2.Text=Str(m)
Text2.Text="
找不到"
17.【2019.4】有1个升序排列的数组a(a
(1)~a(n),n≥3),从左到右相邻两个元素的差值(后一个元素值减去前一个元素值)先由小到大、再由大到小,且相邻两个差值不相等,为了查找相邻两个元素的最大差值,小李编写的VB程序段如下:
i=1:
j=n
DoWhilei+1<
j
m=(i+j)\2
Ifa(m+1)-a(m)>
a(m)-a(m-1)Then
1
②
Endif
Label1.Caption="
相邻两个元素的最大差值是"
+Str(a(j)-a(i))
上述程序段两个方框处的语句分别为()
A.①i=m②j=m
B.①i=m②j=m-1
C.①i=m+1②j=m-1
D.①i=m+1②j=m
18.【2019.4】小明基于冒泡排序思想设计了一个改进的排序算法。
该算法先用冒泡法将数组a中奇数位置的元素、偶数位置的元素分别进行排序,然后再进行后续处理。
算法的VB程序段如下,但加框处代码有错,请改
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 浙江 高考 信息技术 学科 历年 选考真题 经典 算法 选择 填空