浙教版 高中信息技术 选修1 第四章 VB程序设计初级章末习题(一般难度)(含解析)

文档属性

名称 浙教版 高中信息技术 选修1 第四章 VB程序设计初级章末习题(一般难度)(含解析)
格式 docx
文件大小 186.7KB
资源类型 教案
版本资源 浙教版
科目 信息技术(信息科技)
更新时间 2021-07-25 20:18:11

图片预览

文档简介

选修一第四章VB程序设计初级章末习题(一般难度)
一、选择题(本大题共4小题)
有如下VB程序段:
a(1) = 6 : a(2) = 9 : a(3) = 3 : a(4) =7 : a(5) = 8 : a(6) = 1
t = 2 * Int(Rnd * 3) + 1
?For i = t To 5
k = i
For j = i + 1 To 6
If a(j) < a(k) Then k = j
Next j
If k <> i Then
temp = a(i) : a(i) = a(k) : a(k) = temp
?End If
Next i
执行该程序段后,a(1)?a(6)各元素的值不可能的是(??? )
A. 6,1,3,7,8,9 B. 6,9,1,3,7,8 C. 6,9,3,7,1,8 D. 1,3,6,7,8,9
以下有关软件用途归类不全正确的是()。
A. 声音的编辑处理可以使用Cool edit、Wave edit等
B. 文本的处理可以使用记事本、WPS、PowerPoint等
C. 程序设计可以使用vb、Pascal、C语言等
D. 动画设计可以使用3d max、Flashget等
有如下 VB 程序段:
Dim p As Integer,q As Integer,s As Integer,t As Integer
p=Val(Text1.Text):t=0
For q=p+1To 2*p
s=(p*q) Mod (q-p)
If s=0Then
t=t+1
End If
Next q
Label1.Caption=Str(t)
该程序段运行时,在文本框Textl中输入8,则在标签Labell中显示的内容是(  )
A. 3 B. 4 C. 5 D. 6
Private Sub Command1_Click(  )
n=100:Sum=0:k=1
Do while k<=n
j=1
Do while j<=k
sum=sum+1:j=j+1
Loop
k=k*2
Loop
End sub
该字段运行后,变量sum的值是(  )
A. 256 B. 255 C. 128 D. 127
二、非选择题(本大题共11小题)
编写一个VB程序,实现如下功能,在文本框Text1中输入一串小写的英文字母,单击“统计”按钮Command1,在文本框Text2中输出字母升序段个数,要求每个升序段中字母个数必须超过3个(例如,输入abctefefghkad,则满足条件的升序段为abct和efghk,个数为2),程序运行界面如下图所示:

请回答下列问题:
(1)程序界面中共有______(单选,填字母:A. 3 / B. 4 / C. 5 / D. 6)类控件。
(2)若在文本框Text1中输入“abgcdefkuvghl”,单击“统计”按钮Command1后,文本框Text2中显示的内容为______。(单选,填字母:A. 1 / B. 2 / C. 3)
(3)实现上述功能的程序代码如下,请在划线处填入合适的代码。
Private Sub Command1_Click()
??? Dim s As String, n As Integer
??? Dim m As Integer, f As Boolean, k As Integer, i As Integer
??? s = Text1.Text: n = Len(s)
??? m = 0: f = True: k = 1
??? For i = 2 To n
??????? If ______________①____________?Then
??????????? k = k + 1
??????????? f = True
??????? Else
??????????? f = False
??????? End If
??????? If k > 3 And (__________②__________) Then
??????????? m = m + 1
??????????? k = 1
??????? End If
??? Next i
??? Text2.Text = Str(m)
End Sub
小马正在看一本侦探小说,想了解其中一段案情的解析,却发现了一串字符“#2017-2018go:)”,并附有文字提示:①答案所在的页码是这串字符中最大数字字串(若值相同则取后面的数字字串)的起始位置*10+结束位置②答案所在行号是最大数值除以100的余数。例如:“#17a18#”字符串中,最大数字字串“18”,起始位置是5,结束位置是6,其页码是56,行号是18。小马编写了一个VB程序帮他寻找答案,程序运行界面如图所示。在文本框Text1中输入这段字符串s1,单击“揭秘”按钮Command1,在文本框Text2中输出页码,在Text3中输出行号。实现上述功能的VB程序代码如下,但加框处代码有错,请改正。

