1、2021年春浙江省高等学校计算机等级考试试卷(二级Visual Basic)说明:(1)请将所有试题的答案填写在试卷上。其中试题1试题6在答卷上各小题正确选项的对应位置处填“”:(2)请在答卷上填写学校名称、准考证号和姓名,并将你的准考证号的后五位填写在答卷右下角的指定位置内:(3)考试时间为90分钟。试题1(每小题3分,共12分) 阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。【程序说明】输入n后,计算并显示下列表达式的值。 运行时初始界面如下图左所示,输入10并按回车键后的界面如下图中所示(输入数若小于1则清空文本框,需重新输入),按“计算”按钮后的界面如下图右所
2、示。 【程序】Dim n As IntegerPrivate Sub Form_Load()End SubPrivate Sub (2) (K As Integer)If K 13 Then Exit Sub (3) If n 0 Then Text1.Enabled = FalseElse Text1.Text = End IfEnd SubDim y As Single, i As IntegerFor i = 1 To n (4) Next iLabel3.Caption = yText1.Enabled = TrueText1.Text = Text1.SetFocusEnd Sub【
3、供选择的答案】(1)A、Enabled=True B、Enabled=False C、Visible=True D、Visible=False(2)A、Text1_KeyPress B、Text1_Click C、Text1_Change D、Text1_KeyDown(3)A、k=Text1.Text B、k=13 C、n=13 D、n=Text1.Text(4)A、y=y+1/n B、y=y+1n C、y=y+1/i D、y=y+1i【解答】(2)Text1_Change()子过程是没有形参的,即括号里应该是空的。Text1_KeyDown(KeyCode As Integer, Shif
4、t As Integer)应该有两个Integer参数,而Text1_Click()子过程也没有形式参数,只有Text1_KeyPress(KeyAscii As Integer)有一个Integer参数,用来接收用户输入字符的Ascii(3)“If K 13 Then Exit Sub”意思是如果用户没有按回车键,则退出Sub过程继续接收用户输入。如果用户按回车键,即K=13时,接下来要判断用户输入的数是否小于1。故首先要获取文本框里的值。由下一行“If n 0 Then”可知,将文本框里的值保留到变量n中。故选D。(4)“/”是除法,结果是实数;而“”是整除,结果取整。For i = 1
5、To n (4) Next i这里的循环变量是i,而n是一个固定的值,本题中n等于10。A表示计算1/n+1/n+.+1/n,而题目要计算的是1+1/2+1/3+1/4+1/n试题2(每小题3分,共12分) 阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。【程序说明】运行时输入10个数后,输出其中较小的5个数。【程序】Dim a(10) As Single, t As Single, i As Byte, j As Byte, k As ByteFor i = 1 To 10 a(i) = InputBox( (5) )Next iFor i = 1 To 9 (6)
6、For j = i + 1 To 10 If (7) Then k = j Next j t = a(i): a(i) = a(k): a(k) = tNext iFor i = (8) Print a(i)Next iEnd Sub【供选择的答案】(5)A、a( & i & )= B、”a(“ + i + “)=” C、”a(“,i,”)=” D、”a(“;i;”)=”(6)A、k=i B、i=k C、k=i+1 D、i=k+1(7)A、a(j)a(i) C、a(j)a(k) D、a(j)a(k)(8)A、5 To 1 B、10 To 6 C、1 To 5 D、5 To10【解答】见讲座讲解
7、试题3(每小题3分,共12分)阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序】End SubPrivate Sub (10) P1.ScaleMode = 3 设置P1的坐标单位为像素End SubPrivate Sub P1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)Dim r As Long, i As Long, j As Longr = P1.ScaleWidth / 3For i = P1.ScaleLeft To P1.ScaleLeft + P1
8、.ScaleWidth For j = P1.ScaleTop To P1.ScaleTop + P1.ScaleHeight If (i - X) 2 + (j - Y) 2 (11) r * r Then P1.PSet (i, j), (12) End If Next jNext iEnd Sub【供选择的答案】(9) A.Action B.ShowOpen C.ShowFont D.Action = 3(10) A.Form_Load() B.Form_Click() C.P1_Load D.P1_Click()(11) A. C. D. =(12) A.White B.Rgb(0,0
9、,255) C.vbWhite D.Rgb(255,0,0) 【解答】(1)由题意,这里应该用打开文件对话框加载图片,故调用ShowOpen方法或Action = 1,故选B。(2)“窗体加载后,p1的坐标单位应为像素。”故P1.ScaleMode = 3的设置应该在Form_Load()事件中。(3)设A(X1,Y1)、B(X2,Y2),则两点之间的距离|AB|=sqr(X1- X2)2+(Y1- Y2)2),故(i - X) 2 + (j - Y) 2 r * r,则表示(i, j)这一点到圆心的距离大于半径,即(i, j)这一点在圆的外面。(4)“p1宽度的三分之一为半径的圆之外的区域改
10、为白色”,故选C或RGB(255, 255, 255),B.Rgb(0,0,255)为蓝色,D.Rgb(255,0,0)为红色,VB中的常量都是以vb开头的,故选C。试题4(每小题3分,共12分)阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。【程序】 Dim n As Integer, i As Integer, j As Integer List1.Clear n = InputBox(n=) ReDim a(2 To n) As Integer For i = 2 To n a(i) = i Next i For i = 2 To Sqr(n) If a(i) 0
11、 Then For j = 2 * i To n Step i a(j) = 0 Next j End If Next i For i = 2 To n If a(i) 0 Then List1.AddItem i Next iEnd Sub【供选择的答案】 A、1,2 B、2,3 C、3,4 D、2 A、2,3,5 B、2,3 C、3,5 D、2,4 A、3,5 B、2,4,6 C、3,5,7 D、2,3,5,7(16)该事件过程的功能是,输入n后:A、显示小于n的奇数 B、显示小于n的偶数C、显示小于n的素数 D、显示不大于n的素数【解答】For i = 2 To Sqr(n) If a(
12、i) 0 Then For j = 2 * i To n Step i a(j) = 0 Next j End If Next i上述循环语句执行后将a(4)置为0(外循环和内循环各执行1次)。故选BFor i = 2 To Sqr(n) If a(i) 0 Then For j = 2 * i To n Step i a(j) = 0 Next j End If Next i上述循环语句执行后将a(4)= 0,a(6)= 0(外循环执行1次,内循环执行2次)。故选A(3)分析过程同上(4)可用排除法求解:首先排除A、B,当n=13时,列表框中显示:2 3 5 7 11 13,故选D试题5(每
13、小题3分,共12分)阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。【程序】Private Function f(ByVal a As Integer, ByVal b As Integer) As IntegerDim r As Integerr = a Mod bWhile r 0 a = b: b = r: r = a Mod bWendf = bEnd FunctionDim m As Integer, n As Integerm = InputBox(m=): n = InputBox(n=)Form1.ClsPrint f(m, n); m; nEnd Su
14、b【供选择的答案】 A、 4 4 8 B、4 8 4 C、4 28 36 D、4 36 28 A、 4 4 8 B、4 8 4 C、4 28 36 D、4 36 2836,窗体显示:A、4 4 8 B、4 8 4 C、4 28 36 D、38 36 442,窗体显示:A、6 54 42 B、6 12 6 C、42 12 6 D、12 6 6【解答】(1) 函数f是求两个整数的最大公约数,采用的是辗转相除法。即使不知道这个算法也可以很快的求解。f(ByVal a As Integer, ByVal b As Integer)即按照值传递,即调用函数f时,f(m, n)将m的“值”传递给a,将n的
15、值传递给b,但a和b的改变不会影响m和n,故输出的后两位应该是28 36,故选C(2) 分析同上,选D(3) 将函数f参数设置改为“a As Integer,b As Integer”,则按地址传递,即a,b的改变会影响到m,n。输入28、36,即调用f(28,36)后a=28,b=36, r=a mod b=28,接下来执行循环语句。r=28时, a=36 b=r=28 r= a mod b=36 mod 28=8r=8时, a=b=28 b=r=8 r= a mod b=28 mod 8=4r=4时, a=b=8 b=r=4 r= a mod b=8 mod 4=0 循环结束故最终a=8
16、b=4由于是按地址传递,故m=8 n=4,故选B(4) 分析过程同上试题6(每小题3分,共12分) 程序运行时的初始界面如下图所示,列表框中所显示的是从磁盘文件输入的信息。回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。【程序】Private Sub Form_Load() 从文件e : aa.txt读入数据、追加到List1Dim ss As StringOpen e:aa.txt For Input As #1While Not EOF(1) Line Input #1, ss List1.AddItem ssWendClose #1End SubDim xm As String
17、, rq As Date, cj As IntegerDim i As IntegerFor i = 0 To List1.ListCount - 1 If Val(Mid(List1.List(i), 16, 3) cj Then xm = Trim(Mid(List1.List(i), 1, 4) rq = Mid(List1.List(i), 5, 10) cj = Val(Mid(List1.List(i), 16, 3) End IfNext iOpen e:aa.txt For Output As #1Print #1, xm; rq; cjClose #1End SubA、王小波
18、1987-12-5 92 B、“王小波”,#1987-12-5#,92C、董召弟1988-5-24 43 D、“董召弟”,#1988-5-24#,43A、王小波1987-12-5 92 B、“王小波”,#1987-12-5#,92C、董召弟1988-5-24 43 D、“董召弟”,#1988-5-24#,43A、1 B、10 C、11 D、12(24)若将Click事件中“Output”用“Append”置换,运行后文件e:aa.txt中的记录数为:A、1 B、10 C、11 D、12【解答】见讲座试题7(28分) 【解答】Dim ave As DoubleDim x() As DoubleD
19、im n As IntegerRem 一开始不知道并不知道n是多少,所以要使用动态数组 Dim i As Integer n = Val(InputBox(请输入数的个数n的值:) ReDim x(n) As Double For i = 1 To n x(i) = Val(InputBox(请输入第 & i & 个数:) Next iEnd Sub s = 0 下面的循环计算出n个数的总和 For i = 1 To n s = s + x(i) Next i ave = s / n 计算平均值 Text1.Text = aveEnd Sub Dim y As Double For i = 1
20、 To n s1 = s1 + (x(i) - ave) 2 Next i y = Sqr(s1 / n) Text2.Text = yEnd Sub2009年春浙江省高等学校计算机等级考试试卷(二级Visual Basic)参考答案试题1试题6:12345678910BADCAADCBA11121314151617181920BCBADDCDBB21222324ABAC试题7:Dim ave As DoubleDim x() As DoubleDim n As IntegerDim i As Integern = Val(InputBox(请输入数的个数n的值:)ReDim x(n) As DoubleFor i = 1 To n x(i) = InputBox(请输入第 & i & 个数:)Next iEnd Subs = 0For i = 1 To n s = s + x(i)Next iave = s / nText1.Text = aveEnd SubDim y As DoubleFor i = 1 To n s1 = s1 + (x(i) - ave) 2Next iy = Sqr(s1 / n)Text2.Text = yEnd Sub