资源简介 选修一第四章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程序的执行与调试。 展开更多...... 收起↑ 资源预览