Private Sub Command1_Click()
? Dim s1 As String, s2 As String
? Dim ch As String, ch2 As String
? Dim max As Double
? Dim n As Integer, page As Integer
? Dim i As Integer, j As Integer
? s1 = Text1.Text: s2 = ""
? n = Len(s1)
? i = 1: max = 0
? Do While i <= n
????? ch = Mid(s1, i, 1)
????? If ch >= "0" And ch <= "9" Then
????????? j = i
? ? ? ? ? ch2 = Mid(s1, j, 1)
????????? Do While ch2 >= "0" And ch2 <= "9"
????????????? j = j + 1
????????????? ch2 = Mid(s1, j, 1)
????????? Loop
????????? s2 = ?Mid(s1, 1, j - i) ???????????'(1)
????????? If ?Val(s2) < max ?Then??????????? '(2)
????????????? max = Val(s2)
????????? ????page = i * 10 + j - 1
????????????? Text2.Text = Str(page)
????????????? Text3.Text = Str(max Mod 100)
????????? End If
????????? i = j
????? End If
????? i = i + 1
? Loop
End Sub
使用VB编写一个数字逆序功能的程序,在文本框Text1中输入若干整数,相互之间用逗号隔开,单击逆序按钮,在文本框Text2中输出逆序后的数字序列。程序运行界面如图所示:

(1)实现上述功能的VB程序如下,请在划线处填入合适的代码。
Private Sub nixu_Click( )
Dim s1 As String , s2 As String , t As String , ch As String
Dim i As Integer
s1= Text1.text
______①__________
t =”” : s2 = ””
Do While i>0
ch=Mid ( s1 , i , 1 )
If ch >=”0” And ch<=”9” Then
t=ch+t
Else
__②_
t = ””
End if
i=i-1
Loop
s2=s2+t
Text2.Text=s2
End Sub
(2) 由程序可知,逆序按钮的名称是_______________________。
(3) 如果把程序中加框的语句删除,运各程序时,输入数据为“3,1,4,15”,则输出结果是_______________________________________________。
使用擂台法找最值,首先将数据存放在数组变量中,再进行最值查找。以下找出篮球比赛中7名球员得分最高的球员。其中,上场比赛的篮球队员得分情况(见下表)。

a[1]
a[2]
a[3]
a[4]
a[5]
a[6]
a[7]
5
23
9
12
20
38
19
(1)实现数据存储到数组a中的流程图如图(1)所示,请填写空格__________。
(2)擂台法找出得分最高球员的 VB代码如图( 2)所示,请填写空格___________。(提示:将多个语句书写在一行时,两个语句之间使用“:”连接)
设计一个算法,计算导弹射程之间的最大距离差。具体程序功能如下:在文本框中输入各枚导弹的射程(单位:千公里),数据之间用逗号分割,以-1结尾。单击按钮,在标签框输出结果。例如在Text1中输入“15,9,1,2,3,8,7,-1”,单击“计算”按钮,输出结果为“14”。实现该算法的VB程序如下,界面如图所示,回答下列问题:

