VB阶段测试卷

VB程序设计阶段测试试卷

院系____________ 年级____________ 专业____________
学号____________ 姓名____________ 成绩____________

一、选择题(每题1分,共10分)
1.窗体文件名和标准模块文件名的后缀分别是____________。
A. .frm和.vbp B. .frm和.bas
C. .bas和 .Vbw D. .vbp和.vbs
2.通过文本框的____________事件过程可以获取文本框中键入字符的ASCll码值。
A.Change B.LostFocus C.GotFocus D.KeyPress
3.可以在窗体模块的通用声明段中声明__________。
A.全局变量 B.全局常量 C.全局数组 D.全局用户自定义类型
4.调用过程时,若不想改变实参中的值,应采用___________的方法。
A.传地址 B.传信息 C.传值 D.传对象
5.下面叙述中正确的是__________。
A.Space函数只能用于Print方法中,不能用于表达式
B.Mid(s,n)表示从s字符串左边第n个位置开始向右取字符,直到末尾
C.连接符"+"可以用于连接任意类型的数据连接
D.Right函数用于取字符串右边的n个字符
6.语句 Print "Sgn(-26)=";Sgn(-26)的输出结果___________。
A.Sgn(-26)=-1 B.Sgn(-26)=Sgn(-26)
C.Sgn(-26)=-26 D.Sgn(-26)=+1
7.在VB程序设计中所产生的错误分为三类:语法错误、运行错误和_________错误。
A.逻辑 B.概念 C.函数 D.语言
8.以下说法不正确的是
A.使用ReDim语句可以改变数组的维数
B.使用ReDim语句可以改变数组的类型
C.使用ReDim语句可以改变数组元素的个数
D.使用ReDim语句可以对数组中的所有元素进行初始化
9.若要将滚动条的最小值设为0,最大值设为255,应对其_________属性进行设置。
A.Left和 Top B.Width和 Height
C.SmallChange和 LargeChange D.Min和 Max
10.在过程中已说明a、b、c 均为Integer型变量,且均已被赋值,其中a=30、b=40、c=50,如再执行下面的语句,可正常执行的是___________________。
A.Print a*b*C
B.Print 1&*a*b*C
C.Print a*b*C*1&
D.Print a*b*C*l!


二、简单填空(每题1分,共10分)
1.顺序结构、分支结构和________是结构化程序设计的核心。
2.欲使某窗体从屏幕上消失,但仍驻留在内存中,应使用窗体的________________方法。
s.设置文本框的__________属性,可以使在文本框中键入字符时,只显示某个特定的字符,如"*"。
4.可将同一窗体上的多个 Option Button控件分为几个组的控件是______________。
5.如果将非0的数赋值给一个布尔变量,则布尔变量的值为_____________。
6.标准模块中不能包含________________过程。
7.在

定义过程时,____________变量不能作为形式参数。
8.用_________语句可以重新初始化大小固定的数组的元素,以及释放动态数组的存储空间。
9.用 Dim在A(-3 To 5,4 to 10)As Integer语句定义的数组的元素个数是_____________。
10.通用过程包括:Sub过程和_______________过程。

三、写出下列程序的运行结果(每题2分,共20分)
1.运行下列程序,第一行输出的内容是 (1) ,第二行输出的内容是 (2) 。
Private Sub Command1_CliCk()
Dim m As Integer, n As Integer
Do While n < 21
m = m + 1
If m > 5 Then Exit Do
n = n + m
Loop
Print "m="; m
Print "n="; n
End Sub
2.运行下列程序,第二行输出的内容是 (3) ,第三行输出的内容是 (4) 。
Private Sub Command1_ Click()
Dim st As String, st1 As String, st2 As String
st1 = "D"
For I = 1 To 3
st2 = LCase(st1)
st1 = st1 + st2
st = st + st1
Print st
st1 = Chr(Asc(st1) + 1)
Next I
End Sub
3.运行下列程序,第一行输出的内容是 (5) ,第四行输出的内容是 (6) 。

Private Sub Command5_Click()
Dim a(4, 4) As Integer, I As Integer, J As Integer
Dim X As Integer, N As Integer
m = 1: N = 1: X = 1
For I = 1 To 4
For J = N To 5 - N Step m
a(I, J) = X
X = X + 1
Next
N = J - m
m = -m
Next
For I = 1 To 4
For J = 1 To 4
Print a(I, J);
Next
Print
Next
End Sub
4.运行下列程序,第一行输出的内容是 (7) ,第三行输出的内容是 (8) 。
Private Sub Sub5(ByVal X As Integer, ByVal Y As Integer, z As Integer)
z = X + Y + z
End Sub

