资源描述
上海市高等学校计算机级别考试试卷
二级 Visual Basic程序设计
(考试时间120分钟----A卷)
一、单选题(共15分,每题1分)
1. 是合法变量名。 【A】
A. X_yz B. 123abc
C.Integer D. X-Y
2.Rnd函数不也许返回值是 。 【A】
A.1
B.0
C.0.0001
D.0.9999
3. 要将一种值传递给子过程Am参数,并通过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. Remove List1.ListCount - 1
D.List1.Remove 5
14.要向D盘根目录下名为data.txt顺序文献中添加内容,应先使用_________语句打开文献。 【B】
A. Open "data.txt" For Append As #1
B. Open "D:\data.txt" For Append As #1
C. Open "data.txt" For Output As #1
D. 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。
展开阅读全文