浙江高考信息技术学科历年选考真题经典算法选择及填空题.docx
《浙江高考信息技术学科历年选考真题经典算法选择及填空题.docx》由会员分享,可在线阅读,更多相关《浙江高考信息技术学科历年选考真题经典算法选择及填空题.docx(25页珍藏版)》请在冰豆网上搜索。
浙江高考信息技术学科历年选考真题经典算法选择及填空题
经典算法选择填空历年选考真题
班级姓名
1.【2015.10】已知单调函数
在[0,1]区间存在一个
,使
。
现用对分查找法搜索
的值,开始搜索区间为[0,1],若经过10次对分查找后还需继续搜索,则第11次搜索区间的长度为()
A.1/2B.1/10C.
D.
2.【2015.10】n个数据的冒泡排序需要经过n-1遍加工,每一遍加工自下而上比较相邻两个数据,把较小者交换到上面。
小刘发现:
当某一遍加工过程中没有数据交换,说明数据已经有序,无需进一步加工。
为此,小刘对算法进行优化,编写了一个VB程序,功能如下:
运行程序时,在列表框List1中显示排序前数据,单击“排序”按钮Commaiid1,在列表框List2中显示这些数据按升序排序后的结果,在标签Label3中显示排序过程的加工遍数。
运行效果如第16题图所示。
实现上述功能的VB代码如下,但加框处代码有错,请改正。
Dima(1To8)AsInteger
DimnAsInteger
PrivateSubForm_Load()
'n=8,排序前数据存储在数组a中,并在列表框Listl中显示
'代码略
EndSub
PrivateSubCommand1_Click()
DimflagAsBoolean'flag值为True表示一遍加工中发生过交换
i=1
flag=True
DoWhile'
(1)
i<=n-1Orflag=True
flag=False
Forj=nToi+1Step-1
Ifa(j)k=a(j):a(j)=a(j-1):a(j-1)=kflag=TrueEndIfNextji=i+1LoopStr(i)Label3.Caption="排序过程的加工遍数为"+'(2)Fori=1TonList2.AddItemStr(a(i))NextiEndSub3.【2016.4】有如下程序段:Fori=1To2Forj=5Toi+1Step-1Ifa(j)>a(i)Thent=a(j):a(j)=a(i):a(i)=tEndIfNextjNexti数组元素a(1)到a(5)的值依次为“33,24,45,16,77”,经过该程序段“加工”后,数组元素a(1)到a(5)的值依次为()A.77,45,33,16,24B.77,33,45,16,24C.77,24,45,16,33D.77,45,33,24,164.【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中输出运行结果。实现上述功能的VB代码如下,但加框处代码有错,请改正。Dimw(1To100)AsSingle'依次存储1900-1999年的年平均降水量数据Constn=100PrivateSubForm_Load()'本过程从数据库中按19000-1999年依次读取年平均降水量数据,并存储在数组w中'代码略EndSubPrivateSubCommand1_Click()DimiAsInteger,imaxAsInteger1imax=Fori=3TonAbs(w(i-1)-w(i-2))IfAbs(w(i)-w(i-1))>=Thenimax=iNextiText1.Text="年平均降水量变化最大的年份区间是"+Str(imax+1898)+"-"+Str(imax+1899)6.【2016.10】某对分査找算法的VB程序段如下:i=1:j=9:n=0key=Val(Textl.Text)DoWhilei<=jn=n+1m=Fix((i+j)/2)Ifkey=d(m)ThenExitDo'ExitDo表示退出循环IfkeyLoop数组元素d(1)到d(9)的值依次为“7,12,18,25,39,58,61,72,86”。若该程序段运行结束后,n的值为2,则key的值是()A.39B.18或61C.18或72D.12或617.【2016.10】小吴为了研究冒泡排序过程中数据的“移动”情况,编写了一个VB程序,功能如下:在列表框List1中显示排序前数据(存储在数组a中),在文本框Text1中输入初始位置(即下标值),单击“排序”按钮Command1后,在标签Label1中显示指定初始位置的数据在排序过程中的位置变化情况,排序后的数据显示在列表框List2中。程序运行界面如图所示。 实现上述功能的VB程序如下,但加框处代码有错,请改正。Dima(1To8)AsIntegerDimnAsIntegerPrivateSubForm_Load()a(1)=30:a(2)=47:a(3)=30:a(4)=72a(5)=70:a(6)=23:a(7)=99:a(8)=24n=8Fori=1To8List1.AddItema(i)NextiEndSubPrivateSubCommand1_Click()DimiAsInteger,jAsInteger,kAsIntegerDimposAsIntegerDimsAsStrings=Text1.Textpos=Val(Text1.Text)Fori=1Ton-1Forj=nToi+1Step-1Ifa(j)a(j-1)=a(j)a(j)=k'如果pos位置的数据参与交换,则更新pos值,记录pos变化位置Ifpos=jThenpos=j-1s=s+"→"+Str(pos)pos=js=s+"→"+Str(pos)EndIfEndIfNextjNextiLabel1.Caption="位置变化情况:"+sFori=1TonList2.AddItemStr(a(i))NextiEndSub8.【2017.4】某对分查找算法的VB程序段如下:key=Val(Text1.Text)i=1:j=10Text2.Text=""DoWhilei<=jm=Int((i+j)/2+0.5)Ifkey=a(m)ThenExitDo'ExitDo表示退出循环IfkeyText2.Text=Text2.Text+Str(a(m))Loop数组元素a(1)到a(10)的值依次为“8,17,24,30,36,40,55,58,61,66”,文本框Text1中输入的值是30,执行该程序段,文本框Text2中显示的是()A.4024B.402436C.3624D.3617249.【2017.4】小赵对选择排序算法进行了如下改进:在数组的所有元素中找出最小和最大数据的元素,然后将这两个元素分别与第一个和最后一个元素交换数据,在余下的元素中找出最小和最大数据的元素,分别与第二个和倒数第二个元素交换数据,以此类推,直到所有元素的数据按升序排列。小赵编写的VB程序段如下:p=1:q=10DoWhilepiMin=p:iMax=pFori=p+1ToqIfa(i)Ifa(i)>a(iMax)TheniMax=iNextit=a(iMin):a(iMin)=a(p):a(p)=t①t=a(iMax):a(iMax)=a(q):a(q)=tp=p+1q=q-1Loop要使程序实现上述算法思想,则方框中的语句是()A.IfiMax=pTheniMax=iMinB.IfiMin=pTheniMin=iMaxC.IfiMax=pTheniMin=iMaxD.IfiMin=pTheniMax=iMin10.【2017.4】小王编写了一个依据成绩计算名次的VB程序,成绩为0到100之间的整数。算法的基本思想:先统计每个分数的个数,然后按照分数从高到低依次计算每个有效分数(该分数的个数不为0)对应的名次,分数相同时名次并列。最高分为第1名,该分数的名次与个数之和为下一个有效分数的名次,以此类推。程序用数组A存放每个分数对应的个数,数组B存放每个分数对应的名次。例如,下表中最高分100有2个,并列第1名,则分数96的名次为分数100的名次加上分数100的个数,即第3名。分数100999897969594…0个数(A数组)2000103…0名次(B数组)134…程序运行时,学生数据显示在列表框List1中,单击“计算”按钮Command1,计算结果显示在列表框List2中,程序运行界面如图所示。 实现上述功能的VB程序如下,请回答下列问题:(1)如表所示,若分数93的个数为2,则该分数对应的名次为_____________。(2)请在划线处填入合适的代码。DimsName(1To50)AsString'存放学生姓名DimsScore(1To50)AsInteger'存放学生分数DimrecCountAsInteger'存放学生人数PrivateSubForm_Load()'本过程从数据库中读取学生数据,存储在相应的变量中,并在List1中显示'代码略EndSub'整数转换成长度固定的字符串Functionads(xAsInteger,nAsInteger)AsStringDimsxAsString,nxAsInteger,iAsIntegersx=Str(x):nx=Len(sx)Fori=1Ton-nxsx=""+sxNexti①EndFunctionPrivateSubCommand1_Click()DimA(0To100)AsInteger'存放每个分数的个数DimB(0To100)AsInteger'存放每个分数的名次DimmcAsInteger,scoreAsInteger,iAsIntegerFori=0To100A(i)=0NextiFori=1TorecCount'计算每个分数的个数②Nextimc=1Fori=100To0Step-1'计算每个分数的名次IfA(i)<>0ThenB(i)=mc③EndIfNextiList2.ClearList2.AddItem"姓名分数名次"List2.AddItem"----------------"Fori=1TorecCountscore=sScore(i)mc=B(sScore(i))List2.AddItemsName(i)+ads(score,5)+"第"+ads(mc,3)+"名"NextiEndSub11.【2017.11】某对分査找算法的VB程序段如下:i=1:j=7:s=""key=Int(Rnd*100)DoWhilei<=jm=(i+j)\2Ifkey=a(m)Thens=s+"M":ExitDo'ExitDo表示退出循环ElseIfkeyj=m-1:s=s+"L"Elsei=m+1:s=s+"R"EndIfLoopText1.Text=s数组元素a(1)到a(7)的值依次为“24,35,38,41,45,69,78”。若该程序段执行后,文本框Text1中显示的内容可能是()A.RLB.LMRC.RLRD.LRLM12.【2017.11】小李基于冒泡排序算法编写了一个VB程序,功能如下:在文本框Text1中显示排序前的数据,单击“排序”按钮Command1,在文本框Text2中显示剔除重复数据后的升序排序结果。程序运行界面如下图所示。 实现上述功能的VB程序如下,但加框处代码有错,请改正。Constn=10Dima(1Ton)AsIntegerPrivateSubCommand1_Click()DimiAsInteger,jAsInteger,tAsIntegerDimbottomAsInteger'获取排序前数据依次存储在数组a中,并在文本框Text1中显示。代码略bottom=ni=1DoWhilei<=bottom-1Forj=bottomToi+1Step-1Ifa(j)t=a(j):a(j)=a(j-1):a(j-1)=tElseIfa(j)=a(j-1)Then'相邻两个数据相等,进行剔除处理a(bottom)=a(j)bottom=bottom-1EndIfNextji=i+1LoopText2.Text=""Fori=1TobottomText2.Text=Text2.Text+Str(a(i))NextiEndSub13.【2018.4】下列VB程序功能为:根据文本框Text1中各字符的大小关系,计算各字符升序排列的序号,并将序号保存在数组y中。如文本框内容为“2011”,程序运行后y(1)~y(4)各元素的值分别为“4,1,2,3”。s=Text1.Textn=Len(s)Fori=1Tony(i)=1NextiFori=1To(1)Forj=(2)TonIf(3)Theny(j)=y(j)+1Elsey(i)=y(i)+1EndIfNextjNexti上述程序段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)>=Mid(s,i,1)D.(1)n-1(2)i+1(3)Mid(s,j,1)>Mid(s,i,1)14.【2018.4】有一组正整数,要求供对其中的素数进行升序排序。排序后素数在前,非素数在后。排序示例如下。排序前867154181793789排序后537417179898681Constn=8Dima(1Ton)AsIntegerPrivateSubCommand1_Click()DimiAsInteger,jAsInteger,kAsInteger,tAsIntegerDimflagAsBoolean'读取一组正整数,存储在数组a中,代码略Fori=1Ton-1k=1IfIsPrime(a(k))Thenflag=TrueElseflag=FalseForj=i+1TonIfIsPime(a(j))ThenIfa(j)k=jflag=TrueEndIfEndIfNextjIfk<>iThent=a(k):a(k)=a(i):a(i)=tEndIfIfNotflagThenExitFor'ExitFor表示退出循环Nexti'依次输出排序后的数据。代码略EndSubFunctionIsPrime(mAsInteger)AsBoolean'本函数判断m是否是素数:是素数返回值为True,不是素数返回值为False'代码略EndFunction15.【2018.11】下列VB程序功能为:根据文本框Text1中各字符的大小关系,计算各字符升序排列的序号,并将序号保存在数组y中。如文本框内容为“2011”,程序运行后y(1)~y(4)各元素的值分别为“4,1,2,3”。s=Text1.Textn=Len(s)Fori=1Tony(i)=1NextiFori=1To(1)Forj=(2)TonIf(3)Theny(j)=y(j)+1Elsey(i)=y(i)+1EndIfNextjNexti上述程序段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)>=Mid(s,i,1)D.(1)n-1(2)i+1(3)Mid(s,j,1)>Mid(s,i,1)16.【2018.11】数组a中存储的是左右交替上升的n个正整数,如下表所示:a(1)a(2)a(3)……a(n-2)a(n-1)a(n)32538……553112依据对分查找思想,设计一个在数组a中查找数据key的程序,实现该功能的VB程序如下,但加框处代码有错,请改正。PrivateSubCommand1_Click()Constn=6Dima(1Ton)AsInteger,flagAsBooleanDimiAsInteger,jAsInteger,mAsInteger,keyAsInteger‘读取一组正整数,按上述规则存入数组a中,代码略key=Val(Text1.Text)i=1j=(n+1)\2flag=FalseDoWhileim=(i+j)\2Ifkey=a(m)Thenflag=TrueElseIfkeyj=m-1Elsei=m+1EndIfLoopIfNotflagAndj>0Thenm=n–iIfkey=a(m)Thenflag=TrueEndIfIfflagThenText2.Text=Str(m)ElseText2.Text="找不到"EndIfEndSub17.【2019.4】有1个升序排列的数组a(a(1)~a(n),n≥3),从左到右相邻两个元素的差值(后一个元素值减去前一个元素值)先由小到大、再由大到小,且相邻两个差值不相等,为了查找相邻两个元素的最大差值,小李编写的VB程序段如下:i=1:j=nDoWhilei+1m=(i+j)\2Ifa(m+1)-a(m)>a(m)-a(m-1)Then1Else②EndifLoopLabel1.Caption="相邻两个元素的最大差值是"+Str(a(j)-a(i))上述程序段两个方框处的语句分别为()A.①i=m②j=mB.①i=m②j=m-1C.①i=m+1②j=m-1D.①i=m+1②j=m18.【2019.4】小明基于冒泡排序思想设计了一个改进的排序算法。该算法先用冒泡法将数组a中奇数位置的元素、偶数位置的元素分别进行排序,然后再进行后续处理。算法的VB程序段如下,但加框处代码有错,请改
k=a(j):
a(j)=a(j-1):
a(j-1)=k
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表示退出循环
IfkeyLoop数组元素d(1)到d(9)的值依次为“7,12,18,25,39,58,61,72,86”。若该程序段运行结束后,n的值为2,则key的值是()A.39B.18或61C.18或72D.12或617.【2016.10】小吴为了研究冒泡排序过程中数据的“移动”情况,编写了一个VB程序,功能如下:在列表框List1中显示排序前数据(存储在数组a中),在文本框Text1中输入初始位置(即下标值),单击“排序”按钮Command1后,在标签Label1中显示指定初始位置的数据在排序过程中的位置变化情况,排序后的数据显示在列表框List2中。程序运行界面如图所示。 实现上述功能的VB程序如下,但加框处代码有错,请改正。Dima(1To8)AsIntegerDimnAsIntegerPrivateSubForm_Load()a(1)=30:a(2)=47:a(3)=30:a(4)=72a(5)=70:a(6)=23:a(7)=99:a(8)=24n=8Fori=1To8List1.AddItema(i)NextiEndSubPrivateSubCommand1_Click()DimiAsInteger,jAsInteger,kAsIntegerDimposAsIntegerDimsAsStrings=Text1.Textpos=Val(Text1.Text)Fori=1Ton-1Forj=nToi+1Step-1Ifa(j)a(j-1)=a(j)a(j)=k'如果pos位置的数据参与交换,则更新pos值,记录pos变化位置Ifpos=jThenpos=j-1s=s+"→"+Str(pos)pos=js=s+"→"+Str(pos)EndIfEndIfNextjNextiLabel1.Caption="位置变化情况:"+sFori=1TonList2.AddItemStr(a(i))NextiEndSub8.【2017.4】某对分查找算法的VB程序段如下:key=Val(Text1.Text)i=1:j=10Text2.Text=""DoWhilei<=jm=Int((i+j)/2+0.5)Ifkey=a(m)ThenExitDo'ExitDo表示退出循环IfkeyText2.Text=Text2.Text+Str(a(m))Loop数组元素a(1)到a(10)的值依次为“8,17,24,30,36,40,55,58,61,66”,文本框Text1中输入的值是30,执行该程序段,文本框Text2中显示的是()A.4024B.402436C.3624D.3617249.【2017.4】小赵对选择排序算法进行了如下改进:在数组的所有元素中找出最小和最大数据的元素,然后将这两个元素分别与第一个和最后一个元素交换数据,在余下的元素中找出最小和最大数据的元素,分别与第二个和倒数第二个元素交换数据,以此类推,直到所有元素的数据按升序排列。小赵编写的VB程序段如下:p=1:q=10DoWhilepiMin=p:iMax=pFori=p+1ToqIfa(i)Ifa(i)>a(iMax)TheniMax=iNextit=a(iMin):a(iMin)=a(p):a(p)=t①t=a(iMax):a(iMax)=a(q):a(q)=tp=p+1q=q-1Loop要使程序实现上述算法思想,则方框中的语句是()A.IfiMax=pTheniMax=iMinB.IfiMin=pTheniMin=iMaxC.IfiMax=pTheniMin=iMaxD.IfiMin=pTheniMax=iMin10.【2017.4】小王编写了一个依据成绩计算名次的VB程序,成绩为0到100之间的整数。算法的基本思想:先统计每个分数的个数,然后按照分数从高到低依次计算每个有效分数(该分数的个数不为0)对应的名次,分数相同时名次并列。最高分为第1名,该分数的名次与个数之和为下一个有效分数的名次,以此类推。程序用数组A存放每个分数对应的个数,数组B存放每个分数对应的名次。例如,下表中最高分100有2个,并列第1名,则分数96的名次为分数100的名次加上分数100的个数,即第3名。分数100999897969594…0个数(A数组)2000103…0名次(B数组)134…程序运行时,学生数据显示在列表框List1中,单击“计算”按钮Command1,计算结果显示在列表框List2中,程序运行界面如图所示。 实现上述功能的VB程序如下,请回答下列问题:(1)如表所示,若分数93的个数为2,则该分数对应的名次为_____________。(2)请在划线处填入合适的代码。DimsName(1To50)AsString'存放学生姓名DimsScore(1To50)AsInteger'存放学生分数DimrecCountAsInteger'存放学生人数PrivateSubForm_Load()'本过程从数据库中读取学生数据,存储在相应的变量中,并在List1中显示'代码略EndSub'整数转换成长度固定的字符串Functionads(xAsInteger,nAsInteger)AsStringDimsxAsString,nxAsInteger,iAsIntegersx=Str(x):nx=Len(sx)Fori=1Ton-nxsx=""+sxNexti①EndFunctionPrivateSubCommand1_Click()DimA(0To100)AsInteger'存放每个分数的个数DimB(0To100)AsInteger'存放每个分数的名次DimmcAsInteger,scoreAsInteger,iAsIntegerFori=0To100A(i)=0NextiFori=1TorecCount'计算每个分数的个数②Nextimc=1Fori=100To0Step-1'计算每个分数的名次IfA(i)<>0ThenB(i)=mc③EndIfNextiList2.ClearList2.AddItem"姓名分数名次"List2.AddItem"----------------"Fori=1TorecCountscore=sScore(i)mc=B(sScore(i))List2.AddItemsName(i)+ads(score,5)+"第"+ads(mc,3)+"名"NextiEndSub11.【2017.11】某对分査找算法的VB程序段如下:i=1:j=7:s=""key=Int(Rnd*100)DoWhilei<=jm=(i+j)\2Ifkey=a(m)Thens=s+"M":ExitDo'ExitDo表示退出循环ElseIfkeyj=m-1:s=s+"L"Elsei=m+1:s=s+"R"EndIfLoopText1.Text=s数组元素a(1)到a(7)的值依次为“24,35,38,41,45,69,78”。若该程序段执行后,文本框Text1中显示的内容可能是()A.RLB.LMRC.RLRD.LRLM12.【2017.11】小李基于冒泡排序算法编写了一个VB程序,功能如下:在文本框Text1中显示排序前的数据,单击“排序”按钮Command1,在文本框Text2中显示剔除重复数据后的升序排序结果。程序运行界面如下图所示。 实现上述功能的VB程序如下,但加框处代码有错,请改正。Constn=10Dima(1Ton)AsIntegerPrivateSubCommand1_Click()DimiAsInteger,jAsInteger,tAsIntegerDimbottomAsInteger'获取排序前数据依次存储在数组a中,并在文本框Text1中显示。代码略bottom=ni=1DoWhilei<=bottom-1Forj=bottomToi+1Step-1Ifa(j)t=a(j):a(j)=a(j-1):a(j-1)=tElseIfa(j)=a(j-1)Then'相邻两个数据相等,进行剔除处理a(bottom)=a(j)bottom=bottom-1EndIfNextji=i+1LoopText2.Text=""Fori=1TobottomText2.Text=Text2.Text+Str(a(i))NextiEndSub13.【2018.4】下列VB程序功能为:根据文本框Text1中各字符的大小关系,计算各字符升序排列的序号,并将序号保存在数组y中。如文本框内容为“2011”,程序运行后y(1)~y(4)各元素的值分别为“4,1,2,3”。s=Text1.Textn=Len(s)Fori=1Tony(i)=1NextiFori=1To(1)Forj=(2)TonIf(3)Theny(j)=y(j)+1Elsey(i)=y(i)+1EndIfNextjNexti上述程序段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)>=Mid(s,i,1)D.(1)n-1(2)i+1(3)Mid(s,j,1)>Mid(s,i,1)14.【2018.4】有一组正整数,要求供对其中的素数进行升序排序。排序后素数在前,非素数在后。排序示例如下。排序前867154181793789排序后537417179898681Constn=8Dima(1Ton)AsIntegerPrivateSubCommand1_Click()DimiAsInteger,jAsInteger,kAsInteger,tAsIntegerDimflagAsBoolean'读取一组正整数,存储在数组a中,代码略Fori=1Ton-1k=1IfIsPrime(a(k))Thenflag=TrueElseflag=FalseForj=i+1TonIfIsPime(a(j))ThenIfa(j)k=jflag=TrueEndIfEndIfNextjIfk<>iThent=a(k):a(k)=a(i):a(i)=tEndIfIfNotflagThenExitFor'ExitFor表示退出循环Nexti'依次输出排序后的数据。代码略EndSubFunctionIsPrime(mAsInteger)AsBoolean'本函数判断m是否是素数:是素数返回值为True,不是素数返回值为False'代码略EndFunction15.【2018.11】下列VB程序功能为:根据文本框Text1中各字符的大小关系,计算各字符升序排列的序号,并将序号保存在数组y中。如文本框内容为“2011”,程序运行后y(1)~y(4)各元素的值分别为“4,1,2,3”。s=Text1.Textn=Len(s)Fori=1Tony(i)=1NextiFori=1To(1)Forj=(2)TonIf(3)Theny(j)=y(j)+1Elsey(i)=y(i)+1EndIfNextjNexti上述程序段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)>=Mid(s,i,1)D.(1)n-1(2)i+1(3)Mid(s,j,1)>Mid(s,i,1)16.【2018.11】数组a中存储的是左右交替上升的n个正整数,如下表所示:a(1)a(2)a(3)……a(n-2)a(n-1)a(n)32538……553112依据对分查找思想,设计一个在数组a中查找数据key的程序,实现该功能的VB程序如下,但加框处代码有错,请改正。PrivateSubCommand1_Click()Constn=6Dima(1Ton)AsInteger,flagAsBooleanDimiAsInteger,jAsInteger,mAsInteger,keyAsInteger‘读取一组正整数,按上述规则存入数组a中,代码略key=Val(Text1.Text)i=1j=(n+1)\2flag=FalseDoWhileim=(i+j)\2Ifkey=a(m)Thenflag=TrueElseIfkeyj=m-1Elsei=m+1EndIfLoopIfNotflagAndj>0Thenm=n–iIfkey=a(m)Thenflag=TrueEndIfIfflagThenText2.Text=Str(m)ElseText2.Text="找不到"EndIfEndSub17.【2019.4】有1个升序排列的数组a(a(1)~a(n),n≥3),从左到右相邻两个元素的差值(后一个元素值减去前一个元素值)先由小到大、再由大到小,且相邻两个差值不相等,为了查找相邻两个元素的最大差值,小李编写的VB程序段如下:i=1:j=nDoWhilei+1m=(i+j)\2Ifa(m+1)-a(m)>a(m)-a(m-1)Then1Else②EndifLoopLabel1.Caption="相邻两个元素的最大差值是"+Str(a(j)-a(i))上述程序段两个方框处的语句分别为()A.①i=m②j=mB.①i=m②j=m-1C.①i=m+1②j=m-1D.①i=m+1②j=m18.【2019.4】小明基于冒泡排序思想设计了一个改进的排序算法。该算法先用冒泡法将数组a中奇数位置的元素、偶数位置的元素分别进行排序,然后再进行后续处理。算法的VB程序段如下,但加框处代码有错,请改
数组元素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:
(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
Ifa(j)a(j-1)=a(j)a(j)=k'如果pos位置的数据参与交换,则更新pos值,记录pos变化位置Ifpos=jThenpos=j-1s=s+"→"+Str(pos)pos=js=s+"→"+Str(pos)EndIfEndIfNextjNextiLabel1.Caption="位置变化情况:"+sFori=1TonList2.AddItemStr(a(i))NextiEndSub8.【2017.4】某对分查找算法的VB程序段如下:key=Val(Text1.Text)i=1:j=10Text2.Text=""DoWhilei<=jm=Int((i+j)/2+0.5)Ifkey=a(m)ThenExitDo'ExitDo表示退出循环IfkeyText2.Text=Text2.Text+Str(a(m))Loop数组元素a(1)到a(10)的值依次为“8,17,24,30,36,40,55,58,61,66”,文本框Text1中输入的值是30,执行该程序段,文本框Text2中显示的是()A.4024B.402436C.3624D.3617249.【2017.4】小赵对选择排序算法进行了如下改进:在数组的所有元素中找出最小和最大数据的元素,然后将这两个元素分别与第一个和最后一个元素交换数据,在余下的元素中找出最小和最大数据的元素,分别与第二个和倒数第二个元素交换数据,以此类推,直到所有元素的数据按升序排列。小赵编写的VB程序段如下:p=1:q=10DoWhilepiMin=p:iMax=pFori=p+1ToqIfa(i)Ifa(i)>a(iMax)TheniMax=iNextit=a(iMin):a(iMin)=a(p):a(p)=t①t=a(iMax):a(iMax)=a(q):a(q)=tp=p+1q=q-1Loop要使程序实现上述算法思想,则方框中的语句是()A.IfiMax=pTheniMax=iMinB.IfiMin=pTheniMin=iMaxC.IfiMax=pTheniMin=iMaxD.IfiMin=pTheniMax=iMin10.【2017.4】小王编写了一个依据成绩计算名次的VB程序,成绩为0到100之间的整数。算法的基本思想:先统计每个分数的个数,然后按照分数从高到低依次计算每个有效分数(该分数的个数不为0)对应的名次,分数相同时名次并列。最高分为第1名,该分数的名次与个数之和为下一个有效分数的名次,以此类推。程序用数组A存放每个分数对应的个数,数组B存放每个分数对应的名次。例如,下表中最高分100有2个,并列第1名,则分数96的名次为分数100的名次加上分数100的个数,即第3名。分数100999897969594…0个数(A数组)2000103…0名次(B数组)134…程序运行时,学生数据显示在列表框List1中,单击“计算”按钮Command1,计算结果显示在列表框List2中,程序运行界面如图所示。 实现上述功能的VB程序如下,请回答下列问题:(1)如表所示,若分数93的个数为2,则该分数对应的名次为_____________。(2)请在划线处填入合适的代码。DimsName(1To50)AsString'存放学生姓名DimsScore(1To50)AsInteger'存放学生分数DimrecCountAsInteger'存放学生人数PrivateSubForm_Load()'本过程从数据库中读取学生数据,存储在相应的变量中,并在List1中显示'代码略EndSub'整数转换成长度固定的字符串Functionads(xAsInteger,nAsInteger)AsStringDimsxAsString,nxAsInteger,iAsIntegersx=Str(x):nx=Len(sx)Fori=1Ton-nxsx=""+sxNexti①EndFunctionPrivateSubCommand1_Click()DimA(0To100)AsInteger'存放每个分数的个数DimB(0To100)AsInteger'存放每个分数的名次DimmcAsInteger,scoreAsInteger,iAsIntegerFori=0To100A(i)=0NextiFori=1TorecCount'计算每个分数的个数②Nextimc=1Fori=100To0Step-1'计算每个分数的名次IfA(i)<>0ThenB(i)=mc③EndIfNextiList2.ClearList2.AddItem"姓名分数名次"List2.AddItem"----------------"Fori=1TorecCountscore=sScore(i)mc=B(sScore(i))List2.AddItemsName(i)+ads(score,5)+"第"+ads(mc,3)+"名"NextiEndSub11.【2017.11】某对分査找算法的VB程序段如下:i=1:j=7:s=""key=Int(Rnd*100)DoWhilei<=jm=(i+j)\2Ifkey=a(m)Thens=s+"M":ExitDo'ExitDo表示退出循环ElseIfkeyj=m-1:s=s+"L"Elsei=m+1:s=s+"R"EndIfLoopText1.Text=s数组元素a(1)到a(7)的值依次为“24,35,38,41,45,69,78”。若该程序段执行后,文本框Text1中显示的内容可能是()A.RLB.LMRC.RLRD.LRLM12.【2017.11】小李基于冒泡排序算法编写了一个VB程序,功能如下:在文本框Text1中显示排序前的数据,单击“排序”按钮Command1,在文本框Text2中显示剔除重复数据后的升序排序结果。程序运行界面如下图所示。 实现上述功能的VB程序如下,但加框处代码有错,请改正。Constn=10Dima(1Ton)AsIntegerPrivateSubCommand1_Click()DimiAsInteger,jAsInteger,tAsIntegerDimbottomAsInteger'获取排序前数据依次存储在数组a中,并在文本框Text1中显示。代码略bottom=ni=1DoWhilei<=bottom-1Forj=bottomToi+1Step-1Ifa(j)t=a(j):a(j)=a(j-1):a(j-1)=tElseIfa(j)=a(j-1)Then'相邻两个数据相等,进行剔除处理a(bottom)=a(j)bottom=bottom-1EndIfNextji=i+1LoopText2.Text=""Fori=1TobottomText2.Text=Text2.Text+Str(a(i))NextiEndSub13.【2018.4】下列VB程序功能为:根据文本框Text1中各字符的大小关系,计算各字符升序排列的序号,并将序号保存在数组y中。如文本框内容为“2011”,程序运行后y(1)~y(4)各元素的值分别为“4,1,2,3”。s=Text1.Textn=Len(s)Fori=1Tony(i)=1NextiFori=1To(1)Forj=(2)TonIf(3)Theny(j)=y(j)+1Elsey(i)=y(i)+1EndIfNextjNexti上述程序段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)>=Mid(s,i,1)D.(1)n-1(2)i+1(3)Mid(s,j,1)>Mid(s,i,1)14.【2018.4】有一组正整数,要求供对其中的素数进行升序排序。排序后素数在前,非素数在后。排序示例如下。排序前867154181793789排序后537417179898681Constn=8Dima(1Ton)AsIntegerPrivateSubCommand1_Click()DimiAsInteger,jAsInteger,kAsInteger,tAsIntegerDimflagAsBoolean'读取一组正整数,存储在数组a中,代码略Fori=1Ton-1k=1IfIsPrime(a(k))Thenflag=TrueElseflag=FalseForj=i+1TonIfIsPime(a(j))ThenIfa(j)k=jflag=TrueEndIfEndIfNextjIfk<>iThent=a(k):a(k)=a(i):a(i)=tEndIfIfNotflagThenExitFor'ExitFor表示退出循环Nexti'依次输出排序后的数据。代码略EndSubFunctionIsPrime(mAsInteger)AsBoolean'本函数判断m是否是素数:是素数返回值为True,不是素数返回值为False'代码略EndFunction15.【2018.11】下列VB程序功能为:根据文本框Text1中各字符的大小关系,计算各字符升序排列的序号,并将序号保存在数组y中。如文本框内容为“2011”,程序运行后y(1)~y(4)各元素的值分别为“4,1,2,3”。s=Text1.Textn=Len(s)Fori=1Tony(i)=1NextiFori=1To(1)Forj=(2)TonIf(3)Theny(j)=y(j)+1Elsey(i)=y(i)+1EndIfNextjNexti上述程序段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)>=Mid(s,i,1)D.(1)n-1(2)i+1(3)Mid(s,j,1)>Mid(s,i,1)16.【2018.11】数组a中存储的是左右交替上升的n个正整数,如下表所示:a(1)a(2)a(3)……a(n-2)a(n-1)a(n)32538……553112依据对分查找思想,设计一个在数组a中查找数据key的程序,实现该功能的VB程序如下,但加框处代码有错,请改正。PrivateSubCommand1_Click()Constn=6Dima(1Ton)AsInteger,flagAsBooleanDimiAsInteger,jAsInteger,mAsInteger,keyAsInteger‘读取一组正整数,按上述规则存入数组a中,代码略key=Val(Text1.Text)i=1j=(n+1)\2flag=FalseDoWhileim=(i+j)\2Ifkey=a(m)Thenflag=TrueElseIfkeyj=m-1Elsei=m+1EndIfLoopIfNotflagAndj>0Thenm=n–iIfkey=a(m)Thenflag=TrueEndIfIfflagThenText2.Text=Str(m)ElseText2.Text="找不到"EndIfEndSub17.【2019.4】有1个升序排列的数组a(a(1)~a(n),n≥3),从左到右相邻两个元素的差值(后一个元素值减去前一个元素值)先由小到大、再由大到小,且相邻两个差值不相等,为了查找相邻两个元素的最大差值,小李编写的VB程序段如下:i=1:j=nDoWhilei+1m=(i+j)\2Ifa(m+1)-a(m)>a(m)-a(m-1)Then1Else②EndifLoopLabel1.Caption="相邻两个元素的最大差值是"+Str(a(j)-a(i))上述程序段两个方框处的语句分别为()A.①i=m②j=mB.①i=m②j=m-1C.①i=m+1②j=m-1D.①i=m+1②j=m18.【2019.4】小明基于冒泡排序思想设计了一个改进的排序算法。该算法先用冒泡法将数组a中奇数位置的元素、偶数位置的元素分别进行排序,然后再进行后续处理。算法的VB程序段如下,但加框处代码有错,请改
a(j-1)=a(j)
a(j)=k
'如果pos位置的数据参与交换,则更新pos值,记录pos变化位置
Ifpos=jThen
pos=j-1
s=s+"→"+Str(pos)
pos=j
Label1.Caption="位置变化情况:
"+s
8.【2017.4】某对分查找算法的VB程序段如下:
key=Val(Text1.Text)
j=10
Text2.Text=""
m=Int((i+j)/2+0.5)
Ifkey=a(m)ThenExitDo'ExitDo表示退出循环
IfkeyText2.Text=Text2.Text+Str(a(m))Loop数组元素a(1)到a(10)的值依次为“8,17,24,30,36,40,55,58,61,66”,文本框Text1中输入的值是30,执行该程序段,文本框Text2中显示的是()A.4024B.402436C.3624D.3617249.【2017.4】小赵对选择排序算法进行了如下改进:在数组的所有元素中找出最小和最大数据的元素,然后将这两个元素分别与第一个和最后一个元素交换数据,在余下的元素中找出最小和最大数据的元素,分别与第二个和倒数第二个元素交换数据,以此类推,直到所有元素的数据按升序排列。小赵编写的VB程序段如下:p=1:q=10DoWhilepiMin=p:iMax=pFori=p+1ToqIfa(i)Ifa(i)>a(iMax)TheniMax=iNextit=a(iMin):a(iMin)=a(p):a(p)=t①t=a(iMax):a(iMax)=a(q):a(q)=tp=p+1q=q-1Loop要使程序实现上述算法思想,则方框中的语句是()A.IfiMax=pTheniMax=iMinB.IfiMin=pTheniMin=iMaxC.IfiMax=pTheniMin=iMaxD.IfiMin=pTheniMax=iMin10.【2017.4】小王编写了一个依据成绩计算名次的VB程序,成绩为0到100之间的整数。算法的基本思想:先统计每个分数的个数,然后按照分数从高到低依次计算每个有效分数(该分数的个数不为0)对应的名次,分数相同时名次并列。最高分为第1名,该分数的名次与个数之和为下一个有效分数的名次,以此类推。程序用数组A存放每个分数对应的个数,数组B存放每个分数对应的名次。例如,下表中最高分100有2个,并列第1名,则分数96的名次为分数100的名次加上分数100的个数,即第3名。分数100999897969594…0个数(A数组)2000103…0名次(B数组)134…程序运行时,学生数据显示在列表框List1中,单击“计算”按钮Command1,计算结果显示在列表框List2中,程序运行界面如图所示。 实现上述功能的VB程序如下,请回答下列问题:(1)如表所示,若分数93的个数为2,则该分数对应的名次为_____________。(2)请在划线处填入合适的代码。DimsName(1To50)AsString'存放学生姓名DimsScore(1To50)AsInteger'存放学生分数DimrecCountAsInteger'存放学生人数PrivateSubForm_Load()'本过程从数据库中读取学生数据,存储在相应的变量中,并在List1中显示'代码略EndSub'整数转换成长度固定的字符串Functionads(xAsInteger,nAsInteger)AsStringDimsxAsString,nxAsInteger,iAsIntegersx=Str(x):nx=Len(sx)Fori=1Ton-nxsx=""+sxNexti①EndFunctionPrivateSubCommand1_Click()DimA(0To100)AsInteger'存放每个分数的个数DimB(0To100)AsInteger'存放每个分数的名次DimmcAsInteger,scoreAsInteger,iAsIntegerFori=0To100A(i)=0NextiFori=1TorecCount'计算每个分数的个数②Nextimc=1Fori=100To0Step-1'计算每个分数的名次IfA(i)<>0ThenB(i)=mc③EndIfNextiList2.ClearList2.AddItem"姓名分数名次"List2.AddItem"----------------"Fori=1TorecCountscore=sScore(i)mc=B(sScore(i))List2.AddItemsName(i)+ads(score,5)+"第"+ads(mc,3)+"名"NextiEndSub11.【2017.11】某对分査找算法的VB程序段如下:i=1:j=7:s=""key=Int(Rnd*100)DoWhilei<=jm=(i+j)\2Ifkey=a(m)Thens=s+"M":ExitDo'ExitDo表示退出循环ElseIfkeyj=m-1:s=s+"L"Elsei=m+1:s=s+"R"EndIfLoopText1.Text=s数组元素a(1)到a(7)的值依次为“24,35,38,41,45,69,78”。若该程序段执行后,文本框Text1中显示的内容可能是()A.RLB.LMRC.RLRD.LRLM12.【2017.11】小李基于冒泡排序算法编写了一个VB程序,功能如下:在文本框Text1中显示排序前的数据,单击“排序”按钮Command1,在文本框Text2中显示剔除重复数据后的升序排序结果。程序运行界面如下图所示。 实现上述功能的VB程序如下,但加框处代码有错,请改正。Constn=10Dima(1Ton)AsIntegerPrivateSubCommand1_Click()DimiAsInteger,jAsInteger,tAsIntegerDimbottomAsInteger'获取排序前数据依次存储在数组a中,并在文本框Text1中显示。代码略bottom=ni=1DoWhilei<=bottom-1Forj=bottomToi+1Step-1Ifa(j)t=a(j):a(j)=a(j-1):a(j-1)=tElseIfa(j)=a(j-1)Then'相邻两个数据相等,进行剔除处理a(bottom)=a(j)bottom=bottom-1EndIfNextji=i+1LoopText2.Text=""Fori=1TobottomText2.Text=Text2.Text+Str(a(i))NextiEndSub13.【2018.4】下列VB程序功能为:根据文本框Text1中各字符的大小关系,计算各字符升序排列的序号,并将序号保存在数组y中。如文本框内容为“2011”,程序运行后y(1)~y(4)各元素的值分别为“4,1,2,3”。s=Text1.Textn=Len(s)Fori=1Tony(i)=1NextiFori=1To(1)Forj=(2)TonIf(3)Theny(j)=y(j)+1Elsey(i)=y(i)+1EndIfNextjNexti上述程序段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)>=Mid(s,i,1)D.(1)n-1(2)i+1(3)Mid(s,j,1)>Mid(s,i,1)14.【2018.4】有一组正整数,要求供对其中的素数进行升序排序。排序后素数在前,非素数在后。排序示例如下。排序前867154181793789排序后537417179898681Constn=8Dima(1Ton)AsIntegerPrivateSubCommand1_Click()DimiAsInteger,jAsInteger,kAsInteger,tAsIntegerDimflagAsBoolean'读取一组正整数,存储在数组a中,代码略Fori=1Ton-1k=1IfIsPrime(a(k))Thenflag=TrueElseflag=FalseForj=i+1TonIfIsPime(a(j))ThenIfa(j)k=jflag=TrueEndIfEndIfNextjIfk<>iThent=a(k):a(k)=a(i):a(i)=tEndIfIfNotflagThenExitFor'ExitFor表示退出循环Nexti'依次输出排序后的数据。代码略EndSubFunctionIsPrime(mAsInteger)AsBoolean'本函数判断m是否是素数:是素数返回值为True,不是素数返回值为False'代码略EndFunction15.【2018.11】下列VB程序功能为:根据文本框Text1中各字符的大小关系,计算各字符升序排列的序号,并将序号保存在数组y中。如文本框内容为“2011”,程序运行后y(1)~y(4)各元素的值分别为“4,1,2,3”。s=Text1.Textn=Len(s)Fori=1Tony(i)=1NextiFori=1To(1)Forj=(2)TonIf(3)Theny(j)=y(j)+1Elsey(i)=y(i)+1EndIfNextjNexti上述程序段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)>=Mid(s,i,1)D.(1)n-1(2)i+1(3)Mid(s,j,1)>Mid(s,i,1)16.【2018.11】数组a中存储的是左右交替上升的n个正整数,如下表所示:a(1)a(2)a(3)……a(n-2)a(n-1)a(n)32538……553112依据对分查找思想,设计一个在数组a中查找数据key的程序,实现该功能的VB程序如下,但加框处代码有错,请改正。PrivateSubCommand1_Click()Constn=6Dima(1Ton)AsInteger,flagAsBooleanDimiAsInteger,jAsInteger,mAsInteger,keyAsInteger‘读取一组正整数,按上述规则存入数组a中,代码略key=Val(Text1.Text)i=1j=(n+1)\2flag=FalseDoWhileim=(i+j)\2Ifkey=a(m)Thenflag=TrueElseIfkeyj=m-1Elsei=m+1EndIfLoopIfNotflagAndj>0Thenm=n–iIfkey=a(m)Thenflag=TrueEndIfIfflagThenText2.Text=Str(m)ElseText2.Text="找不到"EndIfEndSub17.【2019.4】有1个升序排列的数组a(a(1)~a(n),n≥3),从左到右相邻两个元素的差值(后一个元素值减去前一个元素值)先由小到大、再由大到小,且相邻两个差值不相等,为了查找相邻两个元素的最大差值,小李编写的VB程序段如下:i=1:j=nDoWhilei+1m=(i+j)\2Ifa(m+1)-a(m)>a(m)-a(m-1)Then1Else②EndifLoopLabel1.Caption="相邻两个元素的最大差值是"+Str(a(j)-a(i))上述程序段两个方框处的语句分别为()A.①i=m②j=mB.①i=m②j=m-1C.①i=m+1②j=m-1D.①i=m+1②j=m18.【2019.4】小明基于冒泡排序思想设计了一个改进的排序算法。该算法先用冒泡法将数组a中奇数位置的元素、偶数位置的元素分别进行排序,然后再进行后续处理。算法的VB程序段如下,但加框处代码有错,请改
Text2.Text=Text2.Text+Str(a(m))
(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
DoWhilepiMin=p:iMax=pFori=p+1ToqIfa(i)Ifa(i)>a(iMax)TheniMax=iNextit=a(iMin):a(iMin)=a(p):a(p)=t①t=a(iMax):a(iMax)=a(q):a(q)=tp=p+1q=q-1Loop要使程序实现上述算法思想,则方框中的语句是()A.IfiMax=pTheniMax=iMinB.IfiMin=pTheniMin=iMaxC.IfiMax=pTheniMin=iMaxD.IfiMin=pTheniMax=iMin10.【2017.4】小王编写了一个依据成绩计算名次的VB程序,成绩为0到100之间的整数。算法的基本思想:先统计每个分数的个数,然后按照分数从高到低依次计算每个有效分数(该分数的个数不为0)对应的名次,分数相同时名次并列。最高分为第1名,该分数的名次与个数之和为下一个有效分数的名次,以此类推。程序用数组A存放每个分数对应的个数,数组B存放每个分数对应的名次。例如,下表中最高分100有2个,并列第1名,则分数96的名次为分数100的名次加上分数100的个数,即第3名。分数100999897969594…0个数(A数组)2000103…0名次(B数组)134…程序运行时,学生数据显示在列表框List1中,单击“计算”按钮Command1,计算结果显示在列表框List2中,程序运行界面如图所示。 实现上述功能的VB程序如下,请回答下列问题:(1)如表所示,若分数93的个数为2,则该分数对应的名次为_____________。(2)请在划线处填入合适的代码。DimsName(1To50)AsString'存放学生姓名DimsScore(1To50)AsInteger'存放学生分数DimrecCountAsInteger'存放学生人数PrivateSubForm_Load()'本过程从数据库中读取学生数据,存储在相应的变量中,并在List1中显示'代码略EndSub'整数转换成长度固定的字符串Functionads(xAsInteger,nAsInteger)AsStringDimsxAsString,nxAsInteger,iAsIntegersx=Str(x):nx=Len(sx)Fori=1Ton-nxsx=""+sxNexti①EndFunctionPrivateSubCommand1_Click()DimA(0To100)AsInteger'存放每个分数的个数DimB(0To100)AsInteger'存放每个分数的名次DimmcAsInteger,scoreAsInteger,iAsIntegerFori=0To100A(i)=0NextiFori=1TorecCount'计算每个分数的个数②Nextimc=1Fori=100To0Step-1'计算每个分数的名次IfA(i)<>0ThenB(i)=mc③EndIfNextiList2.ClearList2.AddItem"姓名分数名次"List2.AddItem"----------------"Fori=1TorecCountscore=sScore(i)mc=B(sScore(i))List2.AddItemsName(i)+ads(score,5)+"第"+ads(mc,3)+"名"NextiEndSub11.【2017.11】某对分査找算法的VB程序段如下:i=1:j=7:s=""key=Int(Rnd*100)DoWhilei<=jm=(i+j)\2Ifkey=a(m)Thens=s+"M":ExitDo'ExitDo表示退出循环ElseIfkeyj=m-1:s=s+"L"Elsei=m+1:s=s+"R"EndIfLoopText1.Text=s数组元素a(1)到a(7)的值依次为“24,35,38,41,45,69,78”。若该程序段执行后,文本框Text1中显示的内容可能是()A.RLB.LMRC.RLRD.LRLM12.【2017.11】小李基于冒泡排序算法编写了一个VB程序,功能如下:在文本框Text1中显示排序前的数据,单击“排序”按钮Command1,在文本框Text2中显示剔除重复数据后的升序排序结果。程序运行界面如下图所示。 实现上述功能的VB程序如下,但加框处代码有错,请改正。Constn=10Dima(1Ton)AsIntegerPrivateSubCommand1_Click()DimiAsInteger,jAsInteger,tAsIntegerDimbottomAsInteger'获取排序前数据依次存储在数组a中,并在文本框Text1中显示。代码略bottom=ni=1DoWhilei<=bottom-1Forj=bottomToi+1Step-1Ifa(j)t=a(j):a(j)=a(j-1):a(j-1)=tElseIfa(j)=a(j-1)Then'相邻两个数据相等,进行剔除处理a(bottom)=a(j)bottom=bottom-1EndIfNextji=i+1LoopText2.Text=""Fori=1TobottomText2.Text=Text2.Text+Str(a(i))NextiEndSub13.【2018.4】下列VB程序功能为:根据文本框Text1中各字符的大小关系,计算各字符升序排列的序号,并将序号保存在数组y中。如文本框内容为“2011”,程序运行后y(1)~y(4)各元素的值分别为“4,1,2,3”。s=Text1.Textn=Len(s)Fori=1Tony(i)=1NextiFori=1To(1)Forj=(2)TonIf(3)Theny(j)=y(j)+1Elsey(i)=y(i)+1EndIfNextjNexti上述程序段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)>=Mid(s,i,1)D.(1)n-1(2)i+1(3)Mid(s,j,1)>Mid(s,i,1)14.【2018.4】有一组正整数,要求供对其中的素数进行升序排序。排序后素数在前,非素数在后。排序示例如下。排序前867154181793789排序后537417179898681Constn=8Dima(1Ton)AsIntegerPrivateSubCommand1_Click()DimiAsInteger,jAsInteger,kAsInteger,tAsIntegerDimflagAsBoolean'读取一组正整数,存储在数组a中,代码略Fori=1Ton-1k=1IfIsPrime(a(k))Thenflag=TrueElseflag=FalseForj=i+1TonIfIsPime(a(j))ThenIfa(j)k=jflag=TrueEndIfEndIfNextjIfk<>iThent=a(k):a(k)=a(i):a(i)=tEndIfIfNotflagThenExitFor'ExitFor表示退出循环Nexti'依次输出排序后的数据。代码略EndSubFunctionIsPrime(mAsInteger)AsBoolean'本函数判断m是否是素数:是素数返回值为True,不是素数返回值为False'代码略EndFunction15.【2018.11】下列VB程序功能为:根据文本框Text1中各字符的大小关系,计算各字符升序排列的序号,并将序号保存在数组y中。如文本框内容为“2011”,程序运行后y(1)~y(4)各元素的值分别为“4,1,2,3”。s=Text1.Textn=Len(s)Fori=1Tony(i)=1NextiFori=1To(1)Forj=(2)TonIf(3)Theny(j)=y(j)+1Elsey(i)=y(i)+1EndIfNextjNexti上述程序段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)>=Mid(s,i,1)D.(1)n-1(2)i+1(3)Mid(s,j,1)>Mid(s,i,1)16.【2018.11】数组a中存储的是左右交替上升的n个正整数,如下表所示:a(1)a(2)a(3)……a(n-2)a(n-1)a(n)32538……553112依据对分查找思想,设计一个在数组a中查找数据key的程序,实现该功能的VB程序如下,但加框处代码有错,请改正。PrivateSubCommand1_Click()Constn=6Dima(1Ton)AsInteger,flagAsBooleanDimiAsInteger,jAsInteger,mAsInteger,keyAsInteger‘读取一组正整数,按上述规则存入数组a中,代码略key=Val(Text1.Text)i=1j=(n+1)\2flag=FalseDoWhileim=(i+j)\2Ifkey=a(m)Thenflag=TrueElseIfkeyj=m-1Elsei=m+1EndIfLoopIfNotflagAndj>0Thenm=n–iIfkey=a(m)Thenflag=TrueEndIfIfflagThenText2.Text=Str(m)ElseText2.Text="找不到"EndIfEndSub17.【2019.4】有1个升序排列的数组a(a(1)~a(n),n≥3),从左到右相邻两个元素的差值(后一个元素值减去前一个元素值)先由小到大、再由大到小,且相邻两个差值不相等,为了查找相邻两个元素的最大差值,小李编写的VB程序段如下:i=1:j=nDoWhilei+1m=(i+j)\2Ifa(m+1)-a(m)>a(m)-a(m-1)Then1Else②EndifLoopLabel1.Caption="相邻两个元素的最大差值是"+Str(a(j)-a(i))上述程序段两个方框处的语句分别为()A.①i=m②j=mB.①i=m②j=m-1C.①i=m+1②j=m-1D.①i=m+1②j=m18.【2019.4】小明基于冒泡排序思想设计了一个改进的排序算法。该算法先用冒泡法将数组a中奇数位置的元素、偶数位置的元素分别进行排序,然后再进行后续处理。算法的VB程序段如下,但加框处代码有错,请改
iMin=p:iMax=pFori=p+1ToqIfa(i)Ifa(i)>a(iMax)TheniMax=iNextit=a(iMin):a(iMin)=a(p):a(p)=t①t=a(iMax):a(iMax)=a(q):a(q)=tp=p+1q=q-1Loop要使程序实现上述算法思想,则方框中的语句是()A.IfiMax=pTheniMax=iMinB.IfiMin=pTheniMin=iMaxC.IfiMax=pTheniMin=iMaxD.IfiMin=pTheniMax=iMin10.【2017.4】小王编写了一个依据成绩计算名次的VB程序,成绩为0到100之间的整数。算法的基本思想:先统计每个分数的个数,然后按照分数从高到低依次计算每个有效分数(该分数的个数不为0)对应的名次,分数相同时名次并列。最高分为第1名,该分数的名次与个数之和为下一个有效分数的名次,以此类推。程序用数组A存放每个分数对应的个数,数组B存放每个分数对应的名次。例如,下表中最高分100有2个,并列第1名,则分数96的名次为分数100的名次加上分数100的个数,即第3名。分数100999897969594…0个数(A数组)2000103…0名次(B数组)134…程序运行时,学生数据显示在列表框List1中,单击“计算”按钮Command1,计算结果显示在列表框List2中,程序运行界面如图所示。 实现上述功能的VB程序如下,请回答下列问题:(1)如表所示,若分数93的个数为2,则该分数对应的名次为_____________。(2)请在划线处填入合适的代码。DimsName(1To50)AsString'存放学生姓名DimsScore(1To50)AsInteger'存放学生分数DimrecCountAsInteger'存放学生人数PrivateSubForm_Load()'本过程从数据库中读取学生数据,存储在相应的变量中,并在List1中显示'代码略EndSub'整数转换成长度固定的字符串Functionads(xAsInteger,nAsInteger)AsStringDimsxAsString,nxAsInteger,iAsIntegersx=Str(x):nx=Len(sx)Fori=1Ton-nxsx=""+sxNexti①EndFunctionPrivateSubCommand1_Click()DimA(0To100)AsInteger'存放每个分数的个数DimB(0To100)AsInteger'存放每个分数的名次DimmcAsInteger,scoreAsInteger,iAsIntegerFori=0To100A(i)=0NextiFori=1TorecCount'计算每个分数的个数②Nextimc=1Fori=100To0Step-1'计算每个分数的名次IfA(i)<>0ThenB(i)=mc③EndIfNextiList2.ClearList2.AddItem"姓名分数名次"List2.AddItem"----------------"Fori=1TorecCountscore=sScore(i)mc=B(sScore(i))List2.AddItemsName(i)+ads(score,5)+"第"+ads(mc,3)+"名"NextiEndSub11.【2017.11】某对分査找算法的VB程序段如下:i=1:j=7:s=""key=Int(Rnd*100)DoWhilei<=jm=(i+j)\2Ifkey=a(m)Thens=s+"M":ExitDo'ExitDo表示退出循环ElseIfkeyj=m-1:s=s+"L"Elsei=m+1:s=s+"R"EndIfLoopText1.Text=s数组元素a(1)到a(7)的值依次为“24,35,38,41,45,69,78”。若该程序段执行后,文本框Text1中显示的内容可能是()A.RLB.LMRC.RLRD.LRLM12.【2017.11】小李基于冒泡排序算法编写了一个VB程序,功能如下:在文本框Text1中显示排序前的数据,单击“排序”按钮Command1,在文本框Text2中显示剔除重复数据后的升序排序结果。程序运行界面如下图所示。 实现上述功能的VB程序如下,但加框处代码有错,请改正。Constn=10Dima(1Ton)AsIntegerPrivateSubCommand1_Click()DimiAsInteger,jAsInteger,tAsIntegerDimbottomAsInteger'获取排序前数据依次存储在数组a中,并在文本框Text1中显示。代码略bottom=ni=1DoWhilei<=bottom-1Forj=bottomToi+1Step-1Ifa(j)t=a(j):a(j)=a(j-1):a(j-1)=tElseIfa(j)=a(j-1)Then'相邻两个数据相等,进行剔除处理a(bottom)=a(j)bottom=bottom-1EndIfNextji=i+1LoopText2.Text=""Fori=1TobottomText2.Text=Text2.Text+Str(a(i))NextiEndSub13.【2018.4】下列VB程序功能为:根据文本框Text1中各字符的大小关系,计算各字符升序排列的序号,并将序号保存在数组y中。如文本框内容为“2011”,程序运行后y(1)~y(4)各元素的值分别为“4,1,2,3”。s=Text1.Textn=Len(s)Fori=1Tony(i)=1NextiFori=1To(1)Forj=(2)TonIf(3)Theny(j)=y(j)+1Elsey(i)=y(i)+1EndIfNextjNexti上述程序段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)>=Mid(s,i,1)D.(1)n-1(2)i+1(3)Mid(s,j,1)>Mid(s,i,1)14.【2018.4】有一组正整数,要求供对其中的素数进行升序排序。排序后素数在前,非素数在后。排序示例如下。排序前867154181793789排序后537417179898681Constn=8Dima(1Ton)AsIntegerPrivateSubCommand1_Click()DimiAsInteger,jAsInteger,kAsInteger,tAsIntegerDimflagAsBoolean'读取一组正整数,存储在数组a中,代码略Fori=1Ton-1k=1IfIsPrime(a(k))Thenflag=TrueElseflag=FalseForj=i+1TonIfIsPime(a(j))ThenIfa(j)k=jflag=TrueEndIfEndIfNextjIfk<>iThent=a(k):a(k)=a(i):a(i)=tEndIfIfNotflagThenExitFor'ExitFor表示退出循环Nexti'依次输出排序后的数据。代码略EndSubFunctionIsPrime(mAsInteger)AsBoolean'本函数判断m是否是素数:是素数返回值为True,不是素数返回值为False'代码略EndFunction15.【2018.11】下列VB程序功能为:根据文本框Text1中各字符的大小关系,计算各字符升序排列的序号,并将序号保存在数组y中。如文本框内容为“2011”,程序运行后y(1)~y(4)各元素的值分别为“4,1,2,3”。s=Text1.Textn=Len(s)Fori=1Tony(i)=1NextiFori=1To(1)Forj=(2)TonIf(3)Theny(j)=y(j)+1Elsey(i)=y(i)+1EndIfNextjNexti上述程序段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)>=Mid(s,i,1)D.(1)n-1(2)i+1(3)Mid(s,j,1)>Mid(s,i,1)16.【2018.11】数组a中存储的是左右交替上升的n个正整数,如下表所示:a(1)a(2)a(3)……a(n-2)a(n-1)a(n)32538……553112依据对分查找思想,设计一个在数组a中查找数据key的程序,实现该功能的VB程序如下,但加框处代码有错,请改正。PrivateSubCommand1_Click()Constn=6Dima(1Ton)AsInteger,flagAsBooleanDimiAsInteger,jAsInteger,mAsInteger,keyAsInteger‘读取一组正整数,按上述规则存入数组a中,代码略key=Val(Text1.Text)i=1j=(n+1)\2flag=FalseDoWhileim=(i+j)\2Ifkey=a(m)Thenflag=TrueElseIfkeyj=m-1Elsei=m+1EndIfLoopIfNotflagAndj>0Thenm=n–iIfkey=a(m)Thenflag=TrueEndIfIfflagThenText2.Text=Str(m)ElseText2.Text="找不到"EndIfEndSub17.【2019.4】有1个升序排列的数组a(a(1)~a(n),n≥3),从左到右相邻两个元素的差值(后一个元素值减去前一个元素值)先由小到大、再由大到小,且相邻两个差值不相等,为了查找相邻两个元素的最大差值,小李编写的VB程序段如下:i=1:j=nDoWhilei+1m=(i+j)\2Ifa(m+1)-a(m)>a(m)-a(m-1)Then1Else②EndifLoopLabel1.Caption="相邻两个元素的最大差值是"+Str(a(j)-a(i))上述程序段两个方框处的语句分别为()A.①i=m②j=mB.①i=m②j=m-1C.①i=m+1②j=m-1D.①i=m+1②j=m18.【2019.4】小明基于冒泡排序思想设计了一个改进的排序算法。该算法先用冒泡法将数组a中奇数位置的元素、偶数位置的元素分别进行排序,然后再进行后续处理。算法的VB程序段如下,但加框处代码有错,请改
iMin=p:
iMax=p
Fori=p+1Toq
Ifa(i)Ifa(i)>a(iMax)TheniMax=iNextit=a(iMin):a(iMin)=a(p):a(p)=t①t=a(iMax):a(iMax)=a(q):a(q)=tp=p+1q=q-1Loop要使程序实现上述算法思想,则方框中的语句是()A.IfiMax=pTheniMax=iMinB.IfiMin=pTheniMin=iMaxC.IfiMax=pTheniMin=iMaxD.IfiMin=pTheniMax=iMin10.【2017.4】小王编写了一个依据成绩计算名次的VB程序,成绩为0到100之间的整数。算法的基本思想:先统计每个分数的个数,然后按照分数从高到低依次计算每个有效分数(该分数的个数不为0)对应的名次,分数相同时名次并列。最高分为第1名,该分数的名次与个数之和为下一个有效分数的名次,以此类推。程序用数组A存放每个分数对应的个数,数组B存放每个分数对应的名次。例如,下表中最高分100有2个,并列第1名,则分数96的名次为分数100的名次加上分数100的个数,即第3名。分数100999897969594…0个数(A数组)2000103…0名次(B数组)134…程序运行时,学生数据显示在列表框List1中,单击“计算”按钮Command1,计算结果显示在列表框List2中,程序运行界面如图所示。 实现上述功能的VB程序如下,请回答下列问题:(1)如表所示,若分数93的个数为2,则该分数对应的名次为_____________。(2)请在划线处填入合适的代码。DimsName(1To50)AsString'存放学生姓名DimsScore(1To50)AsInteger'存放学生分数DimrecCountAsInteger'存放学生人数PrivateSubForm_Load()'本过程从数据库中读取学生数据,存储在相应的变量中,并在List1中显示'代码略EndSub'整数转换成长度固定的字符串Functionads(xAsInteger,nAsInteger)AsStringDimsxAsString,nxAsInteger,iAsIntegersx=Str(x):nx=Len(sx)Fori=1Ton-nxsx=""+sxNexti①EndFunctionPrivateSubCommand1_Click()DimA(0To100)AsInteger'存放每个分数的个数DimB(0To100)AsInteger'存放每个分数的名次DimmcAsInteger,scoreAsInteger,iAsIntegerFori=0To100A(i)=0NextiFori=1TorecCount'计算每个分数的个数②Nextimc=1Fori=100To0Step-1'计算每个分数的名次IfA(i)<>0ThenB(i)=mc③EndIfNextiList2.ClearList2.AddItem"姓名分数名次"List2.AddItem"----------------"Fori=1TorecCountscore=sScore(i)mc=B(sScore(i))List2.AddItemsName(i)+ads(score,5)+"第"+ads(mc,3)+"名"NextiEndSub11.【2017.11】某对分査找算法的VB程序段如下:i=1:j=7:s=""key=Int(Rnd*100)DoWhilei<=jm=(i+j)\2Ifkey=a(m)Thens=s+"M":ExitDo'ExitDo表示退出循环ElseIfkeyj=m-1:s=s+"L"Elsei=m+1:s=s+"R"EndIfLoopText1.Text=s数组元素a(1)到a(7)的值依次为“24,35,38,41,45,69,78”。若该程序段执行后,文本框Text1中显示的内容可能是()A.RLB.LMRC.RLRD.LRLM12.【2017.11】小李基于冒泡排序算法编写了一个VB程序,功能如下:在文本框Text1中显示排序前的数据,单击“排序”按钮Command1,在文本框Text2中显示剔除重复数据后的升序排序结果。程序运行界面如下图所示。 实现上述功能的VB程序如下,但加框处代码有错,请改正。Constn=10Dima(1Ton)AsIntegerPrivateSubCommand1_Click()DimiAsInteger,jAsInteger,tAsIntegerDimbottomAsInteger'获取排序前数据依次存储在数组a中,并在文本框Text1中显示。代码略bottom=ni=1DoWhilei<=bottom-1Forj=bottomToi+1Step-1Ifa(j)t=a(j):a(j)=a(j-1):a(j-1)=tElseIfa(j)=a(j-1)Then'相邻两个数据相等,进行剔除处理a(bottom)=a(j)bottom=bottom-1EndIfNextji=i+1LoopText2.Text=""Fori=1TobottomText2.Text=Text2.Text+Str(a(i))NextiEndSub13.【2018.4】下列VB程序功能为:根据文本框Text1中各字符的大小关系,计算各字符升序排列的序号,并将序号保存在数组y中。如文本框内容为“2011”,程序运行后y(1)~y(4)各元素的值分别为“4,1,2,3”。s=Text1.Textn=Len(s)Fori=1Tony(i)=1NextiFori=1To(1)Forj=(2)TonIf(3)Theny(j)=y(j)+1Elsey(i)=y(i)+1EndIfNextjNexti上述程序段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)>=Mid(s,i,1)D.(1)n-1(2)i+1(3)Mid(s,j,1)>Mid(s,i,1)14.【2018.4】有一组正整数,要求供对其中的素数进行升序排序。排序后素数在前,非素数在后。排序示例如下。排序前867154181793789排序后537417179898681Constn=8Dima(1Ton)AsIntegerPrivateSubCommand1_Click()DimiAsInteger,jAsInteger,kAsInteger,tAsIntegerDimflagAsBoolean'读取一组正整数,存储在数组a中,代码略Fori=1Ton-1k=1IfIsPrime(a(k))Thenflag=TrueElseflag=FalseForj=i+1TonIfIsPime(a(j))ThenIfa(j)k=jflag=TrueEndIfEndIfNextjIfk<>iThent=a(k):a(k)=a(i):a(i)=tEndIfIfNotflagThenExitFor'ExitFor表示退出循环Nexti'依次输出排序后的数据。代码略EndSubFunctionIsPrime(mAsInteger)AsBoolean'本函数判断m是否是素数:是素数返回值为True,不是素数返回值为False'代码略EndFunction15.【2018.11】下列VB程序功能为:根据文本框Text1中各字符的大小关系,计算各字符升序排列的序号,并将序号保存在数组y中。如文本框内容为“2011”,程序运行后y(1)~y(4)各元素的值分别为“4,1,2,3”。s=Text1.Textn=Len(s)Fori=1Tony(i)=1NextiFori=1To(1)Forj=(2)TonIf(3)Theny(j)=y(j)+1Elsey(i)=y(i)+1EndIfNextjNexti上述程序段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)>=Mid(s,i,1)D.(1)n-1(2)i+1(3)Mid(s,j,1)>Mid(s,i,1)16.【2018.11】数组a中存储的是左右交替上升的n个正整数,如下表所示:a(1)a(2)a(3)……a(n-2)a(n-1)a(n)32538……553112依据对分查找思想,设计一个在数组a中查找数据key的程序,实现该功能的VB程序如下,但加框处代码有错,请改正。PrivateSubCommand1_Click()Constn=6Dima(1Ton)AsInteger,flagAsBooleanDimiAsInteger,jAsInteger,mAsInteger,keyAsInteger‘读取一组正整数,按上述规则存入数组a中,代码略key=Val(Text1.Text)i=1j=(n+1)\2flag=FalseDoWhileim=(i+j)\2Ifkey=a(m)Thenflag=TrueElseIfkeyj=m-1Elsei=m+1EndIfLoopIfNotflagAndj>0Thenm=n–iIfkey=a(m)Thenflag=TrueEndIfIfflagThenText2.Text=Str(m)ElseText2.Text="找不到"EndIfEndSub17.【2019.4】有1个升序排列的数组a(a(1)~a(n),n≥3),从左到右相邻两个元素的差值(后一个元素值减去前一个元素值)先由小到大、再由大到小,且相邻两个差值不相等,为了查找相邻两个元素的最大差值,小李编写的VB程序段如下:i=1:j=nDoWhilei+1m=(i+j)\2Ifa(m+1)-a(m)>a(m)-a(m-1)Then1Else②EndifLoopLabel1.Caption="相邻两个元素的最大差值是"+Str(a(j)-a(i))上述程序段两个方框处的语句分别为()A.①i=m②j=mB.①i=m②j=m-1C.①i=m+1②j=m-1D.①i=m+1②j=m18.【2019.4】小明基于冒泡排序思想设计了一个改进的排序算法。该算法先用冒泡法将数组a中奇数位置的元素、偶数位置的元素分别进行排序,然后再进行后续处理。算法的VB程序段如下,但加框处代码有错,请改
Ifa(i)>a(iMax)TheniMax=i
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
…
0
个数(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"姓名分数名次"
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表示退出循环
ElseIfkeyj=m-1:s=s+"L"Elsei=m+1:s=s+"R"EndIfLoopText1.Text=s数组元素a(1)到a(7)的值依次为“24,35,38,41,45,69,78”。若该程序段执行后,文本框Text1中显示的内容可能是()A.RLB.LMRC.RLRD.LRLM12.【2017.11】小李基于冒泡排序算法编写了一个VB程序,功能如下:在文本框Text1中显示排序前的数据,单击“排序”按钮Command1,在文本框Text2中显示剔除重复数据后的升序排序结果。程序运行界面如下图所示。 实现上述功能的VB程序如下,但加框处代码有错,请改正。Constn=10Dima(1Ton)AsIntegerPrivateSubCommand1_Click()DimiAsInteger,jAsInteger,tAsIntegerDimbottomAsInteger'获取排序前数据依次存储在数组a中,并在文本框Text1中显示。代码略bottom=ni=1DoWhilei<=bottom-1Forj=bottomToi+1Step-1Ifa(j)t=a(j):a(j)=a(j-1):a(j-1)=tElseIfa(j)=a(j-1)Then'相邻两个数据相等,进行剔除处理a(bottom)=a(j)bottom=bottom-1EndIfNextji=i+1LoopText2.Text=""Fori=1TobottomText2.Text=Text2.Text+Str(a(i))NextiEndSub13.【2018.4】下列VB程序功能为:根据文本框Text1中各字符的大小关系,计算各字符升序排列的序号,并将序号保存在数组y中。如文本框内容为“2011”,程序运行后y(1)~y(4)各元素的值分别为“4,1,2,3”。s=Text1.Textn=Len(s)Fori=1Tony(i)=1NextiFori=1To(1)Forj=(2)TonIf(3)Theny(j)=y(j)+1Elsey(i)=y(i)+1EndIfNextjNexti上述程序段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)>=Mid(s,i,1)D.(1)n-1(2)i+1(3)Mid(s,j,1)>Mid(s,i,1)14.【2018.4】有一组正整数,要求供对其中的素数进行升序排序。排序后素数在前,非素数在后。排序示例如下。排序前867154181793789排序后537417179898681Constn=8Dima(1Ton)AsIntegerPrivateSubCommand1_Click()DimiAsInteger,jAsInteger,kAsInteger,tAsIntegerDimflagAsBoolean'读取一组正整数,存储在数组a中,代码略Fori=1Ton-1k=1IfIsPrime(a(k))Thenflag=TrueElseflag=FalseForj=i+1TonIfIsPime(a(j))ThenIfa(j)k=jflag=TrueEndIfEndIfNextjIfk<>iThent=a(k):a(k)=a(i):a(i)=tEndIfIfNotflagThenExitFor'ExitFor表示退出循环Nexti'依次输出排序后的数据。代码略EndSubFunctionIsPrime(mAsInteger)AsBoolean'本函数判断m是否是素数:是素数返回值为True,不是素数返回值为False'代码略EndFunction15.【2018.11】下列VB程序功能为:根据文本框Text1中各字符的大小关系,计算各字符升序排列的序号,并将序号保存在数组y中。如文本框内容为“2011”,程序运行后y(1)~y(4)各元素的值分别为“4,1,2,3”。s=Text1.Textn=Len(s)Fori=1Tony(i)=1NextiFori=1To(1)Forj=(2)TonIf(3)Theny(j)=y(j)+1Elsey(i)=y(i)+1EndIfNextjNexti上述程序段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)>=Mid(s,i,1)D.(1)n-1(2)i+1(3)Mid(s,j,1)>Mid(s,i,1)16.【2018.11】数组a中存储的是左右交替上升的n个正整数,如下表所示:a(1)a(2)a(3)……a(n-2)a(n-1)a(n)32538……553112依据对分查找思想,设计一个在数组a中查找数据key的程序,实现该功能的VB程序如下,但加框处代码有错,请改正。PrivateSubCommand1_Click()Constn=6Dima(1Ton)AsInteger,flagAsBooleanDimiAsInteger,jAsInteger,mAsInteger,keyAsInteger‘读取一组正整数,按上述规则存入数组a中,代码略key=Val(Text1.Text)i=1j=(n+1)\2flag=FalseDoWhileim=(i+j)\2Ifkey=a(m)Thenflag=TrueElseIfkeyj=m-1Elsei=m+1EndIfLoopIfNotflagAndj>0Thenm=n–iIfkey=a(m)Thenflag=TrueEndIfIfflagThenText2.Text=Str(m)ElseText2.Text="找不到"EndIfEndSub17.【2019.4】有1个升序排列的数组a(a(1)~a(n),n≥3),从左到右相邻两个元素的差值(后一个元素值减去前一个元素值)先由小到大、再由大到小,且相邻两个差值不相等,为了查找相邻两个元素的最大差值,小李编写的VB程序段如下:i=1:j=nDoWhilei+1m=(i+j)\2Ifa(m+1)-a(m)>a(m)-a(m-1)Then1Else②EndifLoopLabel1.Caption="相邻两个元素的最大差值是"+Str(a(j)-a(i))上述程序段两个方框处的语句分别为()A.①i=m②j=mB.①i=m②j=m-1C.①i=m+1②j=m-1D.①i=m+1②j=m18.【2019.4】小明基于冒泡排序思想设计了一个改进的排序算法。该算法先用冒泡法将数组a中奇数位置的元素、偶数位置的元素分别进行排序,然后再进行后续处理。算法的VB程序段如下,但加框处代码有错,请改
j=m-1:
s=s+"L"
Else
i=m+1:
s=s+"R"
Text1.Text=s
(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
DoWhilei<=bottom-1
Forj=bottomToi+1Step-1
Ifa(j)t=a(j):a(j)=a(j-1):a(j-1)=tElseIfa(j)=a(j-1)Then'相邻两个数据相等,进行剔除处理a(bottom)=a(j)bottom=bottom-1EndIfNextji=i+1LoopText2.Text=""Fori=1TobottomText2.Text=Text2.Text+Str(a(i))NextiEndSub13.【2018.4】下列VB程序功能为:根据文本框Text1中各字符的大小关系,计算各字符升序排列的序号,并将序号保存在数组y中。如文本框内容为“2011”,程序运行后y(1)~y(4)各元素的值分别为“4,1,2,3”。s=Text1.Textn=Len(s)Fori=1Tony(i)=1NextiFori=1To(1)Forj=(2)TonIf(3)Theny(j)=y(j)+1Elsey(i)=y(i)+1EndIfNextjNexti上述程序段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)>=Mid(s,i,1)D.(1)n-1(2)i+1(3)Mid(s,j,1)>Mid(s,i,1)14.【2018.4】有一组正整数,要求供对其中的素数进行升序排序。排序后素数在前,非素数在后。排序示例如下。排序前867154181793789排序后537417179898681Constn=8Dima(1Ton)AsIntegerPrivateSubCommand1_Click()DimiAsInteger,jAsInteger,kAsInteger,tAsIntegerDimflagAsBoolean'读取一组正整数,存储在数组a中,代码略Fori=1Ton-1k=1IfIsPrime(a(k))Thenflag=TrueElseflag=FalseForj=i+1TonIfIsPime(a(j))ThenIfa(j)k=jflag=TrueEndIfEndIfNextjIfk<>iThent=a(k):a(k)=a(i):a(i)=tEndIfIfNotflagThenExitFor'ExitFor表示退出循环Nexti'依次输出排序后的数据。代码略EndSubFunctionIsPrime(mAsInteger)AsBoolean'本函数判断m是否是素数:是素数返回值为True,不是素数返回值为False'代码略EndFunction15.【2018.11】下列VB程序功能为:根据文本框Text1中各字符的大小关系,计算各字符升序排列的序号,并将序号保存在数组y中。如文本框内容为“2011”,程序运行后y(1)~y(4)各元素的值分别为“4,1,2,3”。s=Text1.Textn=Len(s)Fori=1Tony(i)=1NextiFori=1To(1)Forj=(2)TonIf(3)Theny(j)=y(j)+1Elsey(i)=y(i)+1EndIfNextjNexti上述程序段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)>=Mid(s,i,1)D.(1)n-1(2)i+1(3)Mid(s,j,1)>Mid(s,i,1)16.【2018.11】数组a中存储的是左右交替上升的n个正整数,如下表所示:a(1)a(2)a(3)……a(n-2)a(n-1)a(n)32538……553112依据对分查找思想,设计一个在数组a中查找数据key的程序,实现该功能的VB程序如下,但加框处代码有错,请改正。PrivateSubCommand1_Click()Constn=6Dima(1Ton)AsInteger,flagAsBooleanDimiAsInteger,jAsInteger,mAsInteger,keyAsInteger‘读取一组正整数,按上述规则存入数组a中,代码略key=Val(Text1.Text)i=1j=(n+1)\2flag=FalseDoWhileim=(i+j)\2Ifkey=a(m)Thenflag=TrueElseIfkeyj=m-1Elsei=m+1EndIfLoopIfNotflagAndj>0Thenm=n–iIfkey=a(m)Thenflag=TrueEndIfIfflagThenText2.Text=Str(m)ElseText2.Text="找不到"EndIfEndSub17.【2019.4】有1个升序排列的数组a(a(1)~a(n),n≥3),从左到右相邻两个元素的差值(后一个元素值减去前一个元素值)先由小到大、再由大到小,且相邻两个差值不相等,为了查找相邻两个元素的最大差值,小李编写的VB程序段如下:i=1:j=nDoWhilei+1m=(i+j)\2Ifa(m+1)-a(m)>a(m)-a(m-1)Then1Else②EndifLoopLabel1.Caption="相邻两个元素的最大差值是"+Str(a(j)-a(i))上述程序段两个方框处的语句分别为()A.①i=m②j=mB.①i=m②j=m-1C.①i=m+1②j=m-1D.①i=m+1②j=m18.【2019.4】小明基于冒泡排序思想设计了一个改进的排序算法。该算法先用冒泡法将数组a中奇数位置的元素、偶数位置的元素分别进行排序,然后再进行后续处理。算法的VB程序段如下,但加框处代码有错,请改
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
Forj=
(2)Ton
If(3)Then
y(j)=y(j)+1
y(i)=y(i)+1
上述程序段3各方框处的表达式分别为()
A.
(1)n
(2)1(3)Mid(s,j,1)>=Mid(s,i,1)
B.
(2)1(3)Mid(s,j,1)>Mid(s,i,1)
C.
(1)n-1
(2)i+1(3)Mid(s,j,1)>=Mid(s,i,1)
(2)i+1(3)Mid(s,j,1)>Mid(s,i,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
Ifa(j)k=jflag=TrueEndIfEndIfNextjIfk<>iThent=a(k):a(k)=a(i):a(i)=tEndIfIfNotflagThenExitFor'ExitFor表示退出循环Nexti'依次输出排序后的数据。代码略EndSubFunctionIsPrime(mAsInteger)AsBoolean'本函数判断m是否是素数:是素数返回值为True,不是素数返回值为False'代码略EndFunction15.【2018.11】下列VB程序功能为:根据文本框Text1中各字符的大小关系,计算各字符升序排列的序号,并将序号保存在数组y中。如文本框内容为“2011”,程序运行后y(1)~y(4)各元素的值分别为“4,1,2,3”。s=Text1.Textn=Len(s)Fori=1Tony(i)=1NextiFori=1To(1)Forj=(2)TonIf(3)Theny(j)=y(j)+1Elsey(i)=y(i)+1EndIfNextjNexti上述程序段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)>=Mid(s,i,1)D.(1)n-1(2)i+1(3)Mid(s,j,1)>Mid(s,i,1)16.【2018.11】数组a中存储的是左右交替上升的n个正整数,如下表所示:a(1)a(2)a(3)……a(n-2)a(n-1)a(n)32538……553112依据对分查找思想,设计一个在数组a中查找数据key的程序,实现该功能的VB程序如下,但加框处代码有错,请改正。PrivateSubCommand1_Click()Constn=6Dima(1Ton)AsInteger,flagAsBooleanDimiAsInteger,jAsInteger,mAsInteger,keyAsInteger‘读取一组正整数,按上述规则存入数组a中,代码略key=Val(Text1.Text)i=1j=(n+1)\2flag=FalseDoWhileim=(i+j)\2Ifkey=a(m)Thenflag=TrueElseIfkeyj=m-1Elsei=m+1EndIfLoopIfNotflagAndj>0Thenm=n–iIfkey=a(m)Thenflag=TrueEndIfIfflagThenText2.Text=Str(m)ElseText2.Text="找不到"EndIfEndSub17.【2019.4】有1个升序排列的数组a(a(1)~a(n),n≥3),从左到右相邻两个元素的差值(后一个元素值减去前一个元素值)先由小到大、再由大到小,且相邻两个差值不相等,为了查找相邻两个元素的最大差值,小李编写的VB程序段如下:i=1:j=nDoWhilei+1m=(i+j)\2Ifa(m+1)-a(m)>a(m)-a(m-1)Then1Else②EndifLoopLabel1.Caption="相邻两个元素的最大差值是"+Str(a(j)-a(i))上述程序段两个方框处的语句分别为()A.①i=m②j=mB.①i=m②j=m-1C.①i=m+1②j=m-1D.①i=m+1②j=m18.【2019.4】小明基于冒泡排序思想设计了一个改进的排序算法。该算法先用冒泡法将数组a中奇数位置的元素、偶数位置的元素分别进行排序,然后再进行后续处理。算法的VB程序段如下,但加框处代码有错,请改
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(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
DoWhileim=(i+j)\2Ifkey=a(m)Thenflag=TrueElseIfkeyj=m-1Elsei=m+1EndIfLoopIfNotflagAndj>0Thenm=n–iIfkey=a(m)Thenflag=TrueEndIfIfflagThenText2.Text=Str(m)ElseText2.Text="找不到"EndIfEndSub17.【2019.4】有1个升序排列的数组a(a(1)~a(n),n≥3),从左到右相邻两个元素的差值(后一个元素值减去前一个元素值)先由小到大、再由大到小,且相邻两个差值不相等,为了查找相邻两个元素的最大差值,小李编写的VB程序段如下:i=1:j=nDoWhilei+1m=(i+j)\2Ifa(m+1)-a(m)>a(m)-a(m-1)Then1Else②EndifLoopLabel1.Caption="相邻两个元素的最大差值是"+Str(a(j)-a(i))上述程序段两个方框处的语句分别为()A.①i=m②j=mB.①i=m②j=m-1C.①i=m+1②j=m-1D.①i=m+1②j=m18.【2019.4】小明基于冒泡排序思想设计了一个改进的排序算法。该算法先用冒泡法将数组a中奇数位置的元素、偶数位置的元素分别进行排序,然后再进行后续处理。算法的VB程序段如下,但加框处代码有错,请改
ElseIfkeyj=m-1Elsei=m+1EndIfLoopIfNotflagAndj>0Thenm=n–iIfkey=a(m)Thenflag=TrueEndIfIfflagThenText2.Text=Str(m)ElseText2.Text="找不到"EndIfEndSub17.【2019.4】有1个升序排列的数组a(a(1)~a(n),n≥3),从左到右相邻两个元素的差值(后一个元素值减去前一个元素值)先由小到大、再由大到小,且相邻两个差值不相等,为了查找相邻两个元素的最大差值,小李编写的VB程序段如下:i=1:j=nDoWhilei+1m=(i+j)\2Ifa(m+1)-a(m)>a(m)-a(m-1)Then1Else②EndifLoopLabel1.Caption="相邻两个元素的最大差值是"+Str(a(j)-a(i))上述程序段两个方框处的语句分别为()A.①i=m②j=mB.①i=m②j=m-1C.①i=m+1②j=m-1D.①i=m+1②j=m18.【2019.4】小明基于冒泡排序思想设计了一个改进的排序算法。该算法先用冒泡法将数组a中奇数位置的元素、偶数位置的元素分别进行排序,然后再进行后续处理。算法的VB程序段如下,但加框处代码有错,请改
j=m-1
i=m+1
IfNotflagAndj>0Then
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+1m=(i+j)\2Ifa(m+1)-a(m)>a(m)-a(m-1)Then1Else②EndifLoopLabel1.Caption="相邻两个元素的最大差值是"+Str(a(j)-a(i))上述程序段两个方框处的语句分别为()A.①i=m②j=mB.①i=m②j=m-1C.①i=m+1②j=m-1D.①i=m+1②j=m18.【2019.4】小明基于冒泡排序思想设计了一个改进的排序算法。该算法先用冒泡法将数组a中奇数位置的元素、偶数位置的元素分别进行排序,然后再进行后续处理。算法的VB程序段如下,但加框处代码有错,请改
Ifa(m+1)-a(m)>a(m)-a(m-1)Then
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程序段如下,但加框处代码有错,请改
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1