EndIf
Nexti
A.13,15,25,37,23,54B.16,44,23,51,22,22
C.19,37,23,45,53,53D.13,37,11,45,33,51
【答案】C
【解析】
【详解】
本题考查VB程序段。
根据a(i)=Int(Rnd*21)*2+11,a数组是[11,51]之间的奇数,并且一定执行a(i)=a(i)+2,那么a数组是[13,53]之间的奇数,故本题选C。
16.小明想用数据移位思想将一段长度为n的序列a(n),以t位置为分界,把前t-1个数和后n-t+1个数调换前后顺序,但保持每段中数据的相对位置不变。
例如一段长度为6的序列1、2、3、4、5、6。
t=4时,数组a中元素顺序变成4、5、6、1、2、3.实现上述功能的代码如下,下列①、②处填写正确的是( )
t=Val(Text1.Text):
m=2
Fori=t-1To1Step-1
k=a(i)
Forj=iTon-1
①
Nextj
②
n=n-1
Nexti
A.①a(j+1)=a(j)②a(j+1)=kB.①a(j)=a(j+1)②a(j+1)=k
C.①a(j+1)=a(j)②a(j)=kD.①a(j)=a(j+1)②a(j)=k
【答案】D
【解析】
【详解】
本题考查VB程序段。
实现数据移位的效果,根据题目中代码,可做如下解释。
假设t=4,则第一次移位后,数组变为1,2,4,5,6,3。
第二次移位数据变为1,4,5,6,2,3。
第三次移位得到结果4,5,6,1,2,3。
在根据选项将代码填入,可得到选项D为正确选项。
17.字符串数组a中a
(1)到a(6)的原始数据为57,3,24,34,6,120,为了对该数组进行排序操作,编写了以下VB程序。
i=2
DoWhilei<=6
Forj=6Toi+2Step-2
Ifa(j)>a(j-2)Thent=a(j):
a(j)=a(j-2):
a(j-2)=t
Nextj
i=i+2
Loop
则程序运行之后,数组元素a
(1)和a
(2)的值分别是( )
A.63B.57120
C.12057D.634
【答案】B
【解析】
【详解】
本题考查排序算法。
i=2,j=6to4,经过交换,a
(1)到a(6)数据变为57,120,24,3,6,34。
i=4,j=6to6,经过交换,a
(1)到a(6)数据变为57,120,24,34,6,3。
故数组元素a
(1)和a
(2)的值分别是57和120,故本题选B。
18.有如下VB程序段:
s=Text1.Text:
n=Len(s):
Count=0
Fori=1Ton\2
IfMid(s,i,1)<>Mid(s,n-i+1,1)Then
Count=Count+1
EndIf
Nexti
若在文本框Text1中输入字符串“200good2”,则Count的值为( )
A.3B.1C.6D.7
【答案】A
【解析】
【详解】
本题考查VB程序段。
若在文本框Text1中输入字符串“200good2”,根据IfMid(s,i,1)<>Mid(s,n-i+1,1)ThenCount=Count+1,可知统计字符串前后对应位置不相等字符个数,故本题选A。
二、填空题
19.下面的程序段运行后的结果为__________
s=0
foriinrange(1,8,3):
s=s+i
print(s)
【答案】12
【解析】
【详解】
本题考查的知识点是Python的循环函数。
range()函数可创建一个整数列表,一般用在for循环中。
range(1,8,3)等同于整数列表[1,4,7],故该程序结果为=0+1+4+7=12。
20.运行下列程序,正确的结果是_________________
s=0
foriinrange(15):
s=s+i
print("i=",i,"s=",s)
【答案】i=4s=10
【解析】
【详解】
本题主要考查程序的运行。
for循环中i的变化范围是从1~4,循环结束时i=4,s=0+1+2+3+4=10。
三、操作题
21.给定两个十进制整数X和Y(X<=Y),求出从X到Y的所有整数中出现“1”的个数。
例如:
X=6,Y=15时,6,7,8,9,10,11,12,13,14,15,出现了7个“1”。
小明编写了一个VB程序,功能如下:
在文本框Text1中输入整数X,在文本框Text2中输入整数Y,单击“统计”按钮Command1后,在列表框List1中显示X到Y,并在标签Label3中显示从X到Y的所有整数中出现“1”的个数。
程序运行界面如图所示,请在划线处填入合适代码。
(1)下列程序段中句List1.AddItem中的AddItem是___(填字母:
A.属性名/B.事件名/C.方法名/D.对象)
(2)为了实现上述功能,请在划线处填入合适的代码。
PrivateSubCommand1_Click()
DimxAsInteger,yAsInteger,tAsInteger
DimiAsInteger,nAsInteger,countAsInteger
x=Val(Text1.Text)
y=Val(Text2.Text)
count=0
Fori=xToy
List1.AddItemStr(i)
n=i
DoWhilen>0
IfnMod10=1Then
count=count+1
EndIf
____
Loop
Nexti
Label3.Caption="X到Y之间1的个数有"+____+"个"
EndSub
(3)如果删除加框处代码,并运行程序,在文本框Text1中输入“40”,在文本框Text2中输入“10”,单击“统计”按钮,则标签框Label3显示X到Y之间1的个数有____个。
【答案】Cn=n\10str(count)0
【解析】
【详解】
本题考查VB综合能力。
(1)List1.AddItem中的AddItem是方法名。
(2)代码第一空,根据dowhilen>0,以及IfnMod10=1Thencount=count+1EndIf,可以判断,需要将n中的每一个数字取出判断,故代码第一空填入n=n\10。
(3)代码第二空,X到Y之间1的个数有count个,注意数据类型,故填入str(count)。
(4)如果删除加框处代码,若出现x>y,则fori=xtoy的for循环不会执行,所以在文本框Text1中输入“40”,在文本框Text2中输入“10”时,Label3显示X到Y之间1的个数有0个。
22.编写一个VB程序,实现如下功能:
输入s位数字构成的数字字符串(第1位数字不为0),移除k(0新数第1位不能为0)。
例如8个数字构成的数字字符串“71803296”,移除3个数字,得到5位数字构成的最小数是“10296”,具体算法如图a所示。
算法分析:
要使得到的5位数字最小,首先需保证能取到5个数字,且首位应尽量小,那么取首位数的范围应保证余下有4个数字,即在前4位中选最小非0的数字。
程序运行时,在文本框Text1中输入一个数字字符串,在文本框Text2中输入要移除的数字个数,单击“运行”按钮CmdRun后,在标签Labell显示得到的最小新数,程序运行界面如图b所示。
(1)程序运行时,若要在名为Form1的窗体标题上显示“删数”,可以在FormLoad事件处理过程中添加语句为_________(单选,填字母:
A.Form1.Text="删数"\B.Form1.Caption="删数"\C.Form1.AddItem"删数")
(2)实现上述功能的VB程序代码如下,请在划线处填入合适的代码。
PrivateSubCmdRun_Click()
DimNumAsString,New_numAsString'Num为输入的数字字符串
DimiAsInteger,jAsInteger,mAsInteger,
DimAsInteger,sAsInteger,kAsInteger
Dima(30)AsString,b(30)AsInteger
Num=Text1.Text:
s=Len(Num)
k=Val(Text2.Text)'k为删除数字个数
Fori=1Tos
a(i)=Mid(Num,i,1)
Nexti
j=1
m=1
n=①_________
Fori=m+lTon'取第一