资源简介 第八单元 算法及VB语言基础单元小结知识系统构建/第八单元 算法及VB语言基础单元检测题组/时间:40分钟 /分值:65分一、选择题(每题3分,共42分)1.(2019浙江十二校高三第一次联考,5,3分)某流程图如图所示:/若输入k的值为9,最终i、s的值分别为( )A.11 0 B. 11 -11 C. 9 0 D. 9 -9答案 B 本题考查循环结构流程图。各变量在执行过程中变化如下:变量kis进循环前910第一次循环后930+3第二次循环后950+3-5第三次循环后970+3-5-7第四次循环后990+3-5-7+9第五次循环后9110+3-5-7+9-11退出循环2.(2019浙江名校新高考研究联盟第一次联考,6,3分)某算法的部分流程图如图所示。执行这部分流程后,输出m的值是( )/ A.0 B. 1 C.2 D.9答案 D 本题考查循环结构流程图。各变量变化如下:变量xym进循环前19200第一次循环后1922第二次循环后199第三次循环后019退出循环本程序本质上是找出数值x的各位数中值最大的那位数。3.在Visual Basic中,能表示整数x是完全平方数(如9=3*3,9是完全平方数)的表达式是( )A.x^2=x*x B.sqr(x)=x2C.int(sqr(x))^2=x D.(x2)^2=x答案 C 本题考查VB基本函数的应用。Sqr(x)是开平方函数,Int(x)是取不大于x的最大整数。根据题意可知选C。4.有如下程序:Private Sub Command1_Click() Dim a(5) as Integer Dim n as Integer, i as Integer n = Val(Text1.Text) i = 0 a(1) = 1 a(2) = 1 For i = 3 To n a(i) = a(i-1) + a(i-2) Next i Label1.Caption = a(i)End Sub若在Text1中输入5,则点击按钮后的运行结果为( )A.Label1中输出5 B.Label1中输出10C.报“下标越界”错误 D.Label1中无内容答案 C 本题考查对VB循环语句和数组的掌握。当输入5时,首先初始化数组元素a(1)为1,a(2)为1,进入For循环,第一次循环i为3,计算出a(3)的值为a(1)+a(2)=2,i的值加1,第二次循环计算出a(4)的值为3,i的值加1,第三次循环计算出a(5)的值为5,i的值加1,最后跳出循环,i的值为6,a(5)的值为5。而程序要求输出a(6),但是由定义语句Dim a(5) as Integer可知a数组的范围是0~ 5,所以不存在下标为6的数组元素a(6),属于数组下标越界错误。5.用VB模拟设计某软件的登录界面,如图所示,当鼠标单击“<请输入账号>”所在的文本框Text1时,文字内容消失。则此事件处理的过程名应该是( )/A.登录窗口_Click B.Text1_KeyPressC.Command1_Click D.Text1_Click答案 D 本题考查对VB事件的掌握。点击文本框Text1的事件名为Text1_Click,其中Text1为文本框的名称,Click代表是点击事件。6.(2019浙江十二校高三第一次联考,11,3分)有如下VB程序段:Dim i As Integer, Sum As IntegerDim a(l To 6) As Integer, b(l To 6) As IntegerSum = 0a(6) = 18: a(5) = 7: b(6) = 14: b(5) = 16For i = 4 To 1 Step -1 a(i) = a(i + 2)-a(i + 1) b(i) = b(i + 2)-a(i) If b(i) Mod 3 = 0 Then Sum = Sum + b(i)Next iTextl .Text = Str(Sum)该程序段运行后,文本框text1中显示的内容是( )A.39 B. 30 C. -9 D. 12答案 B 本题考查数组的运算。当i=4时,计算得到a(4)=a(6)-a(5)=18-7=11,b(4)=b(6)-a(4)=14-11=3,得到sum=3;当i=3时,计算得到a(3)=a(5)-a(4)=7-11=-4,b(3)=b(5)-a(3)=16-(-4)=20,sum仍然是3;当i=2时,计算得到b(2)=b(4)-a(2)=3-15=-12,得到sum=3-12=-9;当i=1时,计算得到a(1)=a(3)-a(2)=-4-15=-19,b(1)=b(3)-a(1)=20-(-19)=39,得到sum=-9+39=30。7.在Visual Basic中,有如下程序:Private Sub Command1_Click() Dim a As Integer,b As Integer,c As Integer Dim d As Integer a=Val(Text1.Text):b=Val(Text2.Text):c=Val(Text3.Text) d=min(a,b)+min(b,c) Text4.Text=Str(d)End SubFunction min(x As Integer,y As Integer)As Integer If xEnd Function运行该程序,在文本框Text1、文本框Text2、文本框Text3中分别输入2、-5、6后,单击命令按钮Command1,文本框Text4中显示的是( )A.-10 B.-5 C.2 D.6答案 A 本题考查自定义函数。自定义函数min的功能是比较两个参数的大小,返回小的值。输入后a=2,b=-5,c=6,d=min(a,b)+min(b,c)=-5+(-5)=-10。8.模拟剪刀石头布的游戏,用1~3这3个数分别代表剪刀、石头、布这三种情况,使用Rnd随机函数可以表示为( )A.Int(Rnd(3)+1) B.Int(Rnd*2+1)C.Int(Rnd(2)+1) D.Int(Rnd*3+1)答案 D 本题考查随机函数Rnd的使用。Rnd能产生一个大于或等于0且小于1的单精度随机数。产生[a,b]区间的随机整数,公式应该是:Int(Rnd*(b-a+1)+a)。9.在Visual Basic程序中,设x=389,能得到其百位数字“3”的表达式是( )A.Int(x/10)*10 B.Int(x/100)*100C.x-Int(x/10)*10 D.Int(x/100)答案 D 本题考查基本的算术运算表达式。Int(x/10)*10表达式的值是380,Int(x/100)*100表达式的值是300,x-Int(x/10)*10表达式的值为9,Int(x/100)表达式的值是3。10.已知字符串变量x的值是“H”,则VB表达式Chr(Asc(x)+1)的值是(已知字符“A”的ASCII码是65)( )A.“I” B.“G” C.72 D. 74答案 A 本题考查两个字符转换函数Chr(x) 及Asc(x)的功能。Chr(Asc(“H”)+1)可以理解为比“H”的ASCII值大1的字符。11.以下程序运行后,s的值为( )Dim i As Integer, s As Stringi = 0Do While i < 5 s = Str(i) + s i = i + 1LoopA.“01234” B.“12345” C.“54321” D.“43210”答案 D 本题考查对VB循环结构和字符串操作的掌握。i的初值为0,s为空字符串,进入循环体,首先s和i连接,s的值为“0”,i的值加1,第二次进入循环,s的值为“01”(注意程序中连接的顺序),i的值加1,最后当i等于5时跳出循环,字符串s连接到4为止,所以为“43210”。12.数组元素值a(1)=2 : a(2)=8 : a(3)=3 : a(4)=4 : a(5)=5 :a(6)=6 : a(7)=1 : a(8)=7 : a(9)=9。m = 1: k = 1For i = 2 To 9 If a(i) > a(i-1) Then k = k + 1 If k > m Then m = k Else k = 1 End IfNext iText1.Text = Str(m)该程序段运行后,文本框Text1中显示的内容是( )A.4 B.6 C.8 D.9答案 A 该程序实现的功能是求最大连续递增序列的个数。a(3)=3 : a(4)=4 : a(5)=5 :a(6)=6,这四个元素为最大连续递增序列。也可采用代入法进行逐步计算。变量k的值在不断变化,变量m用于记录k的最大值。13.如下VB程序段:x=Text1.Textp=0For i=1 to Len(x) If Mid(x,i,1)=“a” Then p=p+1Next iPrint p若程序运行时,在文本框Text1中键入“Are you happy”,则运行结果是( )A.0 B.1 C.2 D.11答案 B 本题主要考查For语句和字符串处理函数。Len()函数是求字符串的长度,Mid()函数是求字符串的子串。变量x=Text1.Text=“Are you happy”,For语句的作用是统计字符串x中字母“a”的个数,用变量p计数,最后输出p。注意“A”不等于“a”。14.有10个数据23、15、51、36、78、47、39、9、88、96依次存放在数组a(1 To 10)中,使用如下程序段找出最大值: max=a(1) For i=2 To 10 If a(i) > max Then max=a(i) Next i当虚线框内的语句刚好执行完第6次后(此时循环变量i的值为7),变量max的值是( )A.23 B.39 C.78 D.96答案 C 本题中代码用于寻找数组中的最大值。它的思想方法是先假设数组的第一项是最大的,并赋值给变量max,然后把从第二项开始的所有数组元素跟变量max进行比较,如果比max大,则把该元素赋值给max。这样循环结束后,变量max中存储的就是该数组中的最大值。而本题不是循环结束后,而是循环6次以后,也就是比较了6次,max中存储的应该是前7个数中的最大值,即为78。二、非选择题(共23分)15.(2016浙江高中联盟第二学期开学考试,16,4分)任意一个大于或等于4的偶数,都可以用两个素数之和表示,这就是哥德巴赫猜想。如:4=2+2,6=3+3,8=3+5, 10=5+5,12=5+7,98=19+79。编写一个验证哥德巴赫猜想的VB程序:程序运行时,在文本框Text1中输入一个大于或等于4的偶数,单击“验证”按钮Command1后,如果哥德巴赫猜想验证成功,则在文本框Text2中显示“Yes”,并在列表框List1中显示用两个素数表示该偶数的等式,否则显示“No”。程序运行效果如图所示。/实现上述功能的VB代码如下,但加框处代码有错,请改正。Function judge(x As Integer)As Boolean’函数judge的功能是判断整数x是不是素数,若是素数则返回True,否则返回False Dim j As Integer judge=True j=2 Do While j<=x-1 And judge=TrueIf x Mod j=0 Thenjudge=FalseElsej=j+1End If LoopEnd FunctionPrivate Sub Command1_Click() Dim n As Integer,p As Integer,q As Integer,flag As Boolean n=Val(Text1.Text) p=1 flag=False Do While flag=True And pp=p+1q=q+1 ’②If judge(p)And judge(q)ThenText2.Text=“Yes”flag=TrueList1.AddItem Str(n)+“=”+Str(p)+“+”+Str(q) End If Loop If flag=False Then Text2.Text=“No”End Sub答案 ①flag=False 或not flag 或flag<>True ②q=n-p解析 本题验证哥德巴赫猜想:在文本框Text1中输入任意一个大于或等于4的偶数,输出以两个素数和的形式显示在列表框List1中,并在文本框Text2中显示验证结果。变量flag用于标识是否找到方案,初始值为false,表示未找到,枚举过程中若找到则变为True,故Do while语句的条件是:方案未找到(flag=False)且(And)仍在查找范围内(p16.有一个数组data存放了n个数据,现从中删除了一个元素,其余的元素依次向前递补(假设删除的是第3个元素,则要将第4个元素移到第3个元素处,第5个元素移到第4个元素处,以此类推),然后输出数组内容。程序输入要删除数的位置,点击“删除”按钮后删除指定数,并把剩余的数字依次输出到List2中,程序如图所示。/Dim data(10) As Integer ’①Dim n As Integer ’n表示总元素个数Private Sub Command1_Click() Dim t As Integer t = Val(Text1.Text) For i = t To n-1 ② Next i n = n - 1 For i = 1 To n ③ Next iEnd SubPrivate Sub Form_Load()Dim i As Integern = 10For i = 1 To n data(i) = i * 2 List1.AddItem Str(data(i))Next iEnd Sub(1)与①处语句功能一样的是(填字母) (A.Dim data(0 To 10) As Integer/B.Dim data(1 To 10) As Integer)。?(2)为实现程序功能,请在划线处填入合适的代码。②处的代码为 。 ?③处的代码为 。 ?答案 (1)A(2)data(i) = data(i + 1);List2.AddItem Str(data(i))解析 (1)本题考查数组元素的定义方法。(2)②将当前数data(i)填充为后面的数data(i+1),相当于后面的数往前移动一位,数字总数n=n-1,指定位置的数已删除。③利用Listbox的AddItem方法添加数据。17.(2016浙江高中联盟第二学期开学考试,17,5分)竞选班长。编号分别为1、2、3、4、5的五位候选人参加班长竞选,现要设计一个计票程序,根据回收的选票信息统计各位候选人的得票数,得票数最多的被选为班长,并输出班长的编号。选票信息为一个数字序列,由每张选票的投票结果构成,如某选票序列为101233303,其含义见如下表所示。选票序列101233303含义第1张选票投给1号第2张选票弃权第3张选票投给1号第4张选票投给2号第5张选票投给3号第6张选票投给3号第7张选票投给3号第8张选票弃权第9张选票投给3号备注:选票序列101233303,序列中的数字i,表示投票给编号为i的人,即编号为i的人得1票,其中数字0表示不投给任何人,即为弃权。表中选票序列的投票结果为:1号得2票,2号得1票,3号4得票,4号、5号均为0票(没人投),所以3号得票数最高,被选为班长。程序运行时,在文本框Text1中输入选票信息,单击“计算”按钮Command1后,被选为班长的编号显示在文本框Text2中。程序运行效果如图所示。/实现上述功能的VB程序如下,请在划线处填入合适的代码。Private Sub Command1_Click()Dim a(1 To 5)As Integer’数组元素a(1)~a(5)依次存放编号为1~5的五位候选人的得票数Dim st As String,i As Integer,j As Integer,n As IntegerDim ans As Integer ’变量ans存放被选为班长的人的编号Dim max As Integer ’变量max存放最多的得票数st=Text1.Text ① ?For i=1 To 5a(i)=0Next iFor i=1 To 5For j=1 To nIf ② Then ?a(i)=a(i)+1Next jNext imax=0For i=1 To 5If a(i)>max Then max=a(i):ans=iNext i ③ ?End Sub答案 ①n=Len(st) ②Val(Mid(st,j,1))=i③Text2.Text=Str(ans)解析 算法主要思想:将输入的字符串,利用Mid函数逐位提取,并将判断结果存入到相应数组变量中,然后通过比较求出数组元素的最大值及对应编号。代码实现:将Text1中的选票序列读入字符串变量st,使用Len函数计算字符串长度存入变量n,使用For j=1 To n依次提取每一位,通过Val函数转换为数值类型,并与编号进行比较,统计到相应候选人对应的数组元素中。变量max用于存储最大票数,变量ans用于存储最大票数的候选人编号。题目要求在Text2中输出最大票数候选人的编号,故输出值为ans。18.小明编写了一个数据插入程序。程序输入一个数字,将该数字插入一列有序数据:-5,3,4,12,20,45,70,并使数据序列保持有序。设计的算法是从前往后找位置插入。/Private Sub Command1_Click() Dim a(1 To 8) As Integer Dim n, i, j, x As Integer List1.Clear List2.Clear a(1) = -5: a(2) = 3: a(3) = 4: a(4) = 12: a(5) = 20: a(6) = 45: a(7) = 70 For j = 1 To 7 List1.AddItem Str(a(j)) Next j x = Val(Text1.Text) i = 1 Do While x > a(i) And i < 8 ’找x的插入位置① Loop For j = 8 To i + 1 Step -1 ’移动数据② Next j a(i) = x For j = 1 To 8 List2.AddItem Str(a(j)) Next j Label1.Caption = “插入的位置是” &Str(i)End Sub(1)代码“List1.Clear”中的Clear是 。(单选,填字母:A.属性名/B.事件名/C.方法名)?(2)为实现程序功能,请在划线处填入合适的代码。①处填入的代码为 。 ?②处填入的代码为 。 ?答案 (1)C(2)i = i + 1;a(j) = a(j - 1)解析 (1)略。(2)本题在一个递增序列中插入一个新数。①i表示新数的位置,新数若比当前数大,则位置往后移动。②从后往前依次将元素后移一位。 展开更多...... 收起↑ 资源列表 单元小结.docx 单元检测题组.docx