1、二级 VISUAL+BASIC-69 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:100.00)1.下列叙述中正确的是_。(分数:2.50)A.线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的B.线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构C.线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构D.上述三种说法都不对2.下列叙述中正确的是_。(分数:2.50)A.在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化B.在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化C.在栈中,栈底指针不变,栈中元素随栈顶指针的变化
2、而动态变化D.上述三种说法都不对3.软件测试的日的是_。(分数:2.50)A.评估软件可靠性B.发行并改正程序中的错误C.改正程序中的错误D.发行程序中的错误4.下面描述中,不属于软件危机表现的是_。(分数:2.50)A.软件过程不规范B.软件开发生产率低C.软件质量难以控制D.软件成本不断提高5.软件生命周期是指_。(分数:2.50)A.软件产品从提出、实现、使用维护到停止使用退役的过程B.软件从需求分析、设计、实现到测试完成的过程C.软件的开发过程D.软件的运行维护过程6.面向对象方法中,继承是指_。(分数:2.50)A.一组对象所具有的相似性质B.一个对象具有另一个对象的性质C.各对象之
3、间的共同性质D.类之间共享属性和操作的机制7.层次型、网状型和关系型数据的划分原则是_。(分数:2.50)A.记录长度B.文件的大小C.联系的复杂程度D.数据之间的联系方式8.一个工作人员可是使用多台计算机,而一台计算机可被多个人使用,则实体工作人员与实体计算机之间的联系是_。(分数:2.50)A.一对一B.一对多C.多对多D.多对一9.数据库设计中,用 E-R 图来描述信息结构但不涉及信息在计算机中的表示,它属于数据库设计的_。(分数:2.50)A.需求分析阶段B.逻辑设计阶段C.概念设计阶段D.物理设计阶段10.有三个关系 R、S 和 T 如下: (分数:2.50)A.自然连接B交C.投影
4、D并11.在 Visual Basic 集成环境中,要添加一个窗体,可以单击工具栏上的一个按钮,这个按钮是_ A B C D (分数:2.50)A.B.C.D.12.在 Visual Basic 集成环境的设计摸式下,用鼠标双击窗体上的某个控件打开的窗口是_。(分数:2.50)A.工程资源管理器窗口B.属性窗口C.工具箱窗口D.代码窗口13.下列叙述中错误的是_。(分数:2.50)A.列表框与组合框都有 List 属性B.列表框有 Selected 属性,而组合框没有C.列表框与组合框都有 Style 属性D.组合框有 Text 属性,而列表框没有14.设窗体上有一个命令按钮数组,能够区分数组
5、中各个按钮的属性是_。(分数:2.50)A.NameB.IndexC.CaptionD.Left15.滚动条可以响应的事件是_。(分数:2.50)A.LoadB.ScrollC.ClickD.MouseDown16.设 a=5,b=6,c=7,d=8,执行语句 x=IIf(aB)And(cD),10,20)后,x 的值是_。(分数:2.50)A.10B.20C.30D.20017.语句 Print Sgn(-62)+Abs(-62)+Int(-62)的输出结果是_。(分数:2.50)A.-36B.1C.-1D.-7218.在窗体上画一个图片框,再在图片框中画一个命令按钮,位置如下图所示。则命令
6、按钮的 Top 属性值是_。 (分数:2.50)A.200B.300C.500D.70019.在窗体上画一个名称为 Command1 的命令按钮,单击命令按钮时执行如下事件过程: Private Sub Command1_Click() a$=“software and hardware“ b$=Right(a$,8) c$=Mid(a$,1,8) MsgBox a$,b$,c$,1 End Sub 则在弹出的信息框标题栏中显示的标题是_。(分数:2.50)A.software and hardwareB.hardwareC.softwareD.120.在窗体上画一个文本框(名称为 Text1
7、)和一个标签(名称为 Label1),程序运行后,如果在文本框中输入文本,则标签中立即显示相同的内容,以下可以实现上述操作的事件过程是_。(分数:2.50)A.Privale Sub Text1_Change()Label1.Caption=Text1.TextEnd SubB.Private Sub Label1_Change()Label1.Caption=Text1.TextEnd SubC.Private Sub Text1.Click()Label1.Caption=Text1.Text End SubD.Private Sub Label1_Click()Label1.Captio
8、n=Text1.TcxtEnd Sub21.以下说法中错误的是_。(分数:2.50)A.如果把一个命令按钮的 Default 属性设置为 True,则按 Enter 与单击该命令按钮的作用相同B.可以用多个命令按钮组成命令按钮数组C.命令按钮只能识别单击(Click)事件D.通过设置命令按钮的 Enabled 属性,可以使该命令按钮有效或禁用22.以下关于局部变量的叙述中错误的是_。(分数:2.50)A.在过程中用 Dim 语句或 Static 语句声明的变量是局部变量B.局部变量所在的作用域是它所在的过程C.在过程中用 Static 语句声明的变量是静态局部变量D.过程执行完毕,该过程中用
9、Dim 或 Static 语句声明的变量即被释放23.以下程序段的输出结果是_。 x=1 y=4 Do Until y4 x=x*y y=y+1 Loop Print x(分数:2.50)A.1B.4C.8D.2024.如果执行一个语句弹出如下图所示的窗口,则这个语句是_。 (分数:2.50)A.InputBox(“输入框“,“请输入 VB 数据“)B.x=InputBox(“输入框“,“请输入 VB 数据“)C.InputBox(“请输入 VB 数据“,“输入框“)D.x=InputBox(“请输入 VB 数据“,“输入框“)25.有如下事件过程: Private Sub Form_Clic
10、k() Dim n As Integer x=0 n=InputBox(“请输入一个整数“) For i=1 To n For j=1 To i x=x+1 Next j Next i Print x End Sub 程序运行后,单击窗体,如果在输入对话框中输入 5,则在窗体上显示的内容是_。(分数:2.50)A.13B.14C.15D.1626.请阅读下面程序: Sub subP(b()As Integer) For j=1 TO 4 b(i)=2*i Next i End Sub Private Sub Command1_Click() Dim a(1 To 4) As Integer a
11、(1)=5:a(2)=6:a(3)=7:a(4)=8 subP a() For i=1 To 4 Print a(i) Ncxt i End Sub 运行上面的程序,单出命令按钮,则输出结果是_。(分数:2.50)A.2468B.5678C.10121416D.出错27.Fibonacci 数列的规律是:前 2 个数为 1,从第 3 个数开始,每个数是它前 2 个数之和,即1,1,2,3,5,8,13,21,34,55,89,。某人编写了下面的函数,判断大于 1 的整数 x 是否是Fibonacci 数列中的某个数,若是,则返回 True,否则返回 False。 Function Isfab(
12、xAs Integer)As Boolean Dim a As Integer,b As Integer,c As Integer, flag As Boolean flag=false a=1:b=1 Do While xb c=a+b a=b b=c If x=b Then flag=True Loop Isfab=flag End Function 测试时发现对于所有正整数 x,函数都返回 False,程序需要修改。下面的修改方案中正确的是_。(分数:2.50)A.把 a=b 与 b=c 的位置互换B.把 c=a+b 移到 b=c 之后C.把 Do while xb 改为 Do Whil
13、e xbD.把 If x=b Then flag=True 改为 If x=a Then flag=True28.在窗体上面一个命令按钮,其名称为 Command1,然后编写如下事件过程: Private Sub Command1_Click() Dim a$,b$,c$,k% a=“ABC“ b=“123456“ c=“ k=1 Do While k=Len(A)Or k=Len(B) If k=Len(A)Then c=c m=m+1 For j=1 To i Print “*“; Next j Print Nexk i End Sub 程序运行后,单击窗体,则输出结果是(分数:2.50)
14、A.1 * * * *2 * * *3 * *4 *B.4 * * * *3 * * *2 * *1 *C.* * * * * * *D.* * * * * * *30.在窗体上画一个命令按钮(其名称为 Command1),然后编写如下代码: Private Sub Command1_Click() Dim a a=Array(1,2,3,4) i=3:j=1 Do While i=0 s=s+a(i)*j i=i-1 j=j*10 Loop Print s End Sub 运行上面的程序,单击命令按钮,则输出结果是_。(分数:2.50)A.4321B.123C.234D.123431.下列可
15、以打开随机文件的语句是_。(分数:2.50)A.Open “file1.dat“ For Input As #1B.Open “file1.dat“ ForAppend As #1C.Open “file1.dat“ For Output As #1D.Open “file1.dat“ For Random As #1 Len=2032.有弹出式菜单的结构如右表,程序运行时,单击窗体则弹出如下图所示的菜单,下面的事件过程中能正确实现这一功能的是_。 (分数:2.50)A.Private Sub Form_Click()PopupMenu cutEnd SubB.Private Sub Comm
16、and1_Click()PopupMenu editEnd SubC.Private Sub Form_Click()PopupMenu editEnd SubD.Private Sub Form_Click()PopupMenu cutPopupMenu pasteEnd Sub33.请阅读下面程序: Option Base 1 Private Sub Form_Click() Dim Art(4,4) As Integer For i=1 To 4 For j=1 To 4 Arr(i,j)=(i-1)*2+j Next j Next i For i=3 To 4 For j=3 To 4
17、 Print Arr(j,i) Next j Print Next i End Sub 程序运行后,单击窗体,则输出结果是_。(分数:2.50)A.5 76 8B.6 87 9C.7 98 10D.8 108 1134.下面函数的功能应该是:删除字符串 str 中所有与变量 ch 相同的字符,并返回删除后的结果。 例如,若 str=“ABCDABCD“,ch=“B“,则函数的返回值为:“ACDACD“ Function delchar(str As String, ch As String)As String Dim k As Integer, tempAs String, ret As St
18、rinq ret=“ For k=1 To Len(str) temp=Mid(str,k,1) If temp=ch Then ret=ret m=m+1 For j=1 To i Print “*“; Next j Print Nexk i End Sub 程序运行后,单击窗体,则输出结果是(分数:2.50)A.1 * * * *2 * * *3 * *4 * B.4 * * * *3 * * *2 * *1 *C.* * * * * * *D.* * * * * * *解析:解析 此题主要考查嵌套 for 循环。该程序中,m 的值是从 1 增长到 4,i 的值是从 4 减少到 1。当 i
19、=4,m=1 时,通过 Print Str(m)语句,窗体上第一行第一个位置显示 1,排除选项B、C、D。m=1+1=2,通过内循环一次输出 4 个“*”号。当 i=3、2、1 时,以此类推。需要提醒考生的是:前两个 Print 语句后面有分号,表示输出结果不换行,输出项按紧凑格式输出。最后一个 Print 后面没有分号,表示换行。30.在窗体上画一个命令按钮(其名称为 Command1),然后编写如下代码: Private Sub Command1_Click() Dim a a=Array(1,2,3,4) i=3:j=1 Do While i=0 s=s+a(i)*j i=i-1 j=j
20、*10 Loop Print s End Sub 运行上面的程序,单击命令按钮,则输出结果是_。(分数:2.50)A.4321B.123C.234D.1234 解析:解析 此题主要考查数组和循环。由 a=Array(1,2,3,4)可知,a(0)=1,a(1)=2,a(2)=3,a(3)=4。当 i=3,j=1 时,程序进入第一次循环,s=a(3)*1=4*1=4,i=2,i=10;第二次循环,s=4+a(2)*10=34,i=1,j=100;第三次循环,s=34+a(1)*100=234,i=0,j=1000;第四次循环,s=234+a(0)*1000=1234,i=-1,j=10000;当
21、 i=-1 时,不满足循环条件,此时跳出循环。31.下列可以打开随机文件的语句是_。(分数:2.50)A.Open “file1.dat“ For Input As #1B.Open “file1.dat“ ForAppend As #1C.Open “file1.dat“ For Output As #1D.Open “file1.dat“ For Random As #1 Len=20 解析:解析 打开文件语句Open 语句的格式为:Open 文件名For 模式Access 存取类型锁定As#文件号Len=记录长度。其中,模式(Mode)参数用以说明访问文件的格式。可以是:Output设定
22、为顺序输出模式。Input设定为顺序输入模式。Append设定为添加模式。Random设定为随机访问模式。因此打开随机文件的一般格式为:Open“文件名称”For Random As#文件号Len=记录长度,且记录长度不可少。32.有弹出式菜单的结构如右表,程序运行时,单击窗体则弹出如下图所示的菜单,下面的事件过程中能正确实现这一功能的是_。 (分数:2.50)A.Private Sub Form_Click()PopupMenu cutEnd SubB.Private Sub Command1_Click()PopupMenu editEnd SubC.Private Sub Form_Cl
23、ick()PopupMenu editEnd Sub D.Private Sub Form_Click()PopupMenu cutPopupMenu pasteEnd Sub解析:解析 本题考查了弹出式菜单,题目中要求单击窗体时,弹出如图中所示的菜单,应该使用Form_Click 事件过程,而不是 Command1_Click 事件,因此选项 B 错误。PopupMenu 方法用来显示弹出菜单,语法格式为:object.PopupMelnu menuname,flags,x,y,boldcomnland 其中:Object(对象)窗体名。Menuname(菜单名)指在菜单编辑器中定义的主菜单
24、项名。PopupMenu 方法的 6 个参数中,除“菜单名”外,其余参数都是可选的。当省略了“对象”时,弹出式菜单只能在当前窗体中显示。如果需要在其他窗体中显示弹出菜单,则必须加上窗体名。本题 PopupMenu 方法后的菜单名应该是 edit。33.请阅读下面程序: Option Base 1 Private Sub Form_Click() Dim Art(4,4) As Integer For i=1 To 4 For j=1 To 4 Arr(i,j)=(i-1)*2+j Next j Next i For i=3 To 4 For j=3 To 4 Print Arr(j,i) Ne
25、xt j Print Next i End Sub 程序运行后,单击窗体,则输出结果是_。(分数:2.50)A.5 76 8B.6 87 9C.7 98 10 D.8 108 11解析:解析 由 Option Base 1 可知,数组元素的下标值从 1 开始。第一个 for 循环可获得该二维数组的每一个元素值,即第一行为 1 2 3 4,第二行为 3 4 5 6,第三行为 5 6 7 8,第四行为 7 8 9 10,是一个 22 的矩阵。第二个 for 循环用来输出 2 行 2 列的元素。此题设置了一个陷阱,要求输出的是Arr(j,i),而不是 Arr(i,j),因此考生做题的时候一定要非常仔
26、细。34.下面函数的功能应该是:删除字符串 str 中所有与变量 ch 相同的字符,并返回删除后的结果。 例如,若 str=“ABCDABCD“,ch=“B“,则函数的返回值为:“ACDACD“ Function delchar(str As String, ch As String)As String Dim k As Integer, tempAs String, ret As Strinq ret=“ For k=1 To Len(str) temp=Mid(str,k,1) If temp=ch Then ret=ret&temp End If Next k delchar=ret E
27、nd Function 但实际上函数有错误,需要修改。下面的修改方案中正确的是_。(分数:2.50)A.把 ret=ret&temp 改为 ret=tempB.把 If temp=ch Then 改为 If tempch Then C.把 delchar=ret 改为 delchar=tempD.把 ret=“改为 temp=“解析:解析 本题要求删除字符串 str 中所有与变量 ch 相同的字符。temp=Mid(str,k,1)表示从字符串str 中每次收出一个字符,然后依次与 ch 进行比较。当 temp 的值与 ch 相同时,应该删除,否则连接。而程序中 If temp=ch Then
28、 表示字符相同就连接起来。正好与题意相反,即本题答案为 B。35.在窗体上画一个命令按钮和两个文本框,其名称分别为 Command1、Text1 和 Text2,在属性窗口中把窗体的 KeyPreview 属性设置为 True,然后编写如下程序: Dim S1 As String, S2 As String Private Sub Form_Load() Text1.Text=“ Text2.Text=“ Text1.Enabled=False Text2.Enabled=False End Sub Private Sub Form_KeyDown(KeyCode As Integer, Sh
29、ift AS Integer) S2=S2&Chr(KeyCode) End Sub Private Sub Form_KeyPress(KeyAscii As Integer) S1=S1&Chr(KeyAscii) End Sub Private Sub Command1_Click() Text1.Text=S1 Text2.Text=S2 S1=“ S2=“ End Sub 程序运行后,先后按“a”、“b”、“c”键,然后单击命令按钮,在文本框 Text1 和 Text2 中显示的内容分别为_。(分数:2.50)A.abc 和 ABC B.空白C.ABC 和 abcD.出错解析:解析
30、本题主要考查 KeyCode 和 KeyAscii 的区别。窗体的 KeyPreview 属性的意思是:返回/设置是否在激活对象上的控件的键盘事件之前,优先激活对象。keypreview 属性值为 true 时,表示可以响应键盘事件。KeyCode 码用于 KeyUp,KeyDown 事件中;KeyAscii 用于 KeyPress 事件中。在 KeyDown 事件中,KeyCode 返回的是按键码,大写字母A和小写字母a是公用的。而且 KeyDown 事件对字母默认是SHIFT 状态的即大写。在 KeyPress 事件中,KeyAscii 可以区分大小写,因此在输入小写字母 a、b、c 时,
31、文本框 Text1 中显示的是 abc。36.执行以下程序段后,变量 c$的值为_。 a$=“Visual Basic Programming“ b$=“Quick“ C$=b$&UCase(Mid$(a$,7,6)& Right$(a$,12)(分数:2.50)A.Visual Basic ProgrammingB.Quick Basic programmingC.Quick Basic ProgrammingD.Quick Basic Programming 解析:解析 Mid$(a$,7,6)得到的结果是: UCase(Mid$(a$,7,6)得到的结果是:BASIC;Right$(a$
32、,12)得到的结果是:37.在窗体上画一个文本框(其名称为 Text1)和一个标签(其名称为 Label1),程序运行后,如果在文本框中输入指定的信息,则立即在标签中显示相同的内容,以下可以实现上述操作的事件过程是_。(分数:2.50)A.Private Sub Text1_Click()Label1.Caption=Text1.TextEnd SubB.Private Sub Text1.Change()Label1.Caption=Text1.TextEnd Sub C.Private Sub Label1_Change()Label1.Caption=Text1.TextEnd SubD
33、.Private Sub Label1_Click()Label1.Caption=Text1.TextEnd Sub解析:解析 题目要求当文本框输入信息时,标签中显示相同的内容。这就告诉我们当文本框发生改变的时候才能触发事件,与之对应的事件是 Change 事件,同时是文本框的 Change 事件,不是标签的Change 事件,故选 B。38.在窗体上面画一个命令按钮和一个标签,其名称分别为 Command1 和 Label1,然后编写如下事件过程:Private Sub Command1_Click() Counter=0 For i=1 To 4 For j=6 To 1 Step-2
34、Counter=Counter+1 Next j Next i Label1.Caption=Str(Counter) End Sub 程序运行后,单击命令按钮,标签中显示的内容是_。(分数:2.50)A.11B.12 C.16D.20解析:解析 此程序有两重 For-Next 循环,内循环的功能是对变量 Counter 进行运算,外循环的功能是内循环重复执行。内循环的循环变量是以递减的次序变化的,步长为-2,因此“j=6 To 1 Step-2”,内循环的循环变量只要变化 3 次,即内循环每次只要循环 3 次。当外循环执行 1 次,Counter 的值就变化 3次,一共外循环要执行 4 次,
35、故 Counter 的值就变化 12 次。Counter 的初值为 0,每变化一次就增加 1,故 Counter 最终的值为 12,故选 B。39.工程中有 2 个窗体,名称分别为 Form1.Form2,Form1 为启动窗体,该窗体上有命令按钮 Command1,要求程序运行后单击该命令按钮时显示 Form2,则按钮的 Click 事件过程应该是_。(分数:2.50)A.Private Sub Command1_Click()Form2.ShowEnd Sub B.Private Sub Command1_Click()Form2.VisibleEnd SubC.Private Sub C
36、ommand1_Click()Load Form2End SubD.Private Sub Command1_Click()Form2.LoadEnd Sub解析:解析 Visual Basic 程序运行后,首先运行的是启动窗体,而 From1 是启动窗体,运行后即被显示。现在要通过单击命令按钮 Command1 显示 From2,就需要调用窗体显示的方法 Show,故 A 正确。而 B中的 Visible 是窗体可见的方法,不是显示的方法。C 的 Load 是装入事件,它是把窗体载入内存,但并不显示它。D 中的 Form2.Load 语法是错的。40.若在某窗体模块中有如下事件过程: Pri
37、vate Sub Command1_Click(Index AS Integer) End Sub 则以下叙述中正确的是_。(分数:2.50)A.此事件过程与不带参数的事件过程没有区别B.有 1 个名称为 Command1 的窗体,单击此窗体则执行此事件过程C.有 1 个名称为 Command1 的控件数组,数组中有多个不同类型控件D.有 1 个名称为 Command1 的控件数组,数组中有多个相同类型控件 解析:解析 通过分析语句“Private Sub Command1_Click(Index AS Integer)”可知,在窗体中有 1个名称为 Command1 的控件数组,这个控件数组里面有多个相同类型控件,故选 D。