资源描述
2021年春浙江省高等学校
计算机等级考试试卷(二级Visual Basic)
说明:
(1)请将所有试题的答案填写在试卷上。其中试题1~试题6在答卷上各小题正确选项的对应位置处填“√”:
(2)请在答卷上填写学校名称、准考证号和姓名,并将你的准考证号的后五位填写在答卷右下角的指定位置内:
(3)考试时间为90分钟。
试题1(每小题3分,共12分)
阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序说明】输入n后,计算并显示下列表达式的值。
运行时初始界面如下图左所示,输入10并按回车键后的界面如下图中所示(输入数若
小于1则清空文本框,需重新输入),按“计算”按钮后的界面如下图右所示。
【程序】
Dim n As Integer
Private Sub Form_Load()
End Sub
Private Sub (2) (K As Integer)
If K <> 13 Then Exit Sub
(3)
If n > 0 Then
Text1.Enabled = False
Else
Text1.Text = ""
End If
End Sub
Dim y As Single, i As Integer
For i = 1 To n
(4)
Next i
Label3.Caption = y
Text1.Enabled = True
Text1.Text = " "
Text1.SetFocus
End Sub
【供选择的答案】
(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+1\n C、y=y+1/i D、y=y+1\i
【解答】
(2)Text1_Change()子过程是没有形参的,即括号里应该是空的。Text1_KeyDown(KeyCode As Integer, Shift 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 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 Byte
For i = 1 To 10
a(i) = InputBox( (5) )
Next i
For i = 1 To 9
(6)
For j = i + 1 To 10
If (7) Then k = j
Next j
t = a(i): a(i) = a(k): a(k) = t
Next i
For i = (8)
Print a(i)
Next i
End 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) B、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
【解答】见讲座讲解
试题3(每小题3分,共12分)
阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序】
End Sub
Private Sub (10)
P1.ScaleMode = 3 ' 设置P1的坐标单位为像素
End Sub
Private Sub P1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim r As Long, i As Long, j As Long
r = P1.ScaleWidth / 3
For i = P1.ScaleLeft To P1.ScaleLeft + P1.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 j
Next i
End 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.< B.> C.<> D. =
(12) A.White B.Rgb(0,0,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宽度的三分之一为半径的圆之外的区域改为白色”,故选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 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 i
End 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(i) <> 0 Then
For j = 2 * i To n Step i
a(j) = 0
Next j
End If
Next i
上述循环语句执行后将a(4)置为0(外循环和内循环各执行1次)。故选B
For 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(每小题3分,共12分)
阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序】
Private Function f(ByVal a As Integer, ByVal b As Integer) As Integer
Dim r As Integer
r = a Mod b
While r <> 0
a = b: b = r: r = a Mod b
Wend
f = b
End Function
Dim m As Integer, n As Integer
m = InputBox("m="): n = InputBox("n=")
Form1.Cls
Print f(m, n); m; n
End Sub
【供选择的答案】
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 28
36,窗体显示:
A、4 4 8 B、4 8 4 C、4 28 36 D、38 36 4
42,窗体显示:
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的值传递给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=8
r=8时, a=b=28 b=r=8 r= a mod b=28 mod 8=4
r=4时, a=b=8 b=r=4 r= a mod b=8 mod 4=0 循环结束
故最终a=8 b=4由于是按地址传递,故m=8 n=4,故选B
(4) 分析过程同上
试题6(每小题3分,共12分)
程序运行时的初始界面如下图所示,列表框中所显示的是从磁盘文件输入的信息。回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序】
Private Sub Form_Load() '从文件e : \ aa.txt读入数据、追加到List1
Dim ss As String
Open "e:\aa.txt" For Input As #1
While Not EOF(1)
Line Input #1, ss
List1.AddItem ss
Wend
Close #1
End Sub
Dim xm As String, rq As Date, cj As Integer
Dim i As Integer
For 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 If
Next i
Open "e:\aa.txt" For Output As #1
Print #1, xm; rq; cj
Close #1
End Sub
A、王小波1987-12-5 92 B、“王小波”,#1987-12-5#,92
C、董召弟1988-5-24 43 D、“董召弟”,#1988-5-24#,43
A、王小波1987-12-5 92 B、“王小波”,#1987-12-5#,92
C、董召弟1988-5-24 43 D、“董召弟”,#1988-5-24#,43
A、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 Double
Dim x() As Double
Dim n As Integer
Rem 一开始不知道并不知道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 i
End Sub
s = 0
'下面的循环计算出n个数的总和
For i = 1 To n
s = s + x(i)
Next i
ave = s / n '计算平均值
Text1.Text = ave
End Sub
Dim y As Double
For i = 1 To n
s1 = s1 + (x(i) - ave) ^ 2
Next i
y = Sqr((s1 / n))
Text2.Text = y
End Sub
2009年春浙江省高等学校
计算机等级考试试卷(二级Visual Basic)
参考答案
试题1~试题6:
1
2
3
4
5
6
7
8
9
10
B
A
D
C
A
A
D
C
B
A
11
12
13
14
15
16
17
18
19
20
B
C
B
A
D
D
C
D
B
B
21
22
23
24
A
B
A
C
试题7:
Dim ave As Double
Dim x() As Double
Dim n As Integer
Dim i As Integer
n = Val(InputBox("请输入数的个数n的值:"))
ReDim x(n) As Double
For i = 1 To n
x(i) = InputBox("请输入第" & i & "个数:")
Next i
End Sub
s = 0
For i = 1 To n
s = s + x(i)
Next i
ave = s / n
Text1.Text = ave
End Sub
Dim y As Double
For i = 1 To n
s1 = s1 + (x(i) - ave) ^ 2
Next i
y = Sqr((s1 / n))
Text2.Text = y
End Sub
展开阅读全文