资源描述
江 南 大 学 考
《程序设计基础VB》期末试卷 (A)
使用专业、班级 学号 姓名
题 数
一
二
三
总 分
得 分
本题
得分
一、选择题〖每题1分,共计35分〗;
1. 下列有关对象的叙述中,正确的是()。
A. 对象由属性、事件和方法构成
B. 对象的所有属性既可以在属性窗口设置,又可以在程序运行时用赋值语句设置
C. 对象的事件一定就是由VB预先设置好的人工干预的动作
D. 对象的方法是对象响应某个事件后所执行的一段程序代码
2. 在一个多窗体程序中,可以仅将窗体Form2从内存中卸载的语句是()。
A. Form2.Unload B. Unload Form2 C. Form2.End D. Form2.Hide
3. 应用程序窗体的名称属性为Frm1,窗体上有一个命令按钮,其名称属性为Cmd1,窗体和命令按钮的Click事件过程名分别为()。
A. Form_Click() Command1_Click() B. Frm1_Click() Command1_Click()
C. Form_Click() Cmd1_Click() D. Frm1_Click() Cmd1_Click()
4. 运行状态,在文本框Txtinput中输入“ABC”时,窗体上显示()。
Private Sub Txtinput_Change()
Print Txtinput.Text;
End Sub
A. AABABC B. ABC C. A D. A
AB B
ABC C
5. 若需要在同一窗体内安排两组相互独立的单选按钮(OptionButton),可使用()控件作容器将它们分开。①TextBox ②PictureBox ③Image ④Frame
A. ①或② B. ②或③ C. ②或④ D. ③或④
6. 要使一个文本框能显示多行信息,并具有水平和垂直滚动条,应先设置()。
A. MultiLine属性置为True, ScrollBar属性设置为3
B. AutoSize属性置为True, ScrollBar属性设置为True
C. Alignment属性置为True, Style属性设置为2
D. MultiLine属性置为True, ScrollBar属性设置为True
7. 设窗体上有一个标签Label1和一个计时器Timer1,Timer1的Interval属性被设置为1000,Enabled属性被设置为True,要求程序运行时每秒在标签中显示一次系统当前时间。以下可以实现上述要求的事件过程是()。
A. Private Sub Timer1_Timer()
Label1.Caption = True
End Sub
C. Private Sub Timer1_Timer()
Label1.Interval = 1
End Sub
B. Private Sub Timer1_Timer()
Label1.Caption = Time$
End Sub
D. Private Sub Timer1_Timer()
Label1.Text = Time
End Sub
8. 若看到程序中有以下事件过程,则可以肯定的是,当程序运行时()。
Private Sub Click_MouseDown(Button As Integer, Shift As Integer, X As Single, _
Y As Single)
If Button = 2 Then Print “VB Program”
End Sub
A. 鼠标右键按下Command1对象,执行此过程
B. 鼠标右键单击Click对象,执行此过程
C. 鼠标左键单击Click对象,执行此过程
D. 鼠标左键按下MouseDown对象,执行此过程
9. 窗体上有名为Option1的单选按钮,则以下语句中与If Option1.Value = True Then不等价的是()。
A. If Option1.Value Then B. If Option1 = True Then
C. If Value = True Then D. If Option1 Then
10. 文本框Text1的KeyDown事件过程如下:
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
End Sub
其中参数KeyCode的值表示的是发生此事件时()。
A. 是否按下了Shift键 B. 按下的是哪个数字键
C. 所按的键盘键的键码(扫描码) D. 所按的键盘键的Ascii码
11. 窗体上有一个用菜单编辑器设计的菜单。运行程序,并在窗体上单击鼠标右键,则弹出快捷菜单。如图所示。以下叙述中错误的是()。
A. 在设计“粘贴”菜单项时,在菜单编辑器窗口中设置“有效”属性(有“√”)
B. 菜单中的横线是在该菜单项的标题输入框中输入了一个“-”(减号)字符
C. 在设计“选中”菜单项时,在菜单编辑器窗口中设置“复选”属性(有“√”)
D. 在设计该弹出菜单的主菜单项时,在菜单编辑器窗口中去掉了“可见”前面的“√”
12. 执行以下语句时,会出现错误提示的是()。
A. Print “2b3” + 12.5 B. Print “12.5” + 12
C. Print “12.5” & 12.5 D. Print “2e3” + 12
13. 设变量D为Date型、A为Integer型、S为String型、L为Long型,下面赋值语句中不能执行的是()。
A. D = #12:30:00 PM# B. A = “3277e1”
C. S = Now D. L = “4276D3”
14. 数学表达式对应的Visual Basic表达式是()。
A. Sin(30 * 3.14159 / 180) + Sqr(Log(x) + y) / 2 * 3.14159 + Exp(x + y)
B. (Sin(30 * π/ 180) + Sqr(Ln(x) + y)) / (2 *π+ Exp(x + y))
C. Sin(30 * 180 / 3.14159) + Sqr(Log(x) + y) / (2 * 3.14159 + e^(x + y))
D. (Sin(30 * 3.14159 / 180) + Sqr(Log(x) + y)) / (2 * 3.14159 + Exp(x + y))
15. 窗体上有一个名称为Command1的命令按钮,其事件过程如下:
Private Sub Command1_Click()
x = "VisualBasicProgramming"
a = Right(x, 11)
b = Mid(x, 7, 5)
c = MsgBox(a, , b)
End Sub
运行程序后单击命令按钮,以下叙述中错误的是()。
A. 信息框的标题是Basic B. 信息框中提示信息是programming
C. c的值是函数的返回值 D. MsgBox的使用格式有错
16. 下面的关系表达式中,运算结果为True的是()。
A. Cint(1.5) = Int(1.5) B. Fix(1.5) = Int(1.5)
C. Fix(-1.5) = CInt(-1.5) D. Fix(-1.5) = Int(-1.5)
17. 运行下面程序,单击命令按钮Command1则立即窗口上显示的结果是()。
Private Sub Command1_Click()
Dim A As Integer, B As Boolean, C As Integer, D As Integer
A = 20 / 3 : B = True
C = B : D = A + C
Debug.Print A, D, A = A+C
End Sub
A. 7 6 11 B. 6 5 11
C. 7 6 False D. 运行出错
- 15 -
18. 以下Case语句中,能正确描述Y的绝对值大于6的是()。
A. Case Abs(Y)>6 B. Case -6 To 6
C. Case Not(-6 To 6) D. Case Is < -6, Is > 6
19. 可以把变长字符串S中的第一个“ABC”子串,替换成“1234”的语句是()。
A. S=Left(S,InStr(S,"ABC"))& "1234" & Right(S,Len(S)-InStr(S,"ABC")-2)
B. Mid(S,InStr(S,"ABC"),3)="1234"
C. Mid(S,InStr(S,"ABC"),4)="1234"
D. S=Left(S,InStr(S,"ABC")-1)& "1234"& Right(S,Len(S)-InStr(S,"ABC")-2)
20. 运行程序产生死循环时,按()可以中断程序运行。
A. Ctrl+C B. Esc C. Ctrl+Break D. “停止运行”按钮
21. 阅读程序:
Private Sub Form_Click()
a = 0
For j = 1 To 15
a = a + j Mod 3
Next j
Print a
End Sub
程序运行后,单击窗体,输出的结果是()。
A. 105 B. 1 C. 120 D. 15
22. 以下能够正确计算n!的程序是()。
A. Private Sub Command1_Click()
n = 5: x = 1
Do
x = x * i : i = i + 1
Loop While i < n
Print x
End Sub
C. Private Sub Command1_Click()
n = 5: x = 1: i = 1
Do
x = x * i : i = i + 1
Loop While i <= n
Print x
End Sub
B. Private Sub Command1_Click()
n = 5: x = 1: i = 1
Do
x = x * i : i = i + 1
Loop While i < n
Print x
End Sub
D. Private Sub Command1_Click()
n = 5: x = 1: i = 1
Do
x = x * i : i = i + 1
Loop While i > n
Print x
End Sub
23. 运行程序,单击Command1,显示的结果为()。
Private Sub Command1_Click()
Dim a As Integer, b As Integer, c As Integer, i As Integer
a = 2: b = 10: c = 1
For i = c To 2 * b Step a
a = a + 2
i = i + 1
c = 2 * c
If a >= 10 Then Exit For
b = b - 3
Next i
Print i, a, b, c
End Sub
A. 11 10 1 16 B. 16 14 4 4
C. 20 10 -4 6 D. 10 8 6 8
24. 在窗体上画一个命令按钮,然后编写如下事件过程:
Private Sub Command1_Click()
Dim i, num
Randomize
Do
For i = 1 To 1000
num = Int(Rnd * 100)
Print num;
Select Case num
Case 12 : Exit For
Case 58 : Exit Do
Case 65, 68, 92 : End
End Select
Next i
Loop
End Sub
上述事件过程执行后,下列描述中正确的是()。
A. Do循环执行的次数为1000次
B. 在For循环中产生的随机数小于或等于100
C. 当所产生的随机数为12时结束所有循环
D. 当所产生的随机数为65、68或92时窗体关闭、程序结束
25. 以下程序功能是根据用户输入的n,求任意n位数的Armstrong数(一个n位数等于其各位数的n次方之和)。
Private Sub command1_click()
Dim n As Integer, i As Double, j As Integer, sum As Double, x As String
n = Val(InputBox("请输入数据的任意位数"))
sum = 0
For i = 10 ^ (n - 1) To 10 ^ n - 1
x = i
For j = 1 To Len(x)
sum = sum + Val(Mid(x, j, 1)) ^ Len(x)
Next j
If sum = i Then Print i
Next i
End Sub
执行此事件过程后发现结果是错误的,为能够得到正确结果,应做的修改是()。
A. 把sum=0移动到For i循环内,For j循环前 B. 把x= i改为x= Str(i)
C. 把x= i改为x= CStr(i) D. 同时进行选项A和C的修改
26. 下面有关数组的叙述中,不正确的是()。
①在过程中用ReDim语句定义的动态数组,其下标的上下界可以是变量
②数组作为形式参数时,传递的是每个数组元素的值
③在窗体模块的通用声明处可以用Public说明一个全局数组
④数组定义语句中可以用负数或小数来指定某一维的维下界或维上界的值
A. ②③ B. ①③④ C. ①②③④ D. ③④
27. 下列有关控件数组的说法中,错误的是()。
A. 控件数组由一组具有相同名称和相同类型的控件组成,不同类型的控件无法组成控件数组
B. 控件数组中的所有控件不得具有各自不同的属性设置值
C. 控件数组中的所有控件共享同一个事件过程
D. 控件数组中每个元素的下标由控件的Index属性指定
28. 在窗体上画一个命令按钮,其名称为Command1,然后编写如下代码:
Private Sub Form_Click()
Dim a , S As Integer, i
S = 0
a=Array(1,3,5,7,9,11,13,15,17,19,21,23)
For Each i In a
If i / 3 <> i \ 3 Then S = S + i
Next
Print S; a(2)
End Sub
程序运行后,单击命令按钮,其输出结果是()。
A. 3 3 B. 24 5 C. 48 3 D. 96 5
29. 在窗体上画一个名称为Text1的文本框和一个名称为Command1的命令按钮,然后编写如下事件过程:
Private Sub Command1_Click()
Dim array1(10, 10) As Integer
Dim i As Integer, j As Integer
For i = 2 To 3
For j = 1 To 2
array1(i, j) = InputBox("请输入数据")
Next j
Next i
Text1.Text =array1(3, 1) + array1(3, 4)
End Sub
程序运行后,单击命令按钮,在输入对话框中依次输入2、4、6、8,则在文本框中显示的值是()。
A. 2 B. 4 C. 6 D. 8
30. 以下关于过程及过程参数的描述中,错误的是()。
A. 过程的参数可以是控件名称
B. 调用过程时使用的实参的个数应与过程形参的个数相同
C. 只有函数过程能够将过程中处理的信息返回到调用程序中
D. 窗体可以作为过程的参数
31. 以下关于变量作用域的叙述中,正确的是()。
A. 过程运行结束后,过程的静态变量的值仍然保留,所以静态变量生命周期是整个模块
B. 模块级变量只能用Dim语句声明
C. 窗体中凡用Private声明的变量只能在某个指定的过程中使用
D. 当不同作用域的同名变量发生冲突时,优先访问局限性小的变量
32. 在窗体模块代码窗口的通用声明处,可以使用()语句说明数组。
① Public A(10) As Integer ② Dim A(10) As Integer
③ Private A(10) As Integer ④ Static A(10) As Integer
A. ①② B. ②③ C. ③④ D. ①④
33. 若在模块中用Private Function Fun(A As Single, B As Integer) As Integer定义了函数Fun。调用函数Fun的过程中定义了i、j和k三个Integer型变量,则下列语句中不能正确调用函数Fun的语句是()。
A. Fun 3.14, j B. K = Fun(“24”, “35”) C. Call Fun(i, 365) D. Fun (i), (j)
34. 设有如下通用过程:
Public Function Fun(xStr As String) As String
Dim tStr As String, strL As Integer
tStr = ""
strL = Len(xStr)
i = strL / 2
Do While i <= strL
tStr = tStr & Mid(xStr, i + 1, 1)
i = i + 1
Loop
Fun = tStr & tStr
End Function
在窗体上画一个名称为Text1的文本框和一个名称为Command1的命令按钮。然后编写如下的事件过程:
Private Sub Command1_Click()
Dim S1 As String
S1 = "ABCDEF"
Text1.Text = LCase(Fun(S1))
End Sub
程序运行后,单击命令按钮,文本框中显示的是()。
A. ABCD B. abcdef C. defdef D. defabc
35. 设有如下的用户定义类型
Type Student
Number As String
Name As String
age As Integer
End Type
则以下正确使用该类型成员的代码是()。
A. Student.Name = "李明"
B. Dim s As Student
s.Name = "李明"
C. Dim s As Type Student
s.Name = "李明"
D. Dim s As Type
s.Name = "李明"
本题
得分
二、填空题〖每空2分,共计50分〗;
1. 为了在运行时把d:\pic文件夹下的图形文件a.jpg装入图片框picture1,所使用的语句为
(1) 。
2. 在窗体上画一个名称为Command1的命令按钮,然后编写如下程序:
Private Sub Command1_Click()
CommonDialog1.Filter = "All Files|*.*|Text Files|*.txt|Batch Files|*.bat"
CommonDialog1.FilterIndex = 2
CommonDialog1.ShowOpen
End Sub
程序运行后,单击命令按钮,此时在打开的对话框“文件类型”框中显示的是 (2) 。
3. VB提供了结构化程序设计的三种基本结构,分别是顺序结构、分支结构和 (3) 结构。
4. 如图所示有两个列表框,左侧List1列表框可以多项选择,请完善以下程序,要求双击List1中的某一项时,被选中的项目被添加到右侧List2中,同时清除List1中相应项目,若单击按钮,List1中所有选中的项目显示在List2中,而List1中的内容不变。
Private Sub List1_DblClick()
List2.AddItem List1.Text
List1. (4)
End Sub
Private Sub Command1_Click()
For i = 0 To (5)
If List1.Selected(i) Then List2. (6)
Next
End Sub
5. 下面的事件过程执行结束后,K的值是 (7) ,程序中第二个循环被执行了 (8) 次,
程序中第三个循环被执行了 (9) 次。
Option Base 1
Private Sub Command1_Click()
Dim A(10) As Integer, i As Integer, K As Integer
For i = 1 To 10
A(i) = 1
Next i
K = 4
For K = 1 To K Step K
A(K) = 0
K = K + 3
Next K
For K = K To 10 Step -1
A(K) = K
K = K + 2
Next K
End Sub
6. 运行下面的程序,单击Command1,在窗体上显示的变量A的值为 (10) ,变量B的值为 (11) 。
Option Explicit
Dim A As Integer
Private Sub Command1_Click()
Dim B As Integer
B = 3
A = 4
B = Fun(Fun(A, B + 2), A) + B
Print A, B
End Sub
Private Function Fun(N As Integer, K As Integer)
N = N + A
K = N - K
Fun = N + K + A
End Function
7. 下面程序的功能是求序列:1/2、2/3、3/5、5/8、8/13、13/21、……前若干项的和,项数由文本框输入。试完善程序使其达到功能要求。
Option Explicit
Private Sub 计算_Click()
Dim n As Integer, a1 As Integer, a2 As Integer
Dim i As Integer, t As Single, s As Single
n = Val(Text1.Text)
a1 = 1
a2 = 2
For i = 1 To n
(12)
s = s + t
a2 = a1 + a2
(13)
Next i
Text2 = s
End Sub
8. 以下程序功能:利用图片框输出3*4矩阵A中每一行的最大值以及最大值所在的列(矩阵中的数据在[50, 90]内随机整数),请完善代码。
Dim A(1 To 3, 1 To 4) As Integer
Private Sub CmdRowMax_Click()
Dim i As Integer, j As Integer, k As Integer
For i = 1 To 3
(14)
For j = 2 To 4
If (15) Then k = j
Next j
Picture1.Print "第" & i & "行的第" & k & "列元素" & A(i, k) & "为最大值"
Next i
End Sub
Private Sub InitA_Click()
Dim i As Integer, j As Integer
Randomize
For i = 1 To 3
For j = 1 To 4
A(i, j) = (16)
Picture1.Print (17)
Next j
(18)
Next i
End Sub
9. 下面程序的功能是:将用户在文本框TxtA和TxtB中输入的任意多个无序数据(数据之间用空格分隔)进行递增有序插入合并,最后在右侧的文本框TxtAB中显示输出,要求每行显示4个数据。试完善程序。
Private Sub CmdSortUnion_Click()
Dim i As Integer, A, B, x
A = Split(TxtA)
B = Split(TxtB)
Call Sort(A)
For i = LBound(B) To UBound(B)
(19)
Next i
TxtAB = ""
i = 0
For Each x In A
TxtAB = TxtAB & (20) & Space(3)
i = i + 1
If (21) Then TxtAB = TxtAB & vbCrLf
Next
End Sub
Private Sub Sort(D)
Dim i As Integer, j As Integer, temp
For i = LBound(D) To UBound(D) - 1
For j = (22)
If Val(D(i)) > Val(D(j)) Then
temp = D(i) : D(i) = D(j) : D(j) = temp
End If
Next
Next
End Sub
Private Sub Insert(ByVal e As Integer, C)
Dim j As Integer, k As Integer
For j = LBound(C) To UBound(C)
If C(j) > e Then (23)
Next j
(24)
For k = UBound(C) To j + 1 Step -1
(25)
Next k
C(k) = e
End Sub
本题得分
三、改错题〖每个出错点3分,共计15分〗;
说明:不能增删语句行和调整语句位置;写出出错点所在的行号得1分,修改正确得2分
本程序的功能是生成一个n行3列的数组,并在多行文本框中输出。n通过InputBox函数输入,数组第一列元素为随机生成的10~99之间的整数,第二列元素是第一列相应元素的逆序数,第三列是第一、二列对应元素的最大公约数。
行号
程序代码
1.
Option Explicit
2.
Dim n As Integer, a() As Integer
3.
Private Sub Command1_Click()
4.
Dim i As Integer, n As Integer
5.
n = InputBox("输入n:", , 3)
6.
Dim a(1 To n, 1 To 3)
7.
For i = 1 To n
8.
a(i, 1) = Int(Rnd * 90) + 10
9.
a(i, 2) = nx(a(i, 1))
10.
a(i, 3) = gcd(a(i, 1), a(i, 2))
11.
Next i
12.
End Sub
13.
Private Sub Command2_Click()
14.
Dim i As Integer, j As Integer
15.
Text1 = "运行结果是:" & vbCrLf
16.
For i = 1 To n
17.
For j = 1 To 3
18.
Text1 = Text1 & Right(" " & Str(a(i, j)), 3)
19.
Next j
20.
Text1 = Text1 & vbCrLf
21.
Next i
22.
End Sub
23.
Function nx(x As Integer) As Integer
24.
nx = (x Mod 10) * 10 + x / 10
25.
End Function
26.
Function gcd(a As Integer, b As Integer) As Integer
27.
Dim r As Integer
28.
Do
29.
r = a Mod b
30.
a = b
31.
b = r
32.
Loop Until r = 0
33.
gcd(a,b) = b
34.
End Function
《程序设计基础VB》期末试卷(A答案)
一、选择题〖每题1分,共计35分〗;
1. A
2. B
3. C
4. A
5. C
6. A
7. B
8. B
9. C
10. C
11. A
12. A
13. B
14. D
15. D
16. B
17. C
18. D
19. D
20. C
21. D
22. C
23. A
24. D
25. D
26. A
27. B
28. D
29. C
30. C
31. A
32. B
33. C
34. C
35. B
二、填空题〖每空2分,共计50分〗;
(1). picture1.Picture = LoadPicture(“d:\pic\a.jpg”)
或picture1 = LoadPicture(“d:\pic\a.jpg”)
(2). Text Files
(3). 循环
(4). RemoveItem List1.ListIndex
(5). List1.ListCount - 1
(6). AddItem List1.List(i)
(7). 8
(8). 1
(9). 0
(10). 19
(11). 68
(12). t = a1 / a2
(13). a1 = a2 - a1
(14). k=1
(15). A(i, j) > A(i, k)
(16). Int(Rnd * (90-50+1)+50)
或Int(Rnd *41+50)
(17). A(i, j),
(18). Picture1.Print
或If J=5 Then Picture1.Print
(19). Call Insert(B(i), A)
(20). X或Cstr(X)或str(X)
(21). i Mod 4 = 0
(22). i + 1 To UBound(D)
(23). Exit For
(24). ReDim Preserve C(UBound(C) + 1)
或ReDim Preserve C(Lbound(C) to UBound(C) + 1)
(25). C(k) = C(k - 1)
三、改错题〖每个出错点3分,共计15分〗;
说明:写出出错点所
展开阅读全文