武汉职业技术学院 2005~2006学年度第二学期考试试卷[B] 考试科目:《Visual Basic程序设计》 适用班级:计算机系网络04401班 答题时间:100分钟 班级 学号 姓名 选择题(1分/题,共6分) (1)以下不能在"工程资源管理器"窗口中列出的文件类型是 A).bas B).res C).frm D).ocx (2)下列可作为Visual Basic变量名的是 A)A#A B)4A C)?xy D)constA (3) 在窗体上画一个名称为List1的列表框,一个名称为Label1的标签。列表框中显示若干城市的名称。当单击列表框中的某个城市名时,在标签中显示选中城市的名称。下列能正确实现上述功能的程序是 A) Private Sub List1_Click() B)Private Sub List1_Click() Label1.Caption = List1.ListIndex Label1. Name = List1. ListIndex End Sub End Sub C) Private Sub List1_Click() D)Private Sub List1_Click() Label1.Name = List1.Text Label1.Caption = List1.Text End Sub End Sub (4) 在窗体上画三个单选按钮,组成一个名为chkOption的控件数组。用于标识各个控件数组元素的参数是 A)Tag B)Index C)ListIndex D)Name (5) 在窗体上画一个命令按钮,名称为Command1,然后编写如下事件过程: Option Base 0 Private Sub Command1_Click() Dim city As Variant city = Array("北京", "上海", "天津", "重庆") Print city(1) End Sub 程序运行后,如果单击命令按钮,则在窗体上显示的内容是 A)空白 B)错误提示 C)北京 D)上海 (6)设有语句 Open "c:\Test.Dat" For Output As #1 则以下错误的叙述是 A)该语句打开C盘根目录下一个已存在的文件Test.Dat B)该语句在C盘根目录下建立一个名为Test.Dat的文件 C)该语句建立的文件的文件号为1 D)执行该语句后,就可以通过Print #语句从文件Test.Dat中读出信息 填空题(每空2分,共28分) 请将每空的正确答案写在答题卡【1】~【14】序号的横线上,答在试卷上不得分。 (1)Visual Basic中有一种控件组合了文本框和列表框的特性,这种控件是 【1】 。 (2)Visual Basic提供的对数据文件的三种访问方式为随机访问方式、【2】和二进制访问方式。 (3)执行下面的程序段后,变量S的值为 【3】 。 S = 5 For i = 2.6 To 4.9 Step 0.6 S = S + 1 Next i (4)为了在运行时把d:\pic文件夹下的图形文件a.jpg装入图片框Picture1,所使用的语句为 【4】 。 (5)计时器控件能有规律的以一定时间间隔触发 【5】 事件,并执行该事件过程中的程序代码。 (6)以下程序的功能是:生成20个大写的英文字母(A的Ascii码为65)。请填空。 Private Sub Command1_Click() 【6】 For i = 1 To 20 a = Int(Rnd *【7】 26 + 【8】) Print 【9】 Next i End Sub (7)设有如下程序 Private Sub Form_Click() Dim a As Integer, b As Integer a = 20: b = 50 p1 a, b Print "a="; a, "b="; b End Sub Sub p1(x As Integer, byval y As Integer) x = x * 10 y = y + 20 End Sub 该程序运行后,单击窗体,则在窗体上显示的内容是:a = 【10】 和 b = 【11】 。 (9)在窗体上画一个名称为Combo1的组合框,画两个名称分别为Label1和Label2及Caption 属性分别为"城市名称"和空白的标签。程序运行后,当在组合框中输入一个新项后按回车键(ASCII码为13)时,如果输入的项在组合框的列表中不存在,则自动添加到组合框的列表中,并在Label2中给出提示"已成功添加输入项"如图所示;如果存在,则在Label2中给出提示"输入项已在组合框中"。请在 【12】、【13】 和【14】处将程序补充完整。 Private Sub Combo1_ 【12】 (KeyAscii As Integer) If KeyAscii = 13 Then For i = 0 To Combo1.ListCount-1 If Combo1.Text = 【13】 Then Label2.Caption = "输入项已在组合框中" Exit Sub End If Next i Label2.Caption = "已成功添加输入项" Combo1. 【14】 Combo1.Text End If End Sub 读程填程题(共24分) 1.求100以内的素数之和,(每空2分,共10分) Private Sub Command1_Click() Dim flag As Boolean s = 0 For i = 2 To 100 flag = False For j = 2 To i – 1 If ____________ Then __________________ End If Next j If flag =_________ Then ______________ Next i MsgBox (___________) End Sub 2.在控件数组Picture(0)、Picture(1)中移动图片,要求图片可以在这两个图片框中移动,按“->”向右移动,按“<-”向左移动,“->”和“<-”的keycode分别为39和37,请补全程序。(其他每空2分,共14分) Dim you(1) As Boolean Private Sub Form_Load() Picture1(0).Picture = LoadPicture("e:\a.bmp") you(0) = ________ you(1) = ________ End Sub Private Sub Picture1_KeyDown(Index As Integer, KeyCode As Integer, Shift As Integer) If Index = 0 Then If KeyCode = 39 And __________ Then Picture1(1).Picture = ___________ Picture1(0).Picture =___________ you(0) = _______: you(1) =________ End If End If If Index = 1 Then ‘此处省略多行语句,不要求考生完成 End If End Sub 四、编程题(42分) 从键盘输入二维数组a(4,5)(共30个元素),编写程序求这30个数的最大数,以及这个数的数组下标。 (10分) 2.在窗体上随机打印100个小写的英文字母(a的ascii码为97)。(10分) 3.编写程序,在文本框中任意输入一个字符,在窗体上输出该字符的Ascii码。(10分) 4. 用递归的方法打印如下图形。(12分) 1 1 2 1 1 2 3 2 1 1 2 3 4 5 4 3 2 1 1 2 3 4 …9…4 3 2 1 武汉职业技术学院 2005~2006学年度第一学期考试试卷[B] 考试课目:《Visual Basic程序设计》答题纸 班级 学号 姓名 题 号 一 二 三 四 总 分  分 数       选择题(6╳1=6分) 题号 1 2 3 4 5 6  答案 c d d b d d  填空题(14╳2=28分) 组合框 2 顺序方式 3. 9 4. Picture1.picture=loadpicture(“a.jpg”) 5. timer 6. s=0 7. rnd 8. 65 9. char(a) 10. 200 11. 50 12. press 13. combo1.list(i) 14. additem 读程填程题(2╳12共24分) 1. I mod j=0 flag=false s=s+i true s 2. true false you(1)=false picture(0).picture loadpicture() false true 编程题(10+10+10+12=42分 做在答题纸上,另发) 1. Private Sub Command1_Click() Dim a(4, 5) As Integer Dim x As Integer, y As Integer, zuida As Integer For i = 0 To 4 For j = 0 To 5 a(i, j) = Val(InputBox("输入数据")) Next j, i zuida = a(0, 0) x = 0: y = 0 For i = 0 To 4 For j = 0 To 5 If a(i, j) > zuida Then zuida = a(i, j): x = i: y = j Next j, i Print zuida, x, y End Sub 2. Private Sub Command1_Click() Randomize For i = 1 To 100 c = Int(Rnd * 26) + 65 Print Chr(c) Next i End Sub 3. Private Sub Text1_KeyPress(KeyAscii As Integer) Print KeyAscii End Sub 4. Sub prin(n) If n = 1 Then Print n Else prin (n - 1) Print For i = 1 To n Print i; Next i For i = n - 1 To 1 Step -1 Print i; Next i Print End If End Sub Private Sub Command1_Click() n = Val(InputBox("输入n")) prin (n) End Sub