1、国家二级 VB 机试(选择题)-试卷 24 及答案解析(总分:80.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.下列链表中,其逻辑结构属于非线性结构的是(分数:2.00)A.二叉链表B.循环链表C.双向链表D.带链的栈2.设循环队列的存储空间为 Q(1: 35),初始状态为 front=rear=35。现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为(分数:2.00)A.15B.16C.20D.0 或 353.下列关于栈的叙述中,正确的是(分数:2.00)A.栈底元素一定是最后入栈的元素B.栈顶元素一定是最先入栈的元素C.
2、栈操作遵循先进后出的原则D.以上说法均错误4.在关系数据库中,用来表示实体间联系的是(分数:2.00)A.属性B.二维表C.网状结构D.树状结构5.公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员。则实体部门和职员间的联系是(分数:2.00)A.1:1 联系B.m:1 联系C.1:m 联系D.m:n 联系6. (分数:2.00)A.选择B.投影C.自然连接D.并7.数据字典(DD) 所定义的对象都包含于(分数:2.00)A.数据流图(DFD 图)B.程序流程图C.软件结构图D.方框图8.软件需求规格说明书的作用不包括(分数:2.00)A.软件验收的依据B.用户与开发
3、人员对软件要做什么的共同理解C.软件设计的依据D.软件可行性研究的依据9.下面属于黑盒测试方法的是(分数:2.00)A.语句覆盖B.逻辑覆盖C.边界值分析D.路径覆盖10.下面不属于软件设计阶段任务的是(分数:2.00)A.软件总体设计B.算法设计C.制定软件确认测试计划D.数据库设计11.在编辑 VB 应用程序时,如果不小心关闭了属性窗口,则可以单击主窗口标准工具栏上的一个按钮直接打开属性窗口,这个按钮的图标是 (分数:2.00)A.B.C.D.12.下面关于 VB 应用程序的叙述中正确的是(分数:2.00)A.VB 应用程序只能解释运行B.VB 应用程序只能编译运行C.VB 应用程序既能解
4、释运行,也能编译运行D.VB 应用程序必须先编译,然后解释运行13.下面变量定义中错误的是(分数:2.00)A.Public mod As IntegerB.Static bufC.Dim ch As String * 10D.Dim a!(-5 To -1)14.语句:Print Asc(Chr$(Mid$(“98765432“, 4, 2) 的输出是(分数:2.00)A.65B.AC.8765D.W15.设变量 x 中的值是 395,则下面语句的输出是 Print x / 100 + (x Mod 100) / 10) * 10 + (x Mod 10) * 100(分数:2.00)A.9
5、35B.395C.539D.59316.如果要定义一个窗体级变量,定义变量语句的位置应该是(分数:2.00)A.在使用该变量的过程中B.在该窗体模块所有过程的前面C.在该窗体模块所有过程的后面D.在某个标准模块中17.如果把程序的启动对象设置为:Sub Main,则 Sub Main 过程(分数:2.00)A.只能写在 Form1 窗体中代码的最前面B.可以写在 Form1 窗体中代码的任何位置C.只能写在某个标准模块的代码中D.可以写在任何窗体或标准模块的代码中18.设有下面的程序段: x = InputBox(“请输入一个整数“) ReDim a(x) For k = x To 0 Ste
6、p -1 a(k) = k Next k 一般,在这段程序之前应先进行数组 a 的定义。下面定义语句中正确的是 A) B) C) D) 答案:(分数:2.00)A.Dim a(100) As IntegerB.Dim a() As IntegerC.Dim a As IntegerD.Dim a(0 To 100) As Integer19.设有以下过程:Private Sub proc(x As Integer, Optional y As Integer) Print x, yEnd Sub 针对此过程,下面正确的过程调用语句是(分数:2.00)A.Call proc(a!, 23)B.C
7、all proc x%, 12C.proc b%D.x = proc(12)20.下面语句中能够打开随机文件的是(分数:2.00)A.Open “file.txt“ For Random As #1B.Open “file.txt“ For Input As #1C.Open “file.txt“ For Output As #1D.Open “file.txt“ For Append As #121.文本框的 Locked 属性被设置为 True 后产生的效果是(分数:2.00)A.光标不能进入文本框B.不能使文本框中的文本左右滚动C.不能修改文本框中的文本D.在程序中不能引用文本框的内容2
8、2.下面关于直线控件的叙述中正确的是(分数:2.00)A.它的 X1、X2 属性值必须满足 X1 c And a + c b And b + c a Then Print “可以构成一个三角形“ Else Print “不能构成三角形“ End IfB.If a + b c Or a + c b Or b + c a Then Print “可以构成一个三角形“ Else Print “不能构成三角形“ End IfC.If a + b 10 Print i = i + 2 Loop End Sub 程序运行时输出字符“*“的个数是(分数:2.00)A.50B.20C.16D.1533.下面程
9、序的功能是输出 100 以内所有素数:Private Sub Command1_Click() For n = 2 To 100 isprime = True k = 2 Do While k m Then n = m m = a(k) ElseIf a(k) n And a(k) ch Then strbuf = strbuf Next kEnd Sub 程序运行时的输出是(分数:2.00)A.27 24 41 64 98 58B.64 24 98 27 58 41C.24 27 41 58 64 98D.98 64 58 41 27 2437.由高中数学可知,对于连续函数 f(x),若 f
10、(x1)与 f(x2)值的符号相反,则在 x1 和 x2 之间必存在x0,使得 f(x0)=0(该点称为“零点“)。设有 VB 函数:Private Function f(x As Single) As Single 可以返回 f(x)的值(函数体没有给出)。下面程序的功能是从键盘输入 2 个实数 x1、x2,判断在 x1、x2之间是否存在零点。Private Sub Command1_Click() Dim x1 As Single, x2 As Single x1 = InputBox(“请输入一个实数 x1“) x2 = InputBox(“请再输入一个实数 x2“) If ( _ )
11、Then Print “在“; x1; “与“; x2; “之间存在零点“ Else Print “不能确定在“; x1; “与“; x2; “之间是否存在零点“ End IfEnd SubPrivate Function f(x As Single) As Single End Function 为使上面程序可以实现该功能,程序代码中横线处应填写的代码是(分数:2.00)A.f(x1) 0 Or f(x2) 0B.f(x1) 0 And f(x2) 0C.f(x1) * f(x2) 0D.f(x1) * f(x2) 038.设窗体上有 3 个图像框:Image1、Image2、Image3,
12、并有下面的程序代码:Private Sub Form_Load() Image1.Picture = LoadPicture(“LEAF.bmp“) Image2.Picture = LoadPicture(“OPEN.bmp“) Image3.Visible = FalseEnd SubPrivate Sub Image1_Click() Image2.Picture = Image1.PictureEnd SubPrivate Sub Image2_Click() Image3.Picture = Image2.Picture Image2.Picture = Image1.Picture
13、 Image1.Picture = Image3.PictureEnd Sub 在程序运行期间单击 Image2,则在窗体上看到的结果是(分数:2.00)A.在 Image3 中显示 Image2 中的图片B.Image1、Image2 中原有图片被交换了C.Image1、Image2 中都是原来 Imege1 中的图片D.Image1、Image2 中都是原来 Imege2 中的图片39.设窗体上有一个名称为 List1 的列表框和一个名称为 Check1 的复选框数组(下标从 0 开始)。程序运行时,单击某个复选框,如果列表框中没有该复选框的标题,则把该复选框的标题添加到列表框中,否则从列
14、表框中把该复选框标题删除。Private Sub Check1_Click(Index As Integer) For k = 0 To List1.ListCount - 1 If Check1(Index).Caption = List1.List(k) Then Exit For End If Next k If k = r Then flag = 0 End If End If End Sub 运行程序后产生的结果是(分数:2.00)A.圆逐渐缩小,再逐渐增大,然后再逐渐缩小,依此往复B.圆一直在缩小C.圆每隔 0.5 秒向右移动一次D.圆每隔 1 秒向下移动一次国家二级 VB 机试(
15、选择题)-试卷 24 答案解析(总分:80.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.下列链表中,其逻辑结构属于非线性结构的是(分数:2.00)A.二叉链表 B.循环链表C.双向链表D.带链的栈解析:解析:在定义的链表中,若只含有一个指针域来存放下一个元素地址,称这样的链表为单链表或线性链表。带链的栈可以用来收集计算机存储空间中所有空闲的存储结点,是线性表。在单链表中的结点中增加一个指针域指向它的直接前件,这样的链表,就称为双向链表(一个结点中含有两个指针),也是线性链表。循环链表具有单链表的特征,但又不需要增加额外的存贮空间,仅对表的链接方式稍做改变,使得对
16、表的处理更加方便灵活,属于线性链表。二叉链表是二叉树的物理实现,是一种存储结构,不属于线性结构。答案为 A 选项。2.设循环队列的存储空间为 Q(1: 35),初始状态为 front=rear=35。现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为(分数:2.00)A.15B.16C.20D.0 或 35 解析:解析:在循环队列中,用队尾指针 rear 指向队列中的队尾元素,用排头指针 front 指向排头元素的前一个位置。在循环队列中进行出队、入队操作时,头尾指针仍要加,朝前移动。只不过当头尾指针指向向量上界时,其加操作的结果是指向向量的下界。由于入队
17、时尾指针向前追赶头指针,出队时头指针向前追赶尾指针,故队空和队满时,头尾指针均相等。答案为 D 选项。3.下列关于栈的叙述中,正确的是(分数:2.00)A.栈底元素一定是最后入栈的元素B.栈顶元素一定是最先入栈的元素C.栈操作遵循先进后出的原则 D.以上说法均错误解析:解析:栈顶元素总是后被插入的元素,从而也是最先被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。栈的修改是按后进先出的原则进行的。因此,栈称为先进后出表,或“后进先出“表,所以选择 C。4.在关系数据库中,用来表示实体间联系的是(分数:2.00)A.属性B.二维表 C.网状结构D.树状结构解析:解析:关系
18、模型实体间的联系采用二维表来表示,简称表。选项 C 为网状模型实体间的联系,选项D 为层次模型实体间的联系,选项 A 属性刻画了实体5.公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员。则实体部门和职员间的联系是(分数:2.00)A.1:1 联系B.m:1 联系C.1:m 联系 D.m:n 联系解析:解析:两个实体集间的联系实际上是实体集间的函数关系,主要有一对一联系(1:1)、一对多联系(1:m)、多对一联系(m:1)、多对多联系(m:n)。对于每一个实体部门,都有多名职员,则其对应的联系为一对多联系(1:m),答案选 C。6. (分数:2.00)A.选择 B.投
19、影C.自然连接D.并解析:解析:由关系 R 到关系 S 为一元运算,排除 C 和 D。关系 S 是关系 R 的一部分,是通过选择之后的结果,因此选 A。7.数据字典(DD) 所定义的对象都包含于(分数:2.00)A.数据流图(DFD 图) B.程序流程图C.软件结构图D.方框图解析:解析:在数据流图中,对所有元素都进行了命名,所有名字的定义集中起来就构成了数据字典。因此选 A,而 B,C,D 都不符合。8.软件需求规格说明书的作用不包括(分数:2.00)A.软件验收的依据B.用户与开发人员对软件要做什么的共同理解C.软件设计的依据D.软件可行性研究的依据 解析:解析:软件需求规格说明书是需求分
20、析阶段的最后成果,是软件开发的重要文档之一。 软件需求规格说明书有以下几个方面的作用。便于用户、开发人员进行理解和交流,B 正确;反映出用户问题的结构,可以作为软件开发工作的基础和依据,C 正确;作为确认测试和验收的依据,A 正确。9.下面属于黑盒测试方法的是(分数:2.00)A.语句覆盖B.逻辑覆盖C.边界值分析 D.路径覆盖解析:解析:黑盒测试不关心程序内部的逻辑,只是根据程序的功能说明来设计测试用例。在使用黑盒测试法时,手头只需要有程序功能说明就可以了。黑盒测试法分等价类划分法、边界值分析法和错误推测法,答案为 C。而 A、B、D 均为白盒测试方法。10.下面不属于软件设计阶段任务的是(
21、分数:2.00)A.软件总体设计B.算法设计C.制定软件确认测试计划 D.数据库设计解析:解析:从技术观点上看,软件设计包括软件结构设计、数据设计、接口设计、过程设计。所以A、B、D 正确,C 为软件测试阶段的任务。11.在编辑 VB 应用程序时,如果不小心关闭了属性窗口,则可以单击主窗口标准工具栏上的一个按钮直接打开属性窗口,这个按钮的图标是 (分数:2.00)A.B.C.D. 解析:解析:按 F4 键,或单击工具栏中“属性窗口“12.下面关于 VB 应用程序的叙述中正确的是(分数:2.00)A.VB 应用程序只能解释运行B.VB 应用程序只能编译运行C.VB 应用程序既能解释运行,也能编译
22、运行 D.VB 应用程序必须先编译,然后解释运行解析:解析:VB 程序有两种运行方式,即解释方式与编译方式。13.下面变量定义中错误的是(分数:2.00)A.Public mod As Integer B.Static bufC.Dim ch As String * 10D.Dim a!(-5 To -1)解析:解析:变量名的命名规则是:255 个字符以内,第一个字符是字母,其后可以是字母、数字和下划线的组合,最后一个字符也可以是类型说明符。通常使用具有一定含义的变量名,可以帮助说明功能,简化调试过程。保留字不能作为变量名。选项 A)中的 mod 为保留字,所以选项 A)错误。14.语句:Pr
23、int Asc(Chr$(Mid$(“98765432“, 4, 2) 的输出是(分数:2.00)A.65 B.AC.8765D.W解析:解析:Mid$(字符串,p,n)从第 P 个字符开始,向后截取 n 个字符。 Chr$()是求 ASCII 字符的函数,格式是 Chr$(表达式),其中“表达式“应该是合法的 ASCII 码值,Chr$()函数把“表达式“的值转换为相应的ASCII 字符。 Asc() ,求字符串表达式的第一个字符的 ASCII 编码,函数返回值类型为 Integer。15.设变量 x 中的值是 395,则下面语句的输出是 Print x / 100 + (x Mod 100
24、) / 10) * 10 + (x Mod 10) * 100(分数:2.00)A.935B.395C.539D.593 解析:解析:整除运算(/)的结果是商的整数部分。例如,7/2 表示整除,商为 4.5,结果取整数部分 3,不进行四舍五入。如果参加整除的操作数是浮点数,则先按四舍五入的原则将它们变成整数,然后再执行整除运算。例如,对于 8.5/2,先将 8.5 变成 9 再进行整除,商为 4.5,结果为 4。 取余运算(Mod)是求两个整数相除后的余数。如果参加取余运算的操作数是浮点数,则先按四舍五入的原则将它们变成整数,然后再执行取余运算。例如,对于 8.5/2.1,先将 8.5 变成
25、9,2.1 变成 2,然后 9 除以 2 与 1,因此取余结果为1。 算术运算符的优先级:先乘除,后加减;乘方优先于乘除;函数优先于乘方;Mod 次于乘除而优先于加减;括号最优先。 本题中,x / 100 结果为 3,(x Mod 100) / 10) * 10 结果为 90,(x Mod 10) * 100 结果为 500,所以输出为 593,选项 D)正确。16.如果要定义一个窗体级变量,定义变量语句的位置应该是(分数:2.00)A.在使用该变量的过程中B.在该窗体模块所有过程的前面 C.在该窗体模块所有过程的后面D.在某个标准模块中解析:解析:窗体级变量,在窗体的“通用声明“段所有过程的
26、前面用 Dim 语句或用 Private 语句声明的变量,可被本窗体的任何过程访问。17.如果把程序的启动对象设置为:Sub Main,则 Sub Main 过程(分数:2.00)A.只能写在 Form1 窗体中代码的最前面B.可以写在 Form1 窗体中代码的任何位置C.只能写在某个标准模块的代码中 D.可以写在任何窗体或标准模块的代码中解析:解析:在运行窗体程序之前先执行一些操作,此时可以通过在标准模块中创建一个 Sub Main 的子过程,不能在窗体模块中创建 Sub Main 的子过程,然后在创建的 Sub Main 过程中编写启动时要执行的代码,每个工程只能有一个 Sub Main
27、的子过程。18.设有下面的程序段: x = InputBox(“请输入一个整数“) ReDim a(x) For k = x To 0 Step -1 a(k) = k Next k 一般,在这段程序之前应先进行数组 a 的定义。下面定义语句中正确的是 A) B) C) D) 答案:(分数:2.00)A.Dim a(100) As IntegerB.Dim a() As Integer C.Dim a As IntegerD.Dim a(0 To 100) As Integer解析:解析:在 VB 中定义动态数组通常分两步:首先在窗体层或标准模块中用 Dim、Private 或 Public声
28、明一个没有下标的数组(括号不能省略),然后在过程中用 ReDim 语句定义带下标的数组。根据题意,选项 B)正确。19.设有以下过程:Private Sub proc(x As Integer, Optional y As Integer) Print x, yEnd Sub 针对此过程,下面正确的过程调用语句是(分数:2.00)A.Call proc(a!, 23)B.Call proc x%, 12C.proc b% D.x = proc(12)解析:解析:(1)用 Call 语句调用 Sub 过程:语法:Call 过程名(实参表列),实参的个数、类型和顺序,应该与被调用过程的形式参数相匹
29、配,有多个参数时,用逗号分隔。(2)把过程名作为一个语句来用:语法:过程名 实参 1,实参 2/,它与(1)的不同点是:去掉了关键字和实参列表的括号。根据题意,选项 C)正确。20.下面语句中能够打开随机文件的是(分数:2.00)A.Open “file.txt“ For Random As #1 B.Open “file.txt“ For Input As #1C.Open “file.txt“ For Output As #1D.Open “file.txt“ For Append As #1解析:解析:打开随机文件的一般格式为 Open “文件名“ For Random As #文件号
30、Len=记录长度。21.文本框的 Locked 属性被设置为 True 后产生的效果是(分数:2.00)A.光标不能进入文本框B.不能使文本框中的文本左右滚动C.不能修改文本框中的文本 D.在程序中不能引用文本框的内容解析:解析:文本框控件 Locked 属性用于设置是否锁定,如设置为 True,则不能编辑该文本框。22.下面关于直线控件的叙述中正确的是(分数:2.00)A.它的 X1、X2 属性值必须满足 X1 c And a + c b And b + c a Then Print “可以构成一个三角形“ Else Print “不能构成三角形“ End IfB.If a + b c Or
31、 a + c b Or b + c a Then Print “可以构成一个三角形“ Else Print “不能构成三角形“ End If C.If a + b 10 Print i = i + 2 Loop End Sub 程序运行时输出字符“*“的个数是(分数:2.00)A.50B.20C.16 D.15解析:解析:DoLoop Until 循环和 Do WhileLoop 循环都是满足执行条件时会一直执行循环体内的语句。直到条件不满足退出。外循环 i 初值为 1,条件是小于 5,每次循环加 2,则执行 2 次。内循环条件i=1 时执行 10 次,i=3 时执行 6 次。选 C)。33.
32、下面程序的功能是输出 100 以内所有素数:Private Sub Command1_Click() For n = 2 To 100 isprime = True k = 2 Do While k m Then n = m m = a(k) ElseIf a(k) n And a(k) ch Then strbuf = strbuf Next kEnd Sub 程序运行时的输出是(分数:2.00)A.27 24 41 64 98 58 B.64 24 98 27 58 41C.24 27 41 58 64 98D.98 64 58 41 27 24解析:解析:第一个 For 循环对 x 数组
33、元素赋初值。被赋的值根据下标,从 b 数组中获取。而 x 的下标从数组 a 中的元素获得。注意 Option Base 1 的影响,下标从 1 开始。因此 x 数组中的值实际上是按照 a 数组中值进行了一个重新排序。即 x(1)是数组 b 中第 4 个元素的值:27,其它值以此类推。选 A)。37.由高中数学可知,对于连续函数 f(x),若 f(x1)与 f(x2)值的符号相反,则在 x1 和 x2 之间必存在x0,使得 f(x0)=0(该点称为“零点“)。设有 VB 函数:Private Function f(x As Single) As Single 可以返回 f(x)的值(函数体没有给
34、出)。下面程序的功能是从键盘输入 2 个实数 x1、x2,判断在 x1、x2之间是否存在零点。Private Sub Command1_Click() Dim x1 As Single, x2 As Single x1 = InputBox(“请输入一个实数 x1“) x2 = InputBox(“请再输入一个实数 x2“) If ( _ ) Then Print “在“; x1; “与“; x2; “之间存在零点“ Else Print “不能确定在“; x1; “与“; x2; “之间是否存在零点“ End IfEnd SubPrivate Function f(x As Single)
35、As Single End Function 为使上面程序可以实现该功能,程序代码中横线处应填写的代码是(分数:2.00)A.f(x1) 0 Or f(x2) 0B.f(x1) 0 And f(x2) 0C.f(x1) * f(x2) 0 D.f(x1) * f(x2) 0解析:解析:判断 x1 和 x2 之间是否存在零点的条件是 x1 和 x2 符号相反。即 x1 和 x2 的积是负数。函数f 可以返回 f(x)的值,因此满足上述条件的表达式是 f(x1) * f(x2) 0,选 C)。38.设窗体上有 3 个图像框:Image1、Image2、Image3,并有下面的程序代码:Privat
36、e Sub Form_Load() Image1.Picture = LoadPicture(“LEAF.bmp“) Image2.Picture = LoadPicture(“OPEN.bmp“) Image3.Visible = FalseEnd SubPrivate Sub Image1_Click() Image2.Picture = Image1.PictureEnd SubPrivate Sub Image2_Click() Image3.Picture = Image2.Picture Image2.Picture = Image1.Picture Image1.Picture
37、= Image3.PictureEnd Sub 在程序运行期间单击 Image2,则在窗体上看到的结果是(分数:2.00)A.在 Image3 中显示 Image2 中的图片B.Image1、Image2 中原有图片被交换了 C.Image1、Image2 中都是原来 Imege1 中的图片D.Image1、Image2 中都是原来 Imege2 中的图片解析:解析:Form_Load 过程中在图相框里载入相应图片。点击 Image2 时,激发 Image2_Click 事件,在事件中图片进行了交换。选 B)。39.设窗体上有一个名称为 List1 的列表框和一个名称为 Check1 的复选框
38、数组(下标从 0 开始)。程序运行时,单击某个复选框,如果列表框中没有该复选框的标题,则把该复选框的标题添加到列表框中,否则从列表框中把该复选框标题删除。Private Sub Check1_Click(Index As Integer) For k = 0 To List1.ListCount - 1 If Check1(Index).Caption = List1.List(k) Then Exit For End If Next k If k = r Then flag = 0 End If End If End Sub 运行程序后产生的结果是(分数:2.00)A.圆逐渐缩小,再逐渐增大,然后再逐渐缩小,依此往复 B.圆一直在缩小C.圆每隔 0.5 秒向右移动一次D.圆每隔 1 秒向下移动一次解析:解析:Form_Load 过程中设定 timer 事件定时触发;在 Timer1_Timer 过程中,圆圈先变小后变大,然后退出。下一次 timer 事件触发时继续这个过程。因此,选 A)。