资源描述
.
2010年市高等学校计算机等级考试试卷
二级 Visual Basic程序设计
(考试时间120分钟----A卷)
一、单项选择题(共15分,每题1分)
1.是合法的变量名。 [A]
A. X_yzB. 123abc
C.IntegerD. X-Y
2.Rnd函数不可能的返回值是。 [A]
A.1
B.0
C.0.0001
D.0.9999
3.要将一个值传递给子过程A的m参数,并通过n参数返回一个结果,子过程定义中正确的是。 [B]
A. Sub A(ByVal m!, ByVal n!)
B. Sub A(ByVal m!, ByRef n!)
C. Sub A(ByVal m!, ByRef (n+1)!)
D. Sub A(ByVal m+1, ByVal n+2)
4.能在窗体Form1的标题栏中显示“VisualBasic窗体”的语句是____________。[C]
A. Form1.Name="VisualBasic窗体"B.Form1.Title="VisualBasic窗体"
C. Form1.Caption="VisualBasic窗体"D.Form1.Text="VisualBasic窗体"
5.在用通用对话框控件建立打开文件对话框时,在文件列表框中只允许显示jpg图像类型的文件,则Filter属性的正确设置是。[D]
A.Picture(.jpg)||*.jpg
B.Picture(.jpg)(*.jpg)
C.图片文件|(.jpg)
D.图片(.jpg)|*.jpg
6. 关于多重窗体程序的表达中,错误的是____________。 [C]
A.用Hide方法隐藏窗体,用Show方法显示窗体
B. 可以根据需要指定启动窗体
C. 若各窗体都建立了一个文本框控件(TextBox),它们的Name不能相同
D.若各窗体都有菜单,则各菜单是彼此独立的
7. 按照结构化程序设计的要求,语句是非结构化程序设计语句。 [C]
A.If 语句 B.For 语句
C.GoTo语句 D.Select Case语句
8.同一个窗体中,各个对象的____________属性值是不同的,它用于唯一识别对象。A. Location B. Name[B]
C.Size Text D. Select Case语句
9.有一个名为Menu1菜单项,为了在运行时使该菜单项失效(变灰),应使用的语句为____________。
A. Menu1.Enabled=False B. Menu1.Enabled=True
C. Menu1.Visible=True D. Menu1.Visible=False [A]
10.要暂时关闭定时器,应把定时器的_________属性设置为False。
A. Visible B. Timer
C. Enabled D. Interval [C]
11.在VB中,属于方法的是。[A]
A.SetFocus
B.LostFocus
C.KeyPress
D.SelectedText
12.使用Dim A(100) As Single 语句声明了数组A,A数组的下标取值围是_________。[B]
A. 0~99 B. 0~100
C. 1~99 D. 1~100
13.列表框List1中已有5个列表项,要删除列表框List1最后一项, __________语句是正确的。 [A]A.List1.RemoveItem List1.ListCount - 1
B.List1.RemoveItem 5
C.List1. RemoveList1.ListCount - 1
D.List1.Remove 5
14.要向D盘根目录下的名为data.txt的顺序文件中添加容,应先使用_________语句打开文件。 [B]A.Open "data.txt" For Append As #1B.Open "D:\data.txt" For Append As #1C.Open "data.txt" For Output As #1D. Open "D:\data.txt" For Output As #1
15.要使文本框输入的字符均显示为*,则设置___________。 [D]
A.Visible属性为*
B.Name属性为*
C.Text属性为*
D.PassWordChar属性为*
二、程序调试题(共20分, 每错2.5分,第1题有2处错,第2题3处错,第3题3处错)
启动工程文件C:\ks\cxts1.vbp,程序存在8处错误,请调试改正,并按原文件名和位置保存。正确结果见样例cxts1.exe。
改错方法:不能修改或重新定义变量,不允许增加或删除语句,但可以修改语句,所修改的语句必须在句尾加上注释标记 '***********。
调试改错题1, 程序中有2个错误。
以下程序的功能是在文本框中输入百分制成绩,单击按钮后,在标签上显示成绩等第,分优秀、合格和不合格,规定:成绩≥80为"优秀";60≤成绩<80为"合格";成绩<60为"不合格"。
Private Sub Command1_Click()
Dim d%, s$
d = Val(Text1.Text)\10
Select Case d
Case d>=8
s = "优秀"
Case 6 To 7
s = "合格"
Case Else
s = "不合格"
End Select
Label1.Text = "成绩等第为:" + s
End Sub
正确答案:Case Is >= 8 或 8 To 10 或8,9,10
Label1.Caption 或 Label1
调试改错题2, 程序中有3个错误。
单击“调试改错题2”按钮,在Picture1显示有规律数字字符和字母字符图,见样例。
Private Sub Command2_Click()
Dim ch$,i%,j%
Picture1.Cls
For i = 1 To 5
Ch = Trim(i)
For j = 1 To 5 ' 输出数字字符
Picture1.Print Ch;
Next j
Picture1.Print Space(3);
For j = i To 5 ' 输出字母字符
Picture1.Print Chr(65);
Next j
Picture1.Print
Next j
End Sub
正确答案:For j = 1 To i
Picture1.Print Chr(i+64);
Next i
调试改错题3, 程序中有3个错误。
单击“调试改错题3”按钮,自动产生两个 5~999 之间的随机正整数a,b,在Text2显示较小的数a,Text3显示较大的数b。计算a到b之间的偶数和,结果显示在Label3。
Private Sub Command2_Click()
Dim a%, b%, c%, i%
a = Int(Rnd * 995 + 5)
b = Int(Rnd * 995 + 5)
If a > b Then
t = b: a = b: b = t
End If
Text1 = a
Text2 = b
s = 1
For i = a To b
If Mod(i,2)=0 Then s = s + i
Next i
Label3 = "Sum=" & s
End Sub
正确答案:t=a
S=0
i mod 2 = 0
三、程序填空题(共30分,每空2 .5分)
1.按公式,求累加和s不超过1000的最大项数n。
要求每行显示每个n的累加和如下图,并将全部结果保存在c:\data.txt中。
Private Sub Form_Click()
Dim n%, s$
n = 1
s = (1)
Print " N", " S"
Do While ( (2) )
s = s + n * n
Print n, s
n=n+1
Loop
Print "累加和不超过1000的最大项数n="; n - 2 '
Open "c:\jg.txt" For (3) As #1
Print #1, "n="; n - 2
Close #1
End Sub
答案:(1)0 (2)s < 1000 (3)Output
2. 以下程序段的功能是:在一个字符串变量str1中查找子串变量str2中出现的个数,并显示是否找到与查找到的结果。样例为查找子串"at"出现的个数为2个。
Private Sub Form_Click()
Dim str1$, str2$, cd1%, cd2%, n%, i%
str1 = Text1.Text
str2 = Text2.Text
cd1 = Len(str1)
cd2 = Len(str2)
i = 1
n = 0
Do While i <= ____(1)_____
If Mid(str1, i, _____(2)_____) = str2 Then
n = n + 1
End If
_____(3)_____
Loop
If ____(4)_____ Then
Label3 = "找到了" & n & "个"
Else
Label3 = "没有找到!"
End If
End Sub
答案 (1)cd1 cd1-cd2+1 (2)2 (3)i=i+1 (4)n>0
3.以下程序段的子过程RightShift的功能是:将一维字符数组s中的元素循环右移一位并输出变动后的结果。
Command1_Click()事件过程通过键盘输入右移位数,调用子过程RightShift完成对给定的字符数组元素循环右移,样例为右移3次的结果。
Private Sub Command1_Click()
Dim i%, m%, a()
a = Array("A", "B", "C", "D", "E", "F", "G", "H")
Print "原始顺序为: ";
For i = 0 To UBound(a)
Print a(i) & " ";
Next i
Print
______(1)________= InputBox("请输入右移位数:")
For i = 1 To m
Print "第" & i & "次右移后:";
Call________(2)__________
Next i
End Sub
Sub RightShift(ByRef s())
Dim Last$, i%, n%
n =________(3)__________
Last = s(n)
For i = n To 1 Step -1 ‘ 逐位右移
s(i) = ________(4)__________
Next i
s(0) = ________(5)__________
For i = 0 To n ‘ 显示右移后的结果
Print s(i) & " ";
Next i
Print
End Sub
答案:(1)m (2)RightShift(a) (3)UBound(s) (4)s(i - 1) (5)Last
四、编程题(35分)
1.参见样例,在Form1窗体上放置2个列表框。建立如下菜单:
菜单项
菜单名
备注
应用
Menu1
一级菜单
…产生
Menu11
二级菜单
…计算
Menu12
二级菜单
-
bar
分隔线
…完毕
Menu13
二级菜单
绘图
Menu2
一级菜单
在Form2上,放置“绘图”和“返回”2个命令按钮。
2.单击“产生”菜单项,在列表框List1中随机生成10个3位正整数。
单击“计算”菜单项,在列表框List2中显示List1各数据项每位数之和。
3.单击“绘图”菜单项时,显示窗体2,并隐藏窗体1;单击"完毕"菜单项时,完毕程序的运行。
4.在窗体2上单击“绘图”命令按钮,定义窗体坐标系(-1, 60)-(20, -60),绘制坐标轴线;按公式y = (3 * Sin(x) + Cos(5 * x)) * 20绘制直线(0≤ x ≤20)。
单击“返回”命令按钮则关闭窗体2,显示窗体1。
5.在C:\KS 目录下将工程保存为bct1.vbp、Form1窗体为bct11.frm、Form 2窗体为bct12.frm。
7 / 7
展开阅读全文