1、二级 VISUAL+BASIC 笔试-417 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.下列数据结构中,属于非线性结构的是( )A循环队列 B带链队列 C二叉树 D带链栈(分数:2.00)A.B.C.D.2.下列数据结构中,能够按照“先进后出”原则存取数据的是( )A循环队列 B栈 C队列 D二叉树(分数:2.00)A.B.C.D.3.对于循环队列,下列叙述中正确的是( )A队头指针是固定不变的 B队头指针一定大于队尾指针C队头指针一定小于队尾指针 D队头指针可以大于队尾指针,也可以小于队尾指针(分数:2.00)A.B.C.D.4.算
2、法的空间复杂度是指( )A算法在执行过程中所需要的计算机存储空间 B算法所处理的数据量C算法程序中的语句或指令条数 D算法在执行过程中所需要的临时工作单元数(分数:2.00)A.B.C.D.5.软件设计中划分模块的一个准则是( )A低内聚低耦合 B高内聚低耦合C低内聚高耦合 D高内聚高耦合(分数:2.00)A.B.C.D.6.下列选项中不属于结构化程序设计原则的是( )A可封装 B自顶向下C模块化 D逐步求精(分数:2.00)A.B.C.D.7.软件详细设计产生的图如下:该图是( )(分数:2.00)A.B.C.D.8.数据库管理系统是( )A操作系统的一部分 B在操作系统支持下的系统软件C一
3、种编译系统 D一种操作系统(分数:2.00)A.B.C.D.9.在 ER 图中,用来表示实体联系的图形是( )A椭圆形 B矩形C菱形 D三角形(分数:2.00)A.B.C.D.10.有三个关系 RS 和 T 如下:(分数:2.00)A.B.C.D.11.以下变量名中合法的是( )Ax2-1 Bprint Cstr_n D2x(分数:2.00)A.B.C.D.12.把数学表达式 5x+32y=6 表示为正确的 VB 表达式应该是( )A(5x+3)/(2y 一 6) Bx*5+3/2*y-6C(5*x+3)(2*y-6) D(x*5+3)/(y*2-6)(分数:2.00)A.B.C.D.13.下
4、面有关标准模块的叙述中,错误的是( )A标准模块不完全由代码组成,还可以有窗体B标准模块中的 Private 过程不能被工程中的其他模块调用C标准模块的文件扩展名为.basD标准模块中的全局变量可以被工作中任何模块引用(分数:2.00)A.B.C.D.14.下面控件中,没有 Caption 属性的是( )A复选框 B单选按钮 C组合框 D框架(分数:2.00)A.B.C.D.15.用来设置文字字体是否斜体的属性是( )AFontUnderline BFontBoldCFontSlope DFontItalic(分数:2.00)A.B.C.D.16.若看到程序中有以下事件过程,则可以肯定的是,当
5、程序运行时( )Private Sub Click_MouseDown(Button As Integer,Shift As Integet,X As Single,Y As Single)Print“VB Program“End SubA用鼠标左键单击名称为“Command1”的命令按钮时,执行此过程B用鼠标左键单击名称为“MouseDown”的命令按钮时,执行此过程C用鼠标右键单击名称为“MouseDown“的命令按钮时,执行此过程D用鼠标左键或右键单击名称为“Click“的命令按钮时,执行此过程(分数:2.00)A.B.C.D.17.可以产生 30-50(含 30 和 50)之间的随机整
6、数的表达式是( )AInt(Rnd*21+30) BInt(Rnd*20+30)CInt(Rnd*50-Rnd*30) DInt(RND*30+50)(分数:2.00)A.B.C.D.18.在程序运行时,下面的叙述中正确的是( )A用鼠标右键单击窗体中任何无控件部分,会执行窗体的 Form_Load 事件过程B用鼠标左键单击窗体的标题栏,会执行窗体的 Form_Click 事件过程C只装入而不显示窗体,也会执行窗体的 Form_Load 事件过程D装入窗体后每次显示该窗体时,都会执行窗体的 Form_Click 事件过程(分数:2.00)A.B.C.D.19.窗体上有名称为 Command1
7、的命令按钮和名称为 Texl1 的文本框Private Sub Command1_Click()Text1.Text=“程序设计“Text.1.SeFocusEnd SubPrivate Sub Text1_GotFocus()Text1.Text=“等级考试“End Sub运行以下程序,单击命令按钮后( )A文本框中显示的是“程序设计”,且焦点在文本框中B文本框中显示的是“等级考试”,且焦点在文本框中C文本框中显示的是“程序设计”,且焦点在命令按钮上D文本框中显示的是“等级考试”,且焦点在命令按钮上(分数:2.00)A.B.C.D.20.窗体上有名称为 Option1 的单选按钮,且程序中有
8、语句:If Option1.Value=True Then下面语句中与该语句不等价的是( )AIf Option1.Value Then BIf Option1.True ThenCIf Value=True Then DIf Optionl Then(分数:2.00)A.B.C.D.21.设窗体上有 1 个水平滚动条,已经通过属性窗口把它的 Max 属性设置为 1,Min 属性设置为 100。下面叙述中正确的是( )A程序运行时,若使滚动块向左移动,滚动条的 Value 属性值就增加B程序运行时,若使滚动块向左移动,滚动条的 Value 属性值就减少C由于滚动条的 Max 属性值小于 Min
9、 属性值,程序会出错D由于滚动条的 Max 属性值小于 Min 属性值,程序运行时滚动条的长度会缩为一点,滚动块无法移动(分数:2.00)A.B.C.D.22.有如下过程代码:Sub var_dim()static numa As IntegerDim numb As Integernuma=nuna+2numb=numb+1print numa;mubEnd Sub连续 3 次调用 var_dim 过程,第 3 次调用时的输出是( )A2 1 B2 3 C6 1 D6 3(分数:2.00)A.B.C.D.23.在窗体上画 1 个命令按钮,并编写如下事件过程:private Sub Comma
10、nd1_Click()For i=5 To 1 Step-0.8Print Int(i);Next iEnd Sub运行程序,单击命令按钮,窗体上显示的内容为( )A5 4 3 2 1 1 B5 4 3 2 1C4 3 2 1 1 D4 4 3 2 1 1(分数:2.00)A.B.C.D.24.在窗体上画 1 个命令按钮,并编写如下事件过程:Private Sub Command1_Click()Dim a(3,3)For m=1 To 3For n=1 To 3If n=m or n=4-m Thena(m,n)=m+nElsea(m,n)=0End IfPrint a(m,n);Next
11、nPtintNext mEnd Sub运行程序,单击命令按钮,窗体上显示的内容为( )A2 0 0 0 4 0 0 0 6B2 0 40 4 0 4 0 6C2 3 03 4 0 0 0 6D2 0 00 4 50 5 6(分数:2.00)A.B.C.D.25.设有以下函数过程:Function fun(a As Integer,b As Integer)Dim c As IntegerIf ab ThenC=a:a=b:b=CEnd Ifc=0Doc=c+aLoop Until c Mod b=0fun=cEnd Function若调用函数 fun 时的实际参数都是自然数,则函数返回的是(
12、)Aa、b 的最大公约数 Ba、b 的最小公倍数Ca 除以 b 的余数 Da 除以 b 的商的整数部分(分数:2.00)A.B.C.D.26.窗体上有 1 个名称为 Text1 的文本框;1 个名称为 Timer1 的计时器控件,其 Interval 属性值为5000,Enabled 属性值是 True。Timer1 的事件过程如下:Private Sub Timer1_Timer()Static Flag As IntegerIf Flag=0 Then Flag=1Flag=-FlagIf Flag=1 ThenText1.ForeColor=HFF HFF为红色ElseText1.For
13、eColor=HCOO HCOO为绿色End IfEnd Sub以下叙述中正确的是( )A每次执行此事件过程时,Flag 的初始值均为 0BFlag 的值只可能取 0 或 1C程序执行后,文本框中的文字每 5 秒改变一次颜色D程序有逻辑错误,Else 分支总也不能被执行(分数:2.00)A.B.C.D.27.为计算 1+2+22+23+24+210 的值,并把结果显示在文本框 Text1 中,若编写如下事件过程:Private Sub Command1_Click()Dim a%,s%,k%s=1a=2For k=2 To 10a=a*2s=s+aNext kText1.Text=SEnd S
14、ub执行此事件过程后发现结果是错误的,为能够得到正确结果,应做的修改是( )A把 s=1 改为 s=0B把 For k=2 To 10 改为 For k=1 To 10C交换语句 s=s+a 和 a=a*2 的顺序D同时进行 B、C 两种修改(分数:2.00)A.B.C.D.28.标准模块中有如下程序代码:Public x As Integer,y As IntegerSub var_pub()x=10;y=20End Sub在窗体上有 1 个命令按钮,并有如下事件过程:Private Sub Command1_Click()Dim x As IntegerCall var_pubx=x+10
15、0y=y+100Print x;yEnd Sub运行程序后单击命令按钮,窗体上显示的是( )A100 100 B100 120 C110 100 D110 120(分数:2.00)A.B.C.D.29.设 a、b 都是自然数为求 a 除以 b 的余数,某人编写了以下函数:Function fun(a As Integer,b As Integer)While abaa-bWendfunaEnd Function在调试时发现函数是错误的。为使函数能产生正确的返回值,应做的修改是( )A把 aa-b 改为 a=b-a B把 aa-b 改为 aa/bC把 While ab 改为 while ab D
16、把 While ab 改为 While ab(分数:2.00)A.B.C.D.30.下列关于通用对话框 CommonDialog1 的叙述中,错误的是( )A只要在“打开”对话框中选择了文件,并单击“打开”按钮,就可以将选中的文件打开B使用 CommoDialog1.ShowColor 方法,可以显示“颜色”对话框CCancelError 属性用于控制用户单击“取消”按钮关闭对话框时,是否显示出错警告D在显示“字体”对话框前,必须先设置 CommonDialog1 的 Flags 属性,否则会出错(分数:2.00)A.B.C.D.31.在利用菜单编辑设计菜单时,为了把组合键“Alt+X”设置为
17、“退出(X)”菜单项的访问键,可以将该菜单项的标题设置为( )A退出(XmubEnd Sub连续 3 次调用 var_dim 过程,第 3 次调用时的输出是( )A2 1 B2 3 C6 1 D6 3(分数:2.00)A.B.C. D.解析:解析 Static 是将变量声明为静态变量,每次调用值会取上次调用后的值。而 numb 是局部变量,每次会重新初始化,所以应选 C 选项。23.在窗体上画 1 个命令按钮,并编写如下事件过程:private Sub Command1_Click()For i=5 To 1 Step-0.8Print Int(i);Next iEnd Sub运行程序,单击命
18、令按钮,窗体上显示的内容为( )A5 4 3 2 1 1 B5 4 3 2 1C4 3 2 1 1 D4 4 3 2 1 1(分数:2.00)A. B.C.D.解析:解析 Step 可以设置 For 循环的步长,所以程序执行 6 次,Int(i)是求不大于自变量 i 的最大整数。24.在窗体上画 1 个命令按钮,并编写如下事件过程:Private Sub Command1_Click()Dim a(3,3)For m=1 To 3For n=1 To 3If n=m or n=4-m Thena(m,n)=m+nElsea(m,n)=0End IfPrint a(m,n);Next nPtin
19、tNext mEnd Sub运行程序,单击命令按钮,窗体上显示的内容为( )A2 0 0 0 4 0 0 0 6B2 0 40 4 0 4 0 6C2 3 03 4 0 0 0 6D2 0 00 4 50 5 6(分数:2.00)A.B. C.D.解析:解析 本题考查了嵌套的 For 循环,答案为 B 选项。25.设有以下函数过程:Function fun(a As Integer,b As Integer)Dim c As IntegerIf ab ThenC=a:a=b:b=CEnd Ifc=0Doc=c+aLoop Until c Mod b=0fun=cEnd Function若调用函
20、数 fun 时的实际参数都是自然数,则函数返回的是( )Aa、b 的最大公约数 Ba、b 的最小公倍数Ca 除以 b 的余数 Da 除以 b 的商的整数部分(分数:2.00)A.B. C.D.解析:解析 本题考查了 Do Loop 循环,实现的是最小公倍数。本题中 If 语句实现了 a 和 b 交换。26.窗体上有 1 个名称为 Text1 的文本框;1 个名称为 Timer1 的计时器控件,其 Interval 属性值为5000,Enabled 属性值是 True。Timer1 的事件过程如下:Private Sub Timer1_Timer()Static Flag As IntegerI
21、f Flag=0 Then Flag=1Flag=-FlagIf Flag=1 ThenText1.ForeColor=HFF HFF为红色ElseText1.ForeColor=HCOO HCOO为绿色End IfEnd Sub以下叙述中正确的是( )A每次执行此事件过程时,Flag 的初始值均为 0BFlag 的值只可能取 0 或 1C程序执行后,文本框中的文字每 5 秒改变一次颜色D程序有逻辑错误,Else 分支总也不能被执行(分数:2.00)A.B.C. D.解析:解析 Static 是将变量声明为静态变量,每次调用值会取上次调用后的值。计时器的 Interval属性为计时器记时间隔。
22、27.为计算 1+2+22+23+24+210 的值,并把结果显示在文本框 Text1 中,若编写如下事件过程:Private Sub Command1_Click()Dim a%,s%,k%s=1a=2For k=2 To 10a=a*2s=s+aNext kText1.Text=SEnd Sub执行此事件过程后发现结果是错误的,为能够得到正确结果,应做的修改是( )A把 s=1 改为 s=0B把 For k=2 To 10 改为 For k=1 To 10C交换语句 s=s+a 和 a=a*2 的顺序D同时进行 B、C 两种修改(分数:2.00)A.B.C.D. 解析:解析 本题程序利用了
23、“1+2+22+2n“=2*(1+2+22+2n-1)+1,所以应同时进行 B 和 C 两种修改。28.标准模块中有如下程序代码:Public x As Integer,y As IntegerSub var_pub()x=10;y=20End Sub在窗体上有 1 个命令按钮,并有如下事件过程:Private Sub Command1_Click()Dim x As IntegerCall var_pubx=x+100y=y+100Print x;yEnd Sub运行程序后单击命令按钮,窗体上显示的是( )A100 100 B100 120 C110 100 D110 120(分数:2.00
24、)A.B.C.D. 解析:解析 本题考查的是变量的作用域。在 Call var_pub 中使用的是全局变量 x,局部变量 x 的改变。29.设 a、b 都是自然数为求 a 除以 b 的余数,某人编写了以下函数:Function fun(a As Integer,b As Integer)While abaa-bWendfunaEnd Function在调试时发现函数是错误的。为使函数能产生正确的返回值,应做的修改是( )A把 aa-b 改为 a=b-a B把 aa-b 改为 aa/bC把 While ab 改为 while ab D把 While ab 改为 While ab(分数:2.00)
25、A.B. C.D.解析:解析 求余运算符为“/”。30.下列关于通用对话框 CommonDialog1 的叙述中,错误的是( )A只要在“打开”对话框中选择了文件,并单击“打开”按钮,就可以将选中的文件打开B使用 CommoDialog1.ShowColor 方法,可以显示“颜色”对话框CCancelError 属性用于控制用户单击“取消”按钮关闭对话框时,是否显示出错警告D在显示“字体”对话框前,必须先设置 CommonDialog1 的 Flags 属性,否则会出错(分数:2.00)A. B.C.D.解析:解析 在“打开”对话框中单击“打开”按钮能够返回文件路径,但不打开文件,将选中的文件
26、打开需要在程序中另行处理。31.在利用菜单编辑设计菜单时,为了把组合键“Alt+X”设置为“退出(X)”菜单项的访问键,可以将该菜单项的标题设置为( )A退出(X&) B退出(&X) C退出(X#)D退出(#X)(分数:2.00)A.B. C.D.解析:解析 组合键的设置是在标题的相应字母前加“&”符。32.在窗体上画 1 个命令按钮和 1 个文本框,其名称为 Command1 和 Text1,再编写如下程序:Dim ss As StringPrivate Sub Text1_KeyPress(KeyAscii As Integer)If Chr(KeyAscii)“ “Then ss=ss+
27、Chr(KeyAscii)End SubPrivate Sub Command1_Click()Dim m As String,i As IntegerFor i=Len(ss) To 1 Step-1m=m+Mid(ss,i,1)NextText1.Text=UCase(m)End Sub程序运行后,在文本框中输入“Number 100”,并单击命令按钮,则文本框中显示的就是( )ANUMBER 100 BREBMUNCREBMUN 100 D001 REBMUN(分数:2.00)A.B.C.D. 解析:解析 本题是从后往前依次取 ss 的字符加到 m 后,起到了逆序输出的作用。33.窗体的
28、左右两端各有一条直线,名称分别为 Line1、Line2;名称为 Shape1 的圆靠在左边的 Line1 直线上(见下图);另有 1 个名称为 Timer1 的计时器控件,其 Enabled 属性值是 True。要求程序运行后,圆每秒向右移动 100,当圆遇到 Line2 时则停止移动。为实现上述功能,某人把计时器的 Interval 属性设置为 1000,并编写了如下程序:Private Sub Timer1_Timer()For k=Lind1.X1 To Line2.X1 Step 100If Shape1.Left+Shape1.widthLine2.X1 ThenShape1.Le
29、ft=Shape1.Left+100End IfNext k End Sub(分数:2.00)A.B. C.D.解析:解析 计时器的 Interval 属性为计时器记时间隔,具有自动触发的功能,每一次触发都会调用Timer 事件(实现类似循环的效果),所以不应该再在里面写上该 For 循环。34.下列有关文件叙述中,正确的是( )A以 Output 方式打开一个不存在的文件时,系统将显示出错信息B以 APPend 方式打开的文件,既可以进行读操作,也可以进行写操作C在随机文件中,每个记录的长度是固定的D无论是顺序文件还是随机文件,其打开的语句和打开方式都是完全相同的(分数:2.00)A.B.C
30、. D.解析:解析 随机文件的记录是定长的。35.窗体如下图左图所示。要求程序运行时,在文本框 Text1 中输入一个姓氏,单击“删除”按钮(名称为Command1),则可删除列表框 List1 中所有该姓氏的项目。若编写以下程序来实现如此功能:Private Sub Command1_Click()Dim n%,k%n=Len(Text1.Text)For k=0 T0 List1.ListCount-1If Left(List1.List(k),n)=Text1.Text ThenList1.RemoveItem kEnd IfNext kEnd Sub在调试时发现,如输入“陈”,可以正确
31、删除所有姓“陈”的项目,但输入“刘”,则只删除了“刘邦”、“刘备”2 项,结果如下图右图所示。这说明程序不能适应所有情况,需要修改。正确的修改方案是把 For k=0 To List1.ListCount-1 改为( )。(分数:2.00)A. B.C.D.解析:解析 在执行 RemoveItem 时,会改变该序号 Item 之后的列表内容的序号,因此,循环删除应从后向前操作。二、填空题(总题数:9,分数:30.00)36.某二叉树有 5 个度为 2 的结点以及 3 个度为 1 的结点,则该二叉树中共有 1 个结点。(分数:3.00)填空项 1:_ (正确答案:14)解析:解析 叶子结点总是比
32、度为 2 的结点多一个。所以具有 5 个度为 2 的结点的二叉树有 6 个叶子结点。总结点数=6 个叶子结点+5 个度为 2 的结点+3 个度为 1 的结点=14 个结点。37.程序流程图中的菱形框表示的是 1。(分数:3.00)填空项 1:_ (正确答案:逻辑处理)解析:解析 程序流程图的主要元素:(1)方框:表示一个处理步骤。(2)菱形框:表示一个逻辑处理。(3)箭头:表示控制流向。38.软件开发过程主要分为需求分析、没计、编码与测试四个阶段,其中 1 阶段产生“软件需求规格说明书”。(分数:2.00)填空项 1:_ (正确答案:需求分析)解析:解析 软件需求规格说明书是在需求分析阶段产生
33、的。39.在数据库技术中,实体集之间的联系可以是一对一或一对多或多对多的,那么“学生”和“可选课程”的联系为 1。(分数:2.00)填空项 1:_ (正确答案:多对多)解析:解析 每个“学生”有多个“可选课程”可对应,每个“可选课程”有多个“学生”可对应。40.人员基本信息一般包括:身份证号,姓名,性别,年龄等。其中可以作为主关键字的是 1。(分数:2.00)填空项 1:_ (正确答案:身份证号)解析:解析 主关键字的要求必须是不可重复的,只有身份证号能够满足这个条件。41.工程中有 Form1、Form2 两个窗体。Form1 窗体外观如下图左图所示。程序运行时,在 Form1 中名称为Te
34、xt1 的文本框中输入一个数值(圆的半径),然后单击命令按钮“计算并显示”(其名称为 Command1),则显示 Form2 窗体,且根据输入的圆半径计算圆的面积,并在 Form2 的窗体上显示出来,如下图右图所示。如果单击命令按钮时,文本框中输入的不是数值,则用信息框显示“请输入数值数据”。请填空。(分数:4.00)填空项 1:_ (正确答案:Text1.Text Text1.Text Form2)解析:解析 第一空:判断输入内容是否为数字,第二空:取得输入的半径值,第三空:在 Form2 上显示结果。42.设有整型变量 S,取值范围为 0100,表示学生的成绩。有如下程序序段:If s90
35、 ThenLevel=“A“Else If s=75 ThenLevel=“B“Else If s=60 ThenLevel=“C“ElseLevel=“D“End If下面用 Select Case 结构改写上述程序,使两段程序所实现的功能完全相同。请填空。Select Case sCase_90Level=“A“Case 75 To 89Level=“B“Case 60 To 74Level=“C“Case_Level=“D“_(分数:6.00)填空项 1:_ (正确答案:Is Else End Select)解析:解析 情况语句表达式列形式可以是:(1)表达式,表达式,(2)表达式 To
36、 表达式,(3)Is 关系运算表达式。43.窗体上有名称为 Command1 的命令按钮事件过程及 2 个函数过程如下:Private Sub Command1_Click()Dim x As Integer,y As Integer,zx=3y=5z=fy(y)Print fx(fx(x),yEnd SubFunction fx(ByVal a As Integer)a=a+afx=aEnd Functionfy=aFunction fy(ByRef a As Integer)a=a+afy=aEnd Function运行程序,并单击命令按钮,则窗体上显示的 2 个值依次是_和_。(分数:4
37、.00)填空项 1:_ (正确答案:12 10)解析:解析 本题考查了参数传递的传值与传地址的区别。44.窗体有名称为 Command1 的命令按钮及名称为 Text1、能显示多行文本的文本框。程序运行后,如果单击命令按钮,则可打开磁盘文件 c:/test.txt,并将文件中的内容(多行文本)显示在文本框中。下面是实现此功能的程序,请填空。Private Sub Command1_Click()Text1=“ “Number=FreeFileOpen“c:/test.tXt“For Input As NumberDo while Not EOF(_)Line Input # Number,sText1.Text=Text1.Text+_+Chr(13)+Chr(10)LoopClose NumberEnd Sub(分数:4.00)填空项 1:_ (正确答案:Number S)解析:解析 本题考查了文件操作,第一空:判断是否是文件末尾,第二空:将文件一行内容追加到文本框上,并换行。