(1)为实现该程序,在窗体中至少需要使用_______类不同的控件对象(填数字)。
(2)算法具体代码对应如下,请在横线处填入合适的语句代码,使程序完整。
Private Sub Command1_Click()
Dim a(100) As Integer
Dim max As Integer: Dim min As Integer
Dim c As Integer: Dim i As Integer: Dim j As Integer: Dim Total As Integer
Dim s As String
s = Text1.Text
i = 1 : begin = 1 : c = 0
Do While i <= Len(s)
k = Mid(s, i, 1)
If k = "," Then
t = ________①_________
??? ?????? c = c + 1
??? ?????? a(c) = Val(t)
??? ?????? begin =_________②__________
?? ?End If
i = i + 1
Loop
max = 0 ????????????' 加框语句
min = a(1)
For i = 1 To c
? If a(i) > max Then max = a(i)
? If a(i) < min Then min = a(i)
Next i
Text2.Text = max - min
End Sub
(3)若删除程序中加框处语句,还是相同的输入数据,则计算出的最大差值为:_____。
编写一个“计算平均身高”的VB程序,功能如下:在文本框Text1中输入若干男女学生的身高和性别(以”,”为分割符和结束符),如 1.65,F,1.75,M,1.84,M,1.69,F,1.72,M, 1.58,F,F表示女生,M表示男生,单击“计算”按钮Command1后,在Label2上显示男生的平均身高,在Label3上显示女生的平均身高。程序设计界面和运行界面分别如图所示
(1)要使程序运行时,清空Label2上的内容,可在Form_Load事件处理过程中添加语句______?(单选,填字母:A. Label2.text=""? / B.Label2.Caption = ""? / C. Label2.Clear )。
(2)实现上述功能的VB程序如下,请在划线处填入合适代码。
Private Sub Command 1_Click()
Dim i As Integer, s As String, ch As String, temp As String
Dim k As Integer, n As Integer, c1 As Integer, c2 As Integer
Dim h As Single, sum1 As Single, sum2 As Single
s = Text1.Text
i=1 : k = 0 : n = 0
sum1 = 0 : sum2 = 0 : c1 = 0 : c2 = 0
Do While ____① ??????
ch = Mid(s, i, 1)
If ch <> "," Then
?k = k+1
Else
n = n + 1
temp = Mid(s, i - k, k)
If n Mod 2 = 1 Then
? ______②_____
Else
If temp = "M" Then sum1= sum1+ h : c1= c1 + 1 Else sum2 = sum2 + h : c2 = c2 + 1
?End If
?k = 0
End If
i = i + 1
Loop
If c1<> 0 Then Label2.Caption = Str(Int((sum1 / c1) * 100 + 0.5) /100) + "m"
If c2<> 0 Then Label3.Caption = Str(Int((sum2 / c2) * 100 + 0.5) /100) + "m"
End Sub
(3)若文本框Text1中输入内容的结束符缺失,即输入内容为1.65,F,1.75,M,1.84,M,1.69,F,1.72,M,1.58,F 则程序运行结束时,变量temp的值为_________ 。
下列关于某纸牌游戏的算法是:随机产生两组牌,每组17张,牌从小到大分别为“3~10、J、Q、K、A、2”,每种牌最多4张,四张相同的牌如3333称为炸弹牌型,炸弹不能拆成其他牌型。按照如下规则出牌:
①先出顺子牌型(顺子指连续的5张及以上的牌,如345678,顺子最小从3开始,最大到A),若有多个顺子,先长后短,长度相同按从小到大顺序出;
②再按三带一牌型(3张相同的牌带一张单牌)、对子牌型(2张相同)、单张牌型的顺序出牌,同一牌型从小到大出;
③最后出炸弹,若有多个炸弹,从小到大出。
设计以下VB程序,牌“10”用0代替,比较两组出牌次数,界面如图所示,请回答下列问题。
(1)若A组初始牌为:4567880JQQQQKAAA2,B组初始牌为:56778888JQQKKKA22,则A组出牌次数_________B组。(填:大于/等于/小于)
(2)请在划线处填入合适代码。
Consts="34567890JQKA2"??????? ?用0代替牌10
Dims1 As String,s2 AsString????? ?s1存储A组牌,s2存储B组牌Dimb (1To18)As String
?数组b存储各类牌型,其中b(1)到b(4)可存储炸弹牌型,b(5)到b(18)存储其他牌型
Private Sub Command1 _Click()
?随机产生A组和B组牌分别在文本框Text1、Text2中显示,代码略
End Sub
Sub arrange(st As String)?整理牌型的过程
Dim a (3 To 15)As Integer,i As Integer
Dim j As Integer,t As Integer,n As Integer
Dim k As Integer,max As Integer,last As Integer
Dim sa As String,stem As String,flag As Boolean
?数组元素a(3)到a(15)分别存储牌3~JQKA2的张数
?代码略
t=17
For i=1 To 18
??? b(i)=""
Next i
Do While t>0
??? n=0
?? For i=3 To 15?寻找炸弹牌型,若有则存储到数组b中
????? If a(i)=4 Then
________①________
n=n+1
b(n)=stem+stem+stem+stem
?? a(i)=0:t=t-4
? End If
Nexti
________②________
flag=True
Do While flag ?寻找顺子牌型,若有则存储到数组b中
??? flag=False:max=0:k=1
??? For i=4 To 14
?????? If a(i-1)>=1 And a(i)>=1 Then
??????? k=k+1
?????? If k>max Then
?????? max=k
?????? last=i+1
???? End If
? Else
???? k=1
? End If
??? Next i
??? If max>=5 Then
???? flag=True: sa=""
???? For j=last-max+1 To last
???? stem=Mid(s,j-3,1)
???? sa=sa+stem+""
??? ________③________
Nextj
??? n=n+1:b(n)=sa
??? t=t-max
? End If
Loop
?? ?寻找并存储三带一、对子、单张牌型,代码略
Loop
End Sub
Private Sub Command2_ Click()
Dim count1 As Integer? count1统计A组出牌次数
Dim count2 AsInteger ?count2统计B组出牌次数
Call arrange(s1)
?在List1中显示A组出的牌型,统计出牌次数,代码略
Call arrange (s2)
?在List 2中显示B组出的牌型,统计出牌次数,代码略
If count2>count1Then
?? Label3.Caption="A组出牌次数小于B组"
ElseIf count2=count1 Then
??? Label3. Caption="A组出牌次数等于B组"
Else
Label3. Caption="A组出牌次数大于B组"
End If
End Sub
约瑟夫问题是个有名的问题:N个人围成一圈,顺序为0,1,2,3,4,5,从0号这个人开始报数,报到2的将被杀掉,接下去重新开始报数,报到3的将被杀掉...以此类推,最后剩下一个,其余人都将被杀掉。例如N=6,被杀掉的顺序是:1,4,3,0,5;最后只剩下2这个人。
llist=
n=int(input(“请输入参与人数:”))
for i in range(0,n-1):
llist.append([i,i+1])
______
______
long=n
k=head
i=1
p=2
while( ______ ):
if i==p-1:
t=llist[k][1]
print(llist[t][0])#索引为t的删除
______
if t==head:
______
i=1
p+=1
long=long-1
k=llist[k][1]
______
i+=1
print(llist[head][0])
现今信息化时代,信息的传输十分迅速,足不出户便知天下事。许多社交平台都有设置本平台的热点排行榜,方便用户了解正在发生的热门事件。但社交平台数量众多,平台用户种类和数量也大不相同,导致不同平台热点的实际热度大小也不同。小钟为了确保自己知道的热点是真正的热点,于是打算用功能强大的python把各个平台的热点排行榜进行合并,形成自己的热点排行榜。
为了热点之间比较方便,小钟设置了一个热度值来衡量一个热点的热度大小,热度值越大说明这个热点的热度越高。现在小钟已经获得了如下两个平台的热度值从小到大的排行榜,正当他打算将之合并为一个从小到大的排行榜时,却被老师叫走了。于是他决定把这个小功能交给他的好朋友——你来实现,你想到2种算法,请把下列程序填写完整。
A
P10
P9
P8
P7
P6
P5
P4
P3
P2
P1
11
66
116
329
438
582
652
714
756
925
B
E10
E9
E8
E7
E6
E5
E4
E3
E2
E1
35
116
215
271
309
428
576
772
806
950
Python程序如下:
A=[11,66,116,329,438,582,652,714,756,925]
B=[35,116,215,271, ______ ,428,576,772,806,950]
算法一:
myRank=
i=0
j=0
while (i<len(A)and j<len(B)):
if (A[i]<B[j]):
______
i+=1
else:
myRank.append(B[j])
j+=1
while (i<len(A)):
myRank.append(A[i])
i+=1
else:
while ( ______ ):
myRank.append(B[j])
j+=1
print(myRank)
算法二:
myRank=[0]*(len(A)+len(B))
i=0
j=0
k=0
while ( ______ ):
k=i+j
if (i>=len(A)):
myRank[k]=B[j]
j+=1
elif (j>=len(B)):
myRank[k]=A[i]
i+=1
elif ( ______ ):
myRank[k]=A[i]
i+=1
else:
myRank[k]=B[j]
j+=1
print(myRank)
一张骨牌由上下两行共四个格子构成,每个格子有一个1到6之间的数字。现在一共有5张骨牌,从左到右排成一排,定义每张骨牌的差值为:骨牌第一行的数字和减去第二行的数字和;5张骨牌的差值为:每张骨牌的差值和的绝对值。