Private Sub Command1_Click()
Dim a As Integer, b As Integer, c As Integer
a = 5: b = 8: c = 3
Call Sub5(a, b, c)
Print a, b, c
Call Sub5(a, a + b + c, b)
Print a, b, c
Call Sub5(a + b, b / a, a)
Print a, b, c
End Sub
5.运行下列程序,第一行输出的内容是 (9) ,第二行输出的内容是 (10 ) 。
Private Sub Sub5(N As Integer, ByVal m As Integer)
N = N Mod 10
m = m \ 10
End Sub
Private Sub Command1_Click()
Dim x As Integer, y As Integer
x = 12
y = 34
Call Sub5(x, y)
Print x
Print y
End Sub
四、读程序填写代码(每题3分,共30分)
l. 将给定的N位(N≤10)正整数按逆序输出,如12345逆序输出后得到 54321,并且求出各位数字之和,运

行结果如图所示。
Private Sub Form_Click()
Dim x As Long, sum As Integer
x = Val(InputBox("请输入10位以内的正整数"))
Print "正整数:"; x
Call rv(x, sum)
Print (1)
Print "各位数字之和为:"; sum;
End Sub
Private Sub rv(x As Long, s As Integer)
Dim i As Integer, a() As Integer, k As Long
i = l
Do
(2)
a(i) = x Mod 10
k = k * 10 + a(i)
s = s + a(i)
(3)
i = i + 1
Loop Until x = 0
x = k
End Sub
2.在数组 A中存放 4个数据11、22、33、44,输入 X,如果 X在数组中,则将其从数组中删除,删除后需将后面的数据依次向前移动一个位置;如果X不在数组中,则显示"数据没找到";如果X超出了数组的第1个数或第4个数,则显示"数据超出范围"。


Private Sub Command1_Click()
Dim a(4) As Integer
a(1) = 11: a(2) = 22: a(3) = 33: a(4) = 44
x = Val(InputBox("请输入X:"))
If (4) Then
MsgBox ("数据超出范围")
Else
For i = 1 To 4
If (5) Then Exit For
Next
If i < 5 Then
For J = i + 1 To 4
(6)
Next
For k = 1 To 3
Print a(k)
Next
Print
Else
MsgBox "数据没找到"
End If
End If
End Sub

3.本程序的功能是在二维数组中查找鞍点元素。所谓鞍点即该元素在所在行中为最大,且在所在列中为最小。在一个数组中鞍点可能存在,也可能不存在这样的元素。例如有一如下数组,数组各元素的值从文件 Data.txt中读取,其中第 2行第 2列的元素 12就是鞍点元素。
Private Sub Form_click()
Dim a(3,3)As Integer, i As Integer, J As Integer
Dim maxvr As Integer, col As Integer, flg As Integer
For i=1 to 3
For j=1 To 3
a(i,j)=Rnd*89+10
Print a(i,j);
Next j
Print
For i = 1 To 3
maxvr = (7)
col = l
For J = 2 To 3
If maxvr < a(i, J) Then
(8)
col = J
End If
Next J
For J = 1 To 3
If maxvr > a(J, col) Then (9)
Next J
If J > 3 Then
Print "a("; i; ","; col; ")="; a(i, col

)
flg = 1
End If
Next i
If (10) Then Print "鞍点元素不存在"
End Sub

五、按要求编写通用过程代码(每题了分,共14分)
1.编写一个判断是否素数的子过程,过程名为Sushu,形参N是要判断的数,flag是判断的结果。
Pnvate Sub Sushu(N As Integer, flag As Boolean)
......
End Sub

2.编写一个求两个数的最小公倍数的函数过程,函数名为minpub,形参M、N分别为两个整数。
Private Function minPub(M As Integer, N As Integer) as Integer
......

End Function
六、编程题(16分)
编写按钮的Click事件过程,程序运行结果如图示,要求如下:
1.单击"生成数组"(Commandl)按钮,生成一个由两位随机整数组成的5×5的数组,显示在图片框P1中;(6分)
2.单击"最小列"(Command2)按钮,找出该数组的最小元素,并将最小元素所在列的值均赋值为0,且显示在图片框P2中;(8分)


3.单击"清空"(Command3)按钮,将清空两个图片框中的内容。(2分)





1



相关主题
相关文档
最新文档