1、二级 VISUAL+BASIC 笔试-158 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.计算 的近似值的一个公式是: (分数:2.00)A.B.C.D.2.若在窗体模块的声明部分声明了如下自定义类型和数组Private Type recCode As IntegerCaption As StringEnd TypeDim arr(5) As rec则下面的输出语句中正确的是(分数:2.00)A.Print arr.Code(2), arr.Caption(2)B.Print arr.Code, arr.CaptionC.Print a
2、rr(2).Code, arr(2).CaptionD.Print Code(2), Caption(2)3.下列叙述中正确的是(分数:2.00)A.对长度为 n 的有序链表进行查找,最坏情况下需要的比较次数为 nB.对长度为 n 的有序链表进行对分查找,最坏情况下需要的比较次数为(n/2)C.对长度为 n 的有序链表进行对分查找,最坏情况下需要的比较次数为(log 2n)D.对长度为 n 的有序链表进行对分查找,最坏情况下需要的比较次数为(nlog 2n)4.设工程中有两个窗体:Form1 和 Form2。Form1 为启动窗体,Form2 中有菜单(其结构如表 1 所示)。要求在程序运行时
3、,在 Form1 的文本框 Text1 中输入 121 令并按回车键(回车键的 ASCII 码为 13)后,隐藏Form1,显示 Form2。若口令为“Teacher”,则所有菜单项都可见;否则看不到“成绩录入”菜单项。为此,某人在 Form1 窗体文件中编写了如下程序:表 1 菜单结构 标题 名称 级别成绩管理 mark 1成绩查询 query 2成绩录入 input 2Private Sub Text1_KeyPress (KeyAscii As Integer)If KeyAscii=13 ThenIf Text1.Text=“Teacher“ ThenForm2.input.Visib
4、le=TrueElseForm2.input.Visible=FalseEnd IfEnd IfForm1.HideForm2.ShowEnd Sub程序运行时发现刚输入口令时就隐藏了 Form1,显示了 Form2,因此需要修改程序。下面的修改方案中正确的是(分数:2.00)A.把 Form1 中 Text1 文本框及相关程序放到 Form2 窗体中B.把 Form1.Hide、Form2.Show 两行移到两个 End If 之间C.把 If KeyAscii=13 Then 改为 If KeyAscii=“Teacher“ ThenD.把两个 Form2.input.Visible 中的
5、“Form2.“删去5.设窗体上有一个通用对话框控件 CD1,希望在执行下面程序时,打开如图 5 所示的文件对话框:(分数:2.00)A.B.C.D.6.软件(程序)调试的任务是(分数:2.00)A.诊断和改正程序中的错误B.尽可能多地发现程序中的错误C.发现和改正程序中的所有错误D.确定程序中的错误性质7.窗体上有一个名称为 Option1 的单选按钮数组,程序运行时,当单击某个单选按钮时会调用下面的事件过程(分数:2.00)A.B.C.D.8.数据库管理系统中负责数据模式定义的语句是(分数:2.00)A.数据定义语言B.数据管理语言C.数据操纵语言D.数据控制语言9.数据流程图(DFD 图
6、)是(分数:2.00)A.软件概要设计的工具B.软件详细设计的工具C.结构化方法的需求分析工具D.面向对象方法的需求分析工具10.下列属性中肯定不是框架控件属性的是(分数:2.00)A.TextB.CaptionC.LeftD.Enabled11.在 VB 集成开发环境中要结束一个正在运行的工程,可单击工具栏上的一个按钮,这个按钮是(分数:2.00)A.B.C.D.12.设 x 是整型变量,与函数 IIF(x0,-x,x)有相同结果的代数式是(分数:2.00)A.|x|B.-|x|C.xD.-x13.有两个关系 R 和 T,如下页图所示,则由关系 R 得到关系 T 的操作是(分数:2.00)A
7、.B.C.D.14.设窗体中有一个文本框 Text1,若在程序中执行了 Text1.SetFocus,则触发(分数:2.00)A.Text1 的 SetFocus 事件B.Text1 的 GotFocus 事件C.Text1 的 LostFocus 事件D.窗体的 GotFocus 事件15.算法的时间复杂度是指(分数:2.00)A.算法的执行时间B.算法所处理的数据量C.算法程序中的语句或指令条数D.算法在执行过程中所需要的基本运算次数16.下面的程序运行时,若输入“Visual Basic Programming”,则在窗体上输出的是Private Sub Command1_Click()
8、Dim count(25) As Integer, ch As Stringch=Uease(InputBox(“请输入字母字符串“)For k=1 To Len(eh)n=Asc(Mid(ch, k, 1)-Asc(“A“)If n0 ThenCount(n)=Count(n)+1End IfNext km=Count(0)For k=1 To 25If mcount(k) Thenm=count(k)End IfNext kPrint mEnd Sub(分数:2.00)A.0B.1C.2D.317.窗体上有一个 Text1 文本框和一个 Command1 命令按钮,并有以下程序Privat
9、e Sub Command1_Click()Dim nIf Text1.Text“123456“ Thenn=n+1Print “口令输入错误“& n & “次“End IfEnd Sub希望程序运行时得到如图 3 所示的效果,即:输入口令,单击“确认口令”命令按钮,若输入的口令不是“123456”,则在窗体上显示输入错误口令的次数。但上面的程序实际显示的是如图 4 所示的效果,所以需要修改程序。下列各修改方案中正确的是(分数:2.00)A.B.C.D.18.VB 中有 3 个键盘事件:KeyPress、KeyDown 和 KeyUp,若光标在 Text1 文本框中,则每输入一个字母(分数:2
10、.00)A.这 3 个事件都会被触发B.只触发 KeyPress 事件C.只触发 KeyDown、KeyUp 事件D.不触发其中任何一个事件19.窗体上有一个名为 Command1 的命令按钮,并有下面的程序:Private Sub Command1_Click()Dim arr(5) As IntegerFor k=1 To 5arr(k)=kNext kProg arr()For k=1 To 5Print arr(k)Next kEnd SubSub prog(a() as Integer)n=Ubound((分数:2.00)A.For i=n To 2 Step-1&nbs20.设窗体
11、文件中有下面的事件过程:Private Sub Command1_Click()Dim sa%=100Print aEnd Sub其中变量 a 和 s 的数据类型分别是(分数:2.00)A.整型,整型B.变体型,变体型C.整型,变体型D.变体型,整型21.有下面的程序段,其功能是按如图 1 所示的规律输出数据:Dim a (3,5) As IntegerFor i=1 To 3For j=1 To 5a(i,j)=i+jprint a (i,j)NextPrintNext若要按图 2 所示的规律继续输出数据,则接在上述程序段后面的程序段应该是(分数:2.00)A.B.C.D.22.软件生命周期
12、可分为定义阶段,开发阶段和维护阶段。详细设计属于(分数:2.00)A.定义阶段B.开发阶段C.维护阶段D.上述 3 个阶段23.下列命令中不能在信息框中输出“VB”的是(分数:2.00)A.MsgBox “VB“B.x=MsgBox(“VB“)C.MsgBox(“VB“)D.Call MsgBox “VB“24.数据库设计中,用 E-R 图来描述信息结构但不涉及信息存计算机中的表示,它属于数据库设计的(分数:2.00)A.需求分析阶段B.逻辑设计阶段C.概念设计阶段D.物理设计阶段25.窗体上有 List1、List2 两个列表框,List1 中有若干列表项(如图 6 所示),并有下面的程序:
13、(分数:2.00)A.B.C.D.26.在学生管理的关系数据库中,存取一个学生信息的数据单位是(分数:2.00)A.文件B.数据库C.字段D.记录27.下面是求最大公约数的函数 gcd 的首部Function gcd(ByVal x As Integer, ByVal y As Integer) As Integer若要输出 8、12、16 这 3 个数的最大公约数,下列语句中正确的是(分数:2.00)A.Print gcd (8,12), gcd(12,6), gcd(16,8)B.Print gcd (8,12,16)C.Print gcd (8), gcd(12), gcd(16)D.P
14、rint gcd (8, gcd(12,16)28.下面程序计算并输出的是Private Sub Command1_Click()a=10:s=0Dos=s+a*a*a:a=a-1Loop Until a=0Print sEnd Sub(分数:2.00)A.13+23+33+103的值B.10!+3!+2!+1!的值C.(1+2+3+10)3的值D.10 个 103的和29.下列关于标准模块的叙述中错误的是(分数:2.00)A.标准模块中可以声明全局变量B.标准模块中可以包含一个 Sub Main 过程,但此过程不能被设置为启动过程C.标准模块中可以包含一些 Public 记过程D.一个工程中
15、可以含有多个标准模块30.设窗体的名称为 Form1,标题为 Win,则窗体的 MouseDown 事件过程的过程名是(分数:2.00)A.Form1_MouseDownB.Win_MouseDownC.Form_MouseDownD.MouseD0wn_Form131.要求当鼠标在图片框 P1 中移动时,立即在图片框中显示鼠标的位置坐标。下列能正确实现上述功能的事件过程是(分数:2.00)A.Private Sub P1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)Print X,YEnd S
16、ubB.Private Sub P1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)Picture.Print X,YEnd SubC.Private Sub P1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)P1.Print X,YEnd SubD.Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single
17、, Y As Single)P1.Print X,YEnd Sub32.软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下面属于系统软件的是(分数:2.00)A.编辑软件B.操作系统C.教务管理系统D.浏览器33.下面正确使用动态数组的是(分数:2.00)A.B.C.D.34.某人编写了下面的程序,希望能把 Text1 文本框中的内容写到 out.txt 文件中:Private Sub Command1_Click()Open “out.txt“ For Output As #2Print “Text1“Close #2End Sub调试时发现没有达到目的,为实现上述目的,应做的
18、修改是(分数:2.00)A.把 Print “Text1“改为 Print #2, Text1B.把 Print “Text1“改为 Print Text1C.把 Print “Text1“改为 Write “Text1“D.把所有的#2 改为#135.下面的程序运行时,若输入 395,则输出结果是Private Sub Command1_Click()Dim x%x=InputBox(“请输入一个 3 位整数“)Print x Mod 10, x/100, (x Mod 100)/10End Sub(分数:2.00)A.3 9 5B.5 3 9C.5 9 3D.3 5 9二、填空题(总题数:
19、10,分数:30.00)36.一个队列的初始状态为空。现将元素 A,B,C,D,E,F,5,4,3,2,1 依次入队,然后依次退队,则元素退队的顺序为 1。(分数:2.00)填空项 1:_37.设某循环队列的容量为 50,如果头指针 front=45(指向队头元素的前一位置),尾指针 rear=10(指向队尾元素),则该循环队列中共有 1 个元素。(分数:2.00)填空项 1:_38.设二叉树如图 7 所示,对该二叉树进行后序遍历的结果为_。(分数:2.00)填空项 1:_39.软件是 1、数据和文档的集合。(分数:2.00)填空项 1:_40.有一个学生选课的关系,其中学生的关系模式为:学生
20、(学号,姓名,班级,年龄),课程的关系模式为:课程(课号,课程名,学时),其中两个关系模式的键分别是学号和课号,则关系模式选课可定义为:选课(学号,_,成绩)。(分数:2.00)填空项 1:_41.为了使复选框禁用(即呈现灰色),应把它的 Value 属性设置为 1。(分数:2.00)填空项 1:_42.在窗体上画一个标签、一个计时器和一个命令按钮,其名称分别为 Label1、Timer1 和 Command1,如图 8 所示。程序运行后,如果单击命令按钮,则标签开始闪烁,每秒钟“欢迎”二字显示和消失各一次,如图 9 所示。以下是实现上述功能的程序,请填空。(分数:6.00)填空项 1:_43
21、.有如下程序:Private Sub Form_Click()n=10:i=0Doi=i+n:n=n-2Loop While n2Print iEnd Sub程序运行后,单击窗体,输出结果为_。(分数:2.00)填空项 1:_44.在窗体上画一个名称为 Command1 的命令按钮,然后编写如下程序:Option Base 1Private Sub Command1_Click()Dim a(10) As IntegerFor i=1 To 10a(i)=iNextCall swap( (11) )For i=1 To 10Print a(i)NextEnd SubSub swap(b() A
22、s Integer)n=Ubound(b)For i=1 To n/2t=b(i):b(i)=b(n):b(n)=t(12) NextEnd Sub上述程序的功能是:通过调用过程 swap,调换数组中数值的存放位置,即 a(1)与 a(10)的值互换,a(2)与 a(9)的值互换,。请填空。(分数:4.00)填空项 1:_45.在窗体上画一个文本框,其名称为 Text1,在属性窗口中把该文本框的 MultiLine 属性设置为 True,然后编写如下的事件过程:Private Sub Form_Click()Open “d:/test/smtext1.txt“ For Input As #1D
23、o While Not (13) Line Input #1, aspect $whole $=whole $+aspect $+Chr $ (13)+Chr $ (10)LoopText1.Text=whole $(14) Open “d:/text/smtext2.txt“ For Output As #1Print #1, (15) Close #1End Sub运行程序,单击窗体,将把磁盘文件 smtext1.txt 的内容读到内存并在文本框中显示出来,然后把该文本框中的内容存入磁盘文件 smtext2.txt。请填空。(分数:6.00)填空项 1:_二级 VISUAL+BASIC 笔
24、试-158 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.计算 的近似值的一个公式是: (分数:2.00)A.B.C. D.解析:解析 程序中第一次循环累加 PI 时 k 为 3,sign 为-1,PI=1-1/3,刚好为公式中的前两项;进行下次循环累加时k 为 4,sign 为 1,PI 值相当于 1-1/3+1/4,与公式不符,分母应该由 3 直接跳到 5,所以循环时 k 值的步长应为 2,选项 C 为正确答案。同样办法可以验证选项 A、D 累加的值与公式也不相符,选项 B 的作用在程序正确的情况下可以使得求出的 值更接近于真实的 值,
25、提高了计算的精度。2.若在窗体模块的声明部分声明了如下自定义类型和数组Private Type recCode As IntegerCaption As StringEnd TypeDim arr(5) As rec则下面的输出语句中正确的是(分数:2.00)A.Print arr.Code(2), arr.Caption(2)B.Print arr.Code, arr.CaptionC.Print arr(2).Code, arr(2).Caption D.Print Code(2), Caption(2)解析:解析 自定义类型数组成员的引用格式为:数组名(下标).成员名3.下列叙述中正确的
26、是(分数:2.00)A.对长度为 n 的有序链表进行查找,最坏情况下需要的比较次数为 n B.对长度为 n 的有序链表进行对分查找,最坏情况下需要的比较次数为(n/2)C.对长度为 n 的有序链表进行对分查找,最坏情况下需要的比较次数为(log 2n)D.对长度为 n 的有序链表进行对分查找,最坏情况下需要的比较次数为(nlog 2n)解析:解析 有序链表中定位元素需要通过指针逐个查找,所以对分查找的意义不大。4.设工程中有两个窗体:Form1 和 Form2。Form1 为启动窗体,Form2 中有菜单(其结构如表 1 所示)。要求在程序运行时,在 Form1 的文本框 Text1 中输入
27、121 令并按回车键(回车键的 ASCII 码为 13)后,隐藏Form1,显示 Form2。若口令为“Teacher”,则所有菜单项都可见;否则看不到“成绩录入”菜单项。为此,某人在 Form1 窗体文件中编写了如下程序:表 1 菜单结构 标题 名称 级别成绩管理 mark 1成绩查询 query 2成绩录入 input 2Private Sub Text1_KeyPress (KeyAscii As Integer)If KeyAscii=13 ThenIf Text1.Text=“Teacher“ ThenForm2.input.Visible=TrueElseForm2.input.V
28、isible=FalseEnd IfEnd IfForm1.HideForm2.ShowEnd Sub程序运行时发现刚输入口令时就隐藏了 Form1,显示了 Form2,因此需要修改程序。下面的修改方案中正确的是(分数:2.00)A.把 Form1 中 Text1 文本框及相关程序放到 Form2 窗体中B.把 Form1.Hide、Form2.Show 两行移到两个 End If 之间 C.把 If KeyAscii=13 Then 改为 If KeyAscii=“Teacher“ ThenD.把两个 Form2.input.Visible 中的“Form2.“删去解析:解析 程序未到达预计
29、目标的原因是窗体的显示和隐藏不受按键条件的限制(未放在IfKeyrAscii=13 Then 语句内)。即不管按的键是不是回车键,只要在 Text1 文本框中输入字符就触发了Text1 的 KeyPress 事件,都会执行 Form1.Hide 和 Form2.Show 两个语句,就隐藏了 Form1,显示了Form2。因此,要到达预计目标,需要把 Form1.Hide 和 Form2.Show 两个语句移到条件 KeyAscii=13 的内部,即两个 End If 之间。5.设窗体上有一个通用对话框控件 CD1,希望在执行下面程序时,打开如图 5 所示的文件对话框:(分数:2.00)A.B.
30、C. D.解析:解析 文件类型一栏显示的内容由通用对话框的 Filter 和 FilterIndex 属性决定。Filter 属性称为通用对话框的过滤器,用于指定在对话框的文件类型列表框中所要显示的文件类型。当为一个通用对话框指定一个以上的文件类型时,FilterIndex 属性用于确定哪一个文件类型作为默认的过滤器。本题中为通用对话框 CD1 指定了 3 个文件类型过滤器,其中第三个“文本文件|*.Txt”为希望的过滤类型。选项C 在语句 CD1.Action=1 的前面添加:CD1.FilterIndex=3,可以使得对话框的默认过滤器变为“文本文件”。选项 B 的修改方法虽然可以使得对话
31、框的“文件类型”栏显示出“文本文件”文字提示,但是它的过滤规则是“*.*”表示显示所有文件,过滤内容与提示内容不一致。6.软件(程序)调试的任务是(分数:2.00)A.诊断和改正程序中的错误 B.尽可能多地发现程序中的错误C.发现和改正程序中的所有错误D.确定程序中的错误性质解析:解析 软件(程序)调试的任务是为了诊断和改正程序中的错误,软件(程序)测试的任务才是为了发现错误。7.窗体上有一个名称为 Option1 的单选按钮数组,程序运行时,当单击某个单选按钮时会调用下面的事件过程(分数:2.00)A.B.C. D.解析:解析 单选按钮组属于控件数组的范畴组中的每个控件(如一个单选按钮)有相
32、同的对象名称(name 属性值)和不同的标号(Index 属性值),因此既有共性又有区别。本题中,当单击某个单选按钮时,就调用事件 Option1_Click(Index As Integer),index 参数值就是用户单击的那个单选按钮的标号,由系统获取并存储,以此即可判定是按钮组中的哪个按钮被选中。8.数据库管理系统中负责数据模式定义的语句是(分数:2.00)A.数据定义语言 B.数据管理语言C.数据操纵语言D.数据控制语言解析:解析 数据库定义语言 DDL(Data Definition Language)用于定义数据库的所有特性和属性,尤其是行布局、列定义、键列(有时是选键方法)、文
33、件位置和存储策略。9.数据流程图(DFD 图)是(分数:2.00)A.软件概要设计的工具B.软件详细设计的工具C.结构化方法的需求分析工具 D.面向对象方法的需求分析工具解析:解析 数据流程图(DFD)是用于描述结构化方法中需求分析阶段的工具。10.下列属性中肯定不是框架控件属性的是(分数:2.00)A.Text B.CaptionC.LeftD.Enabled解析:解析 框架控件是容器类控件,即是可容纳其他控件的容器,其自身不接收文字输入,没有 Text属性。11.在 VB 集成开发环境中要结束一个正在运行的工程,可单击工具栏上的一个按钮,这个按钮是(分数:2.00)A.B.C.D. 解析:
34、解析 工具栏提供了对常用的菜单命令的快速访问。*按钮用于恢复用“撤销”命令所取消的操作;*按钮用于运行当前应用程序;*按钮用于添加一个工程;*按钮用于结束一个正在运行的工程。12.设 x 是整型变量,与函数 IIF(x0,-x,x)有相同结果的代数式是(分数:2.00)A.|x|B.-|x| C.xD.-x解析:解析 IIF 函数共有 3 个参数,运算时首先计算第一个参数的值,如果其值为真,则返回第二个参数的值,否则返回第三个参数的值。本题中,若 x0,则返回-x,返回值为一个负数;相反 x=0 时,返回 x 本身,即函数返回值总是小于或等于 0。对照本题的 4 个答案,只可能是选项 B 满足
35、要求。13.有两个关系 R 和 T,如下页图所示,则由关系 R 得到关系 T 的操作是(分数:2.00)A. B.C.D.解析:解析选择运算是从关系中找出满足给定条件的那些元组,其中条件是以逻辑表达式给出的,选取值为真的元组,这种运算是从水平方向抽取元组。14.设窗体中有一个文本框 Text1,若在程序中执行了 Text1.SetFocus,则触发(分数:2.00)A.Text1 的 SetFocus 事件B.Text1 的 GotFocus 事件 C.Text1 的 LostFocus 事件D.窗体的 GotFocus 事件解析:解析 setFocus 方法的作用是将焦点移至指定的控件或窗体
36、。本题中执行 Text1.SetFocus 后焦点将移到 Text1 控件,继而引发 Text1 的 GotFocus 事件。15.算法的时间复杂度是指(分数:2.00)A.算法的执行时间B.算法所处理的数据量C.算法程序中的语句或指令条数D.算法在执行过程中所需要的基本运算次数 解析:解析 算法的时间复杂度是指执行算法所需要的计算工作量。度量一个算法的工作量,可用算法在执行过程中所需基本运算的执行次数来度量。16.下面的程序运行时,若输入“Visual Basic Programming”,则在窗体上输出的是Private Sub Command1_Click()Dim count(25)
37、As Integer, ch As Stringch=Uease(InputBox(“请输入字母字符串“)For k=1 To Len(eh)n=Asc(Mid(ch, k, 1)-Asc(“A“)If n0 ThenCount(n)=Count(n)+1End IfNext km=Count(0)For k=1 To 25If mcount(k) Thenm=count(k)End IfNext kPrint mEnd Sub(分数:2.00)A.0B.1C.2D.3 解析:解析 按题干的说明,程序首先通过 ch=Ucase(InputBox(“请输入字母字符串“)语句接收“Visual B
38、asic Programming”并将其转换为大写字母存入到变量 ch 中。接下来通过一个循环从源字符串中每一次取一个字符并计算出 ASCII 值,并用此值与字母 A 的 ASCII 值相减,把差值存入到变量 n 中。if n0 then 说明取出的字符的 ASCII 码比 A 字母的 ASCII 码值大时将做操作 Count(n)=Count(n)+1,Count(n)=Count(n)+1 的作用是将 Count(n)的值增 1,即记录其个数。相同字符的 ASCII 码值与 A 字母 ASCII 码值的差值 n 相同,记录到相同下标的数组元素中,因此 Count(n)其实记录下了输入的字符
39、串中每个字母出现的次数。接下来,将 count(0)的值赋给变量 m,并通过循环 For k=1 To 25 将数组 Count(n)的每一个元素的值与m 相比,如果数组元素的值大于 m,则将其值赋给 m,这样等到循环结束,m 中的值就是数组中各元素值中最大者。结合上面的分析,本程序的作用实际上就是统计出一个字符串中各字母出现的次数,并找到次数的最大值。从输入的字母串来说,字母 A 和 I 出现的次数最多,为 3 次,所以最终结果输出为 3。17.窗体上有一个 Text1 文本框和一个 Command1 命令按钮,并有以下程序Private Sub Command1_Click()Dim nI
40、f Text1.Text“123456“ Thenn=n+1Print “口令输入错误“& n & “次“End IfEnd Sub希望程序运行时得到如图 3 所示的效果,即:输入口令,单击“确认口令”命令按钮,若输入的口令不是“123456”,则在窗体上显示输入错误口令的次数。但上面的程序实际显示的是如图 4 所示的效果,所以需要修改程序。下列各修改方案中正确的是(分数:2.00)A.B.C.D. 解析:解析 在原有的程序中定义了一个动态的局部变量 n,每次执行 Command1_Click 事件过程时,系统为变量 n 分配存储单元;当该过程执行结束时,释放变量 n 所占用的存储单元;因而变
41、量 n 就无法实现累计口令输入错误次数的作用,每次单击 Command1 时,程序都显示“口令输入错误 1 次”。要想把口令输入错误次数累计下来,需要把动态变量 n 改成静态变量,即把 Dim n 改变 Static n 即可,故选项 D 为本题的正确答案。18.VB 中有 3 个键盘事件:KeyPress、KeyDown 和 KeyUp,若光标在 Text1 文本框中,则每输入一个字母(分数:2.00)A.这 3 个事件都会被触发 B.只触发 KeyPress 事件C.只触发 KeyDown、KeyUp 事件D.不触发其中任何一个事件解析:解析 KeyDown 事件在按下键盘上的一个键时触发
42、,Keyup 事件在松开键时触发,KeyPress 事件在按下并释放一个键时触发。在 Text1 文本框中输入一个字母时首先触发 KeyDown 事件;同时把该按键所代表的字母送到 Text1 控件,触发 KeyPress 事件;当松开按键时触发 KeyUp 事件。若按住一个键不放,则连续触发 KeyDown 和 KeyPress 事件,在最后松开该按键时,触发一次 Keyup 事件。本题中“每输入一个字母”都会触发这 3 个事件,答案为 A。19.窗体上有一个名为 Command1 的命令按钮,并有下面的程序:Private Sub Command1_Click()Dim arr(5) As
43、 IntegerFor k=1 To 5arr(k)=kNext kProg arr()For k=1 To 5Print arr(k)Next kEnd SubSub prog(a() as Integer)n=Ubound((分数:2.00)A.For i=n To 2 Step-1&nbs解析:解析 本题中的 prog 过程的作用是采用冒泡法对 a 数组中的所有数据进行由大到小的顺序排序。在事件过程 Command1_Click 中调用过程 prog 时将数组 arr 作为实参传递给形参数组 a,形参是数组时,只能采用按地址传递方式传递参数,这样数组 arr 和数组 a 共享同一段地址空
44、间,当在 prog 中对数组 a完成排序之后,数组 arr 其实也就排好序了,所以在事件过程(Command1_Click 中输出时,输出的是经过冒泡法由大到小方式排序的 arr 数组中的数据,所以输出的结果为:5 4 3 2 1。20.设窗体文件中有下面的事件过程:Private Sub Command1_Click()Dim sa%=100Print aEnd Sub其中变量 a 和 s 的数据类型分别是(分数:2.00)A.整型,整型B.变体型,变体型C.整型,变体型D.变体型,整型 解析:解析 语句“Dim s”是对变量 s 进行定义,但未指定其类型,系统默认为变体型;语句“a%=10
45、0”是对变量 a 边定义边赋值,变量 a 后的符号%说明变量 a 是一个整型变量。所以本题的答案为D。21.有下面的程序段,其功能是按如图 1 所示的规律输出数据:Dim a (3,5) As IntegerFor i=1 To 3For j=1 To 5a(i,j)=i+jprint a (i,j)NextPrintNext若要按图 2 所示的规律继续输出数据,则接在上述程序段后面的程序段应该是(分数:2.00)A. B.C.D.解析:解析 比较图 1 和图 2 可发现:图 2 的第 n 行与图 1 第 n 列相同。而图 1 的数据已经通过已知程序段存储在二维数组 n 中,所以要想按图 2
46、所示的规律继续输出数据,只需先依次输出二维数组 a 中每列的数据即可。本题中采用双重循环控制输出,外循环控制输出图形的行数,内循环控件输出图形每一行上数字的个数,所以外循环需循环 5 次,内循环需循环 3 次,选项 A、C、D 都满足这一点。每一行输出的 3个数字应从图 1 的不同行取值,所以内循环的控制变量应作为数组的行标,只有选项 A 满足要求。选项C、D 的效果是相同的,当外循环控件变量值为 4 时,下标越界,程序出错。22.软件生命周期可分为定义阶段,开发阶段和维护阶段。详细设计属于(分数:2.00)A.定义阶段B.开发阶段 C.维护阶段D.上述 3 个阶段解析:解析 软件生命周期由软
47、件定义、软件开发和软件维护 3 个时期组成。软件定义可分为软件系统的可行性研究和需求分析两个阶段。软件开发时期由 5 个阶段组成:概要设计、详细没计、编写代码、组装测试和确认测试。软件维护时期的主要任务是使软件持久的满足用户的需要。23.下列命令中不能在信息框中输出“VB”的是(分数:2.00)A.MsgBox “VB“B.x=MsgBox(“VB“)C.MsgBox(“VB“)D.Call MsgBox “VB“ 解析:解析 MsgBox 用于产生一个信息框,最多有 3 个参数。第一个参数是必选的、其内容是信息框中提示的文字;第二和第三个参数是可选的、用于决定信息框中按钮的功用和信息框的标题
48、。MsgBox 可以以函数的方式调用,也可以以过程的方式调用。当它以函数方式使用时,参数要用括号括起来并且要对函数的返回值做出处理,比如将函数的返回值赋值给变量或者写在表达式中直接参与运算。本题中的选项 B 就是按函数方式调用并把函数的返回值赋给变量x,是正确的调用方式。当把 MsgBox 作为过程调用时,有两种调用方法:一是使用关键字 Call,参数要用括号括起来,形式为call msgbox(提示,按钮,标题);二是不使用关键字 Call,参数外不加括号,形式为 msgbox 提示,按钮,标题。因此选项 A 正确,选项 D 错误;D 选项为本题的答案。C 选项因为没有处理 MsgBox 返回值,所以它是按照过程方式在调用。但是这条语句中有括号却没有关键字 call,似乎和刚才的讲解州悖,其实不然,它是不使用关键字 call 的过程调用。至于该选项语句中的括号,可以这样理解:因为该选项MsgBox只有一个参数,该参数是一个表达式,表达式中是允许有括号的,选项中的括号可以行作表达式中括号,只是表达式(“VB“)和“VB“等价,括号没有实际作用而已。24.数据库设计中,用 E-R 图来描述信息结构但不涉及信息存计算机中的表示,它属于数据库设计的(分数:2.00)A.需求分析阶段B.逻辑设计阶段 C.概念设计阶段D.物理设计阶段解析:解析 用 E-R 图来描述信