如图a中,5张骨牌的差值为:
|(3+3-4-4)+(6+3-2-5)+(2+3-4-5)+(1+5-3-3)+(1+1-1-1)|=4。
每张骨牌都可以顺时针旋转90度,效果如图b所示。现在最多可以选择其中一张骨牌进行旋转,使得旋转后的骨牌差值变小。求一种旋转方案,并输出骨牌差值的最小值。
编写VB程序,实现上述功能。运行程序,在文本框Text1中依次输入5张骨牌上的数字,单击“计算”按钮Command1,在文本框Text2、Text3、Text4中输出结果。程序运行界面如图b所示。
若图a中第1张骨牌的数字修改为,1、2、6、6,则骨牌差值的最小值为 ______ 。
实现上述功能的VB程序如下,请在划线处填入合适的代码。
Dim a(1 To 20)As Integer‘依次存储5张骨牌上的数字
Dim d(1 To 5)As Integer’依次存储5张骨牌,上下两行的差值
Const n=5
Private Sub Form_Load (  )
'从文本框Text1读取5张骨牌上的数字,依次存入数组a
'a(1)~a(4)依次存储第一张骨牌从左到右从上到下四个数字
'a(5)到a(20)依次类推
'代码略
End Sub
Private Sub Command1_Click (  )
Dim i As Integer,up As Integer,down As Integer,t As Integer,k As Integer
Dim id As Integer,times As Integer,x As Integer,ans As Integer
For i=1 To n
up=a(4*i-3)+a(4*i-2)
down=a(4*i-1)+a(4*i)
d(i)=up-down
t=t+d(i)
Next i
id=0:times=0
ans=① ______
If ans<>0 Then
k=1
Do While k<=n
For x=1 To 3
temp=② ______
If temp<ans Then
ans=temp
id=k
③ ______
End If
If temp=0 Then Exit Do
Next x
k=k+1
Loop
End If
Text2.Text=CStr(id)
Text3.Text=CStr(times)
Text4.Text=CStr(ans)
End Sub
Function turn(ByVal k As Integer,ByVal x As Integer)As Integer
‘求将第k张骨牌,顺时针旋转x次后,上下两行的差值,代码略
End Function
在Text1中输入一个1-26之间的数字n,点击“产生”按钮,在Text2中产生n个不重复的大写字母,中间用逗号隔开(图a),点击一次“最小值”按钮,Text2中最小的字母会掉落到List1中,并将Text2中对应的字母和后面的逗号删除(图b),再点击一次“最小值”按钮,剩余字母中的最小值继续掉落(图c)。(ASC(“A”)=65,CHR(65)=“A”)
center0
根据描述,如产生的字母为“H,K,C,B,N,”,第三次点击“最小值”按钮后Text2中显示内容为 ______
请在划线处填入合适的代码。
Private Sub Command1_Click ______
Dim i As Integer,j As Integer,n As Integer
Dim zm As Integer,flag As Boolean,zf As string
Randomize'重置rnd函数,确保每次产生的随机数不一致
zf=““
n=Val(Text1.Text)
For i=1 To n
______
zm=Int(Rnd*26+65)
For j=1 To Len(zf) Step 2
If Asc(Mid(zf,j,1))=zm Then
______
flag=True
Exit For
End If
Next j
If flag=False Then zf=zf+Chr(zm)+“,“
Next i
Text2.Text=zf
End Sub
Private Sub Command2_Click ______
Dim i As Integer,zf As string
zf=Text2.Text
k=1
For i=3 To Len(zf)-1 Step 2
If Mid(zf,k,1)>Mid(zf,i,1)Then k=i
Next i
List1.AddItem Mid(zf,k,1)
Text2.Text= ______
End Sub
答案和解析
1.【答案】A
本题考查的是VB程序的应用,稍有难度。
【解答】
执行该程序段后,a(1)?a(6)各元素的值不可能的是6,1,3,7,8,9。
?故选A。
2.【答案】D
本题主要考查对文件格式的了解,难度一般。
【解答】
根据题意,分析可知,ABC说法都正确,D选项中,动画设计可以使用3d max,而Flashget是下载工具,故D说法错误,符合题意。
?故选D。
3.【答案】B
【解析】初始值p=8,For?q=p+1To?2*p? 即:q=9? To? 16,那么q的取值范围从9到16
当q=9时,s=(p*q)?Mod?(q-p)=(8*9)Mod?(9-8)=0 那么t=t+1=1;
当q=10时,s=(p*q)?Mod?(q-p)=(8*10)Mod?(10-8)=0,那么t=t+1=2
当q=11时,s=(p*q)?Mod?(q-p)=(8*11)Mod?(11-8)<>0,所以不执行t;
当q=12时,s=(p*q)?Mod?(q-p)=(8*12)Mod?(12-8))=0,那么t=t+1=3;
当q=13,14,15时,s=(p*q)?Mod?(q-p<>0,所以不执行t;
当q=12时,s=(p*q)?Mod?(q-p)=(8*16)Mod?(16-8))=0,那么t=t+1=4;
故选:B。
本题考查的知识点是VB应用程序的调试及运行;VB各类基本运算、表达式与常用的标准函数。
解题的关键就是s=(p*q)?Mod?(q-p)=0时,才执行t的语句。
4.【答案】D
【解析】大循环Do?while?k<=n???时,执行k=k*2,得到k的取值为 1,2,4,8,16,32,64.当k=64时满足k<=n?执行k=k*2=128>100循环停止。
当k=1时,j=1?? Do?while?j<=k做循环1次;
当k=2时,j=1?? Do?while?j<=k做循环2次;
当k=4时,j=1?? Do?while?j<=k做循环4次;
当k=8时,j=1?? Do?while?j<=k做循环8次;
当k=16时,j=1?? Do?while?j<=k做循环16次;
当k=32时,j=1?? Do?while?j<=k做循环32次;
当k=64时,j=1?? Do?while?j<=k做循环64次;
那么sum=1+2+4+8+16+32+64=127
故选:D。
本题考查的知识点是VB应用程序的调试及运行;VB各类基本运算、表达式与常用的标准函数。
嵌套循环,sum就是累加的次数之和。
5.【答案】(1)A;(2)?A;(3)①Mid(s, i, 1) > Mid(s, i - 1, 1);②f = False Or i = n
【分析】本题主要考查的是VB程序的相关知识,熟悉VB程序的代码是解题的关键。
【解答】(1)该程序界面上有3个类,故选A;
(2)若在文本框Text1中输入“abgcdefkuvghl”,单击“统计”按钮Command1后,文本框Text2中显示的内容为1,故选A;
(3)分析题意可得,第一空填Mid(s, i, 1) > Mid(s, i - 1, 1);第二空填f = False Or i = n。
故答案为:(1)A;(2)?A;(3)①Mid(s, i, 1) > Mid(s, i - 1, 1);②f = False Or i = n。
6.【答案】(1)Mid(s1,i,j-i);(2)Val(s2)>=max
本题考查VB代码的阅读与改错,是对该软件的一个综合运用,难度较大。
【解答】
阅读程序,根据该程序段实现的功能,分析得出,(1)处应改为:Mid(s1,i,j-i);(2)处应改为:Val(s2)>=max。
故答案为:?(1)Mid(s1,i,j-i);(2)Val(s2)>=max。
7.【答案】(1)① i=len(s1);② s2=s2+t+",";
(2) nixu;
(3) 15,4,1
本题考查VB代码的阅读与填空,是对该软件的一个综合运用,难度较大。
【解答】
(1)阅读程序,该程序实现了数字逆序功能,s1为从文本框Text1中输入的若干整数,故①处将s1的字符长度赋值给i,即i=len(s1);②当ch不满足条件ch >=”0” And ch<=”9”时,执行?s2=s2+t+",";
(2)由Private Sub nixu_Click( ) ,分析得出,逆序按钮的名称是nixu;
(3)如果把程序中加框的语句删除,运各程序时,输入数据为“3,1,4,15”,则第一个字符不输出,其余逆序输出,故输出结果是15,4,1。
故答案为:?(1)① i=len(s1);② s2=s2+t+",";
(2) nixu;
(3) 15,4,1。
8.【答案】(1)i<=6(或i<7);
(2)x=i:end if:i=i+1.
本题主要考查VB程序的相关知识。
【解答】
(1)由题意分析可知,找出篮球比赛中7名球员得分最高的球员,实现数据存储到数组a中,空格填入i<=6(或i<7);
(2)由题意分析可知,找出篮球比赛中7名球员得分最高的球员,当i>7时跳出循环,每进行比较一次,计数+1,故填x=i?:end if:i=i+1.
故答案为:(1)i<=6(或i<7);(2)x=i:end if:i=i+1.
9.【答案】(1)3;
(2)①?Mid(s,begin,i-begin);②i+1;
(3)14
本题考查VB代码的阅读与填空,是对该软件的一个综合运用,难度较大。
【解答】
(1)为实现该程序,在窗体中至少需要使用3类不同的控件对象,分别为:Caption控件、Command控件、Text控件,故答案为3;
(2)分析程序,该程序实现功能为:在文本框中输入各枚导弹的射程(单位:千公里),数据之间用逗号分割,以-1结尾。单击按钮,在标签框输出结果;故空格处应依次填入:①?Mid(s,begin,i-begin);②i+1;
(3)若删除程序中加框处语句,还是相同的输入数据,则计算出的最大差值为:14。
故答案为:(1)3;(2)①?Mid(s,begin,i-begin);②i+1;(3)14。
10.【答案】(1)B;
(2)①i<=Len(s);②h=Val(temp);
?(3)“1.58”
本题考查的是VB程序的应用,稍有难度。
【解答】
?(1)要使程序运行时,清空Label2上的内容,可在Form_Load事件处理过程中添加语句Label2.Caption="",故选B;
(2)①分析前后语句,此处应填:i<=Len(s);
②此处应填:h=Val(temp);
(3)若文本框Text1中输入内容的结束符缺失(即输入内容为1.65,F,1.75,M,1.84,M,1.69,F,1.72,M,1.58,F),则程序运行结束时,变量temp的值为“1.58”。
故答案为:?(1)B;(2)①i<=Len(s);②h=Val(temp);(3)“1.58”。
11.【答案】(1)小于;
(2)① stem =Mid(s, i - 2, 1);
②n=4;
③a(j-1)=a(j-1) -1 .
本题主要考查的是VB程序的相关知识,熟悉VB程序的代码是解题的关键。
【解答】
?(1)若A组初始牌为:4567880JQQQQKAAA2,B组初始牌为:56778888JQQKKKA22,则A组出牌次数小于B组。
(2)b(1)到b(4)可存储炸弹牌型,①需要寻找炸弹牌型,故填 stem =Mid(s, i - 2, 1);
②以下是寻找顺子牌型,以上是寻找炸弹牌型,若有则存储到数组b中,故填n=4;
③若有多个顺子,先长后短,长度相同按从小到大顺序出,故填a(j-1)=a(j-1) -1;
故答案为:?(1)小于;(2)① stem =Mid(s, i - 2, 1);②n=4;③a(j-1)=a(j-1) -1 .
12.【答案】llist.append([n-1,0]),head=0,long>1,head=llist[k][1],llist[k][1]=llist[t][1],k=llist[k][1]
【解析】解析:①for循环体是将索引0-n?追加到llist中,此处是循环体执行完,将末元素与首元素的索引加入到llist中,故填llist.append([n-1,0])。②head是列表头,初始化为0,故填head=0。③最后剩下一个,其余人都将被杀掉,故循环条件是long>1,变量long控制元素个数,故填long>1。④索引为t的删除后,此处是更新head值,故填head=llist[k][1]。⑤删完后,如果t等于head,需要更新索引k,将索引t的值赋给变量k,故填llist[k][1]=llist[t][1]。⑥如果t不等于head,也需要更新索引k,故填k=llist[k][1]
本题主要考查Python程序执行与调试。
熟练掌握程序的调试与运行
13.【答案】309,myRank.append(A[i]),j<len(B),k<len(A)+len(B)-1,A[i]<B[j]
【解析】解析:根据表格所示,列表B中第5个元素为309,因此①处为309;A[i]<B[j]时,将列表末尾添加A[i],因此②处为myRank.append(A[i]);当列表未结束时,列表末尾添加相应元素,因此③处为j<len(B);算法二中引入变量k,用以记录i与j的和,当k小于len(A)+len(B)-1说明两列表未结束,因此④处为k<len(A)+len(B)-1;若A[i]<B[j],则先将A[i]添加至列表末尾,因此⑤处为A[i]<B[j]。
本题主要考查python编程。
知识点考查清晰准确
14.【答案】【小题1】1
【小题2】Abs(t),Abs(t+turn(k,x)-d(k)),times=x
【解析】(1)根据图中后四张骨牌可知,上行数值和为22,下午和为24,差值为2,第1张骨牌的数字修改为1、2、6、6后,可以转为2、6、1、6,即可得差值最小值为1;(2)由题意知d(1?To?5)数组依次存储5张骨牌上下两行的差值,变量t为各骨牌上下排差值和的累加,①处为存储最小值的变量ans赋初值,应为t的绝对值,即abs(t);?②处位于对一张骨牌进行旋转的双重循环中,变量x为旋转次数,temp变量应为旋转后的临时最小值,函数turn返回旋转x次后的差值,所以每次旋转后的差值变化应为turn(k,x)-d(k),所以旋转后的临时最小值应为Abs(t+turn(k,x)-d(k));③处是在判断temp<ans时即旋转后差值小于原差值,此时旋转次数变量应记录为x的值。
Do while 条件表达式?? ?语句块? ????Loop? ??Do语句的执行过程是:先计算条件表达式的值,如果值为True,则执行一次循环体中的语句块,遇到Loop语句后,再次计算条件表达式的值,若仍为True,继续执行循环体中的语句块,如此不断重复,直到条件表达式的值为False时,才终止Do语句的执行。
本题考查算法的VB程序实现,重点是对数组变量、循环嵌套的理解和运用。
15.【答案】【小题1】K,N,
【小题2】(  ),flag=False,i=i-1,(  ),mid(zf,1,k-1)+mid(zf,k+2)或mid(zf,1,k-1)+mid(zf,k+2,len(zf)-k-1)
【解析】(1)第一次掉落“B,”,第二次掉落“C,”,第三次掉落“H,”,故第三次点击“最小值”按钮后Text2中显示内容为K,N,。(2)空1:flag用来判断是否有字母有重复,循环每次flag的初值为False,故填flag=False。空2:内层for循环判断i处生成的字母与已经生成的字母是否重复,如果重复,则i递减需要重新生成,flag赋值为True,故此处填i=i-1。空3:通过for循环找到最小字母的位置k,将k处的字母及之后的逗号删除,即将位置k-1之前的字符以及位置k+2之后的字符显示到文本框2中,故填mid(zf,1,k-1)+mid(zf,k+2)或mid(zf,1,k-1)+mid(zf,k+2,len(zf)-k-1)。
故答案为:(1)K,N,(2)flag=False????(3)i=i-1????(4)mid(zf,1,k-1)+mid(zf,k+2)或?mid(zf,1,k-1)+mid(zf,k+2,len(zf)-k-1)
Mid(  )是一个字符串函数,作用是从一个字符串中截取出指定数量的字符。函数用法,Mid(string,start,[length])其中参数string为字符串表达式,参数start为string中被取出部分的字符位置,参数length为截取的长度。程序中第一个循环随机生成字母,flag初值为false,如果和已经生成的字符有重复则flag为true,并i减1以便重新生成。不重复,则把该字母和一个逗号加入zf。用选择排序的思想标记最小值,然后用mid函数取出最小字母放入list1,并在Text2中减去这个字母和逗号。
本题主要考查VB程序的执行与调试。