1、二级 VISUAL+BASIC-51 (1)及答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:40,分数:100.00)1.下列关于栈叙述正确的是_。 A.栈顶元素最先能被删除 B.栈顶元素最后才能被删除 C.栈底元素永远不能被删除 D.栈底元素最先被删除(分数:3.00)A.B.C.D.2.下列叙述中正确的是_。 A.在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化 B.在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化 C.在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化 D.以上说法都不正确(分数:3.00)A.B.C.D.3.某二叉树共有
2、 7 个结点,其中叶子结点只有 1 个,则该二叉树的深度为(假设根结点在第 1 层)_。 A.3 B.4 C.6 D.7(分数:3.00)A.B.C.D.4.软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是_。 A.学生成绩管理系统 B.C 语言编译程序 C.UNIX 操作系统 D.数据库管理系统(分数:3.00)A.B.C.D.5.结构化程序所要求的基本结构不包括_。 A.顺序结构 B.GOTO 跳转 C.选择(分支)结构 D.重复(循环)结构(分数:3.00)A.B.C.D.6.下面描述中错误的是_。 A.系统总体结构图支持软件系统的详细设计 B.软件设计
3、是将软件需求转换为软件表示的过程 C.数据结构与数据库设计是软件设计的任务之一 D.PAD 图是软件详细设计的表示工具(分数:3.00)A.B.C.D.7.负责数据库中查询操作的数据库语言是_。 A.数据定义语言 B.数据管理语言 C.数据操纵语言 D.数据控制语言(分数:3.00)A.B.C.D.8.-个教师可讲授多门课程,一门课程可由多个教师讲授。则实体教师和课程间的联系是_。 A.1:1 联系 B.1:m 联系 C.m:1 联系 D.m:n 联系(分数:3.00)A.B.C.D.9.有三个关系 R、S 和 T 如下:则由关系 R 和 S 得到关系 T 的操作是_。(分数:3.00)A.B
4、.C.D.10.定义无符号整数类为 UInt,下面可以作为类 UInt 实例化值的是_。 A.-369 B.369 C.0.369 D.整数集合1,2,3,4,5)(分数:3.00)A.B.C.D.11.VB 中有这样一类文件:该文件不属于任何一个窗体,而且仅包含程序代码,这类文件的扩展名是_。 Avbp Bbas Cvbw Dfrm(分数:3.00)A.B.C.D.12.能够产生 1 到 50 之间(含 1 和 50)随机整数的表达式是_。 A.Int (Rnd*51) B.Int (Rnd (50)+1) C.Int (Rnd*50) D.Int (Rnd*50+1)(分数:3.00)A.
5、B.C.D.13.要求如果 x 被 7 除余 2,则输出 x 的值,下列语句中不能实现此功能的语句是_。 A.If x mod 7=2 Then Print x B.If x-(x/7)*7-2 Then Print x C.If x-(x/7)*7=2 Then Print x D.If x-lnt(x/7)*7-2 Then Print x(分数:3.00)A.B.C.D.14.表达式 Sgn (0.25)的值是_。 A.-1 B.0 C.1 D.0.5(分数:3.00)A.B.C.D.15.如下关于变体类型变量的叙述中,错误的是_。 A.变体类型数组中只能存放同类型数据 B.使用 Arr
6、ay 初始化的数组变量,必须是 Variant 类型 C.没有声明而直接使用的变量其默认类型均是 Variant D.在同一程序中,变体类型的变量可以被多次赋以不同类型的数据(分数:3.00)A.B.C.D.16.满足下列条件之一的年份是闰年:1)年份能被 4 整除但不能被 100 整除2)年份能被 400 整除若 y 代表年份,下面判断闰年的正确表达式是_。 A.y Mod 4 And y Mod 100 0r y Mod 400 B.y Mod 4=0 0r y Mod 1000 And y Mod 400=0 C.y Mod 1000 And(y Mod 4=0 0r y Mod 400
7、=0) D.y Mod 4=0 And y Mod 1000 0r y Mod 400=0(分数:2.00)A.B.C.D.17.以下关于键盘事件的叙述中,错误的是_。 A.按下键盘按键既能触发 KeyPress 事件,也能触发 KeyDown 事件 B.KeyDown、KeyUp 事件过程中,大、小写字母被视作相同的字符 C.KeyDown、KeyUp 事件能够识别 Shift、Alt、Ctrl 等键 D.KeyCode 是 KeyPress 事件的参数(分数:2.00)A.B.C.D.18.以下关于窗体的叙述中错误的是_。 A.窗体的 Hide 方法将窗体隐藏并卸载 B.窗体的 Show
8、方法可以将窗体装入内存并显示该窗体 C.若工程中包含多个窗体,则可指定一个为启动窗体 D.窗体的 Load 事件在加载窗体时发生(分数:2.00)A.B.C.D.19.如果在窗体模块中所有程序代码的前面有语句:Dim x,则 x 是_。 A.全局变量 B.局部变量 C.静态变量 D.窗体级变量(分数:2.00)A.B.C.D.20.计算下面分段函数的正确语句是_。(分数:2.00)A.B.C.D.21.以下关于事件、事件驱动的叙述中,错误的是_。 A.事件是可以由窗体或控件识别的操作 B.事件可以由用户的动作触发 C.一个操作动作只能触发一个事件 D.事件可以由系统的某个状态的变化而触发(分数
9、:2.00)A.B.C.D.22.要删除列表框中最后一个列表项,正确的语句是_。 A.List1.Removeltem ListCount B.List1.Removeltem List1.ListCount C.List1.Removeltem ListCount-1 D.List1.Removeltem List1.ListCount-1(分数:2.00)A.B.C.D.23.在菜单编辑器中建立如下图所示的菜单,并为了每个菜单项编写了鼠标单击事件过程。(分数:2.00)A.B.C.D.24.以下关于通用对话框的叙述中,错误的是_。 A.在程序运行状态下,通用对话框控件是不显示的 B.通用对
10、话框控件是 Visual Basic 的标准控件 C.设计时,通用对话框控件的大小是固定的,不能改变 D.在同一个程序中,一个通用对话框控件可以作为打开、保存等多种对话框(分数:2.00)A.B.C.D.25.设工程中有 Form1、Form2 两个窗体,要求单击 Form2 上的 Commandl 命令按钮,Form2 就可以从屏幕上消失,下面的事件过程中不能实现此功能的是_。 A.Private Sub Commandl_Click() Form2.Hide End Sub B.Private Sub Commandl_Click() Unload Me End Sub C.Private
11、 Sub Commandl_Click () Form2.Unload End Sub D.Private Sub Commandl_Click() Me.Hide End Sub(分数:2.00)A.B.C.D.26.向文本框中输入字符时,下面能够被触发的事件是_。 A.GotFocus B.KeyPress C.Click D.MouseDown(分数:2.00)A.B.C.D.27.若要把窗体上命令按钮 Commandl 的状态设置为不可用,应该执行的命令是_。 A.Commandl.Enabled=False B.Commandl.Visible=False C.Commandl.Ca
12、ncel=False D.Commandl.Default=False(分数:2.00)A.B.C.D.28.窗体上有一个名称为 VScroll1 的滚动条,当用鼠标拖动滚动条中的滚动块时,触发的事件是_。 A.Click B.KeyDown C.DragDrop D.Scroll(分数:2.00)A.B.C.D.29.关于 KeyPress 事件,以下叙述中正确的是_。 A.在控件数组的控件上按键盘键,不能触发 KeyPress 事件 B.按下键盘上任一个键时,都能触发 KeyPress 事件 C.按字母键时,拥有焦点的控件的 KeyPress 事件会被触发 D.窗体没有 KeyPress
13、事件(分数:2.00)A.B.C.D.30.窗体上有一个名称为 Text1 的文本框;一个名称为 Timer1 的计时器控件,其 Interval 属性值为5000,Enabled 属性值是 True。Timer1 的事件过程如下:Private Sub Timer1_Timer()Static flag As IntegerIf flag=0 Then flag=1flag=-flagIf flag=1 ThenText1.ForeColor=yEnd Sub运行程序后单击命令按钮,窗体上显示的是_。 A.100 100 B.100 120 C.110 100 D.110 120(分数:2.
14、00)A.B.C.D.33.设 a、b 都是自然数,为求 a 除以 b 的余数,某人编写了以下函数:Function fun(a As Integer,b As Integer)While aba=a-bWendfun=aEnd Function在调试时发现函数是错误的。为使函数能产生正确的返回值,应做的修改是_。 A.把 a=a-b 改为 a=b-a B.把 a=a-b 改为 a=a/b C.把 While ab 改为 While ab D.把 While ab 改为 While a-b(分数:2.00)A.B.C.D.34.在窗体上画 1 个命令按钮和 1 个文本框,其名称分别为 Comm
15、andl 和 Text1,再编写如下程序:Dim ss As StringPrivate Sub Text1 KeyPress (KeyAscii As Integer)If Chr (KeyAscii)“Then ss=ss+Chr (KeyAscii)End SubPrivate Sub Commandl_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”,并单击命令按钮,则文本
16、框中显示的是_。 A.NUMBER 100 B.REBMUN C.REBMUN 100 D.001 REBMUN(分数:2.00)A.B.C.D.35.窗体的左右两端各有 1 条直线,名称分别为 Line1、Line2;名称为 Shapel 的圆靠在左边的 Line1 直线上(见图);另有 1 个名称为 Timer1 的计时器控件,其 Enabled 属性值是 True。要求程序运行后,圆每秒向右移动 100,当圆遇到 Line2 时则停止移动。(分数:2.00)A.B.C.D.36.窗体如图 1 所示。要求程序运行时,在文本框 Text1 中输入一个姓氏,单击“删除”按钮(名称为Comman
17、dl),则可删除列表框 List1 中所有该姓氏的项目。若编写以下程序来实现此功能:Private Sub Commandl_Click()Dim n%,k%n=Len (Text1.Text)For k=0 To List1.ListCount-1If Left (List1.List(k),n)=Text1.Text ThenList1.Removeltem kEnd IfNext kEnd Sub在调试时发现,如输入“陈”,可以正确删除所有姓“陈”的项目,但输入“刘”,则只删除了“刘邦”、“刘备”2 项,结果如图 2 所示。这说明程序不能适应所有情况,需要修改。正确的修改方案是把 For
18、 k=0 To List1.ListCount-1 改为_。(分数:3.00)A.B.C.D.37.窗体上有一个 Text1 文本框,一个 Commandl 命令按钮,并有以下程序:Private Sub commandl_Click ()Dim nIf Text1.Text“123456“Thenn=n+1Print“口令输入错误“yEnd Sub运行程序后单击命令按钮,窗体上显示的是_。 A.100 100 B.100 120 C.110 100 D.110 120(分数:2.00)A.B. C.D.解析:解析 在标准模块中定义的使用 Public 定义的变量是全局变量,全局变量可以在工程
19、的每个模块、每个过程中使用。如果在过程中有与全局变量同名的过程变量则优先使用过程变量。在命令按钮事件中定义了局部变量 x,与全局变量同名,因此在此事件中使用局部变量,而变量 y 在此过程中没有定义,则仍使用全局变量。因此输出时 x 值为 100,y 值为 120。33.设 a、b 都是自然数,为求 a 除以 b 的余数,某人编写了以下函数:Function fun(a As Integer,b As Integer)While aba=a-bWendfun=aEnd Function在调试时发现函数是错误的。为使函数能产生正确的返回值,应做的修改是_。 A.把 a=a-b 改为 a=b-a B
20、.把 a=a-b 改为 a=a/b C.把 While ab 改为 While ab D.把 While ab 改为 While a-b(分数:2.00)A.B.C.D. 解析:解析 程序中没有考虑余数为 0 的情况,即,条件中应该有 a=b,则 a=a-b,这样才能正确得到余数 0。因此程序中应该修改 While 的条件 ab 为 a-b。34.在窗体上画 1 个命令按钮和 1 个文本框,其名称分别为 Commandl 和 Text1,再编写如下程序:Dim ss As StringPrivate Sub Text1 KeyPress (KeyAscii As Integer)If Chr
21、(KeyAscii)“Then ss=ss+Chr (KeyAscii)End SubPrivate Sub Commandl_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”,并单击命令按钮,则文本框中显示的是_。 A.NUMBER 100 B.REBMUN C.REBMUN 100 D.001 REBMUN(分数:2.00)A.B.C.D. 解析:解析 题目中程序是将 ss 字
22、符串进行反向排列,并放到 m 中去。其中 Number 空格后的 100 被当成字符串来处理,最后结果是将“Number 100”反向排列,并通过 UCase()函数将所有字母转换成大写,得到 001 REBMUN。35.窗体的左右两端各有 1 条直线,名称分别为 Line1、Line2;名称为 Shapel 的圆靠在左边的 Line1 直线上(见图);另有 1 个名称为 Timer1 的计时器控件,其 Enabled 属性值是 True。要求程序运行后,圆每秒向右移动 100,当圆遇到 Line2 时则停止移动。(分数:2.00)A.B. C.D.解析:解析 在计时器事件中不应再设置步长为
23、100 的 For 循环,应该把 For 循环去掉,只留下循环体的语句,计时器每秒激发一次,每次判断小球是否移到 Line2 处,不到就改变自己的 Left 值即继续移动。因此 B 正确。36.窗体如图 1 所示。要求程序运行时,在文本框 Text1 中输入一个姓氏,单击“删除”按钮(名称为Commandl),则可删除列表框 List1 中所有该姓氏的项目。若编写以下程序来实现此功能:Private Sub Commandl_Click()Dim n%,k%n=Len (Text1.Text)For k=0 To List1.ListCount-1If Left (List1.List(k),
24、n)=Text1.Text ThenList1.Removeltem kEnd IfNext kEnd Sub在调试时发现,如输入“陈”,可以正确删除所有姓“陈”的项目,但输入“刘”,则只删除了“刘邦”、“刘备”2 项,结果如图 2 所示。这说明程序不能适应所有情况,需要修改。正确的修改方案是把 For k=0 To List1.ListCount-1 改为_。(分数:3.00)A. B.C.D.解析:解析 错误原因:每一次删除列表框满足项,列表框的项目数目就会相应地减少,所以就出现了漏删内容,如果把循环变量 k 改成从 List1.ListCout-1 到 0,从最后一个项目往第一个项目查找
25、,满足条件就删除该项目,从而不会出现遗漏现象,所以正确答案为 A。37.窗体上有一个 Text1 文本框,一个 Commandl 命令按钮,并有以下程序:Private Sub commandl_Click ()Dim nIf Text1.Text“123456“Thenn=n+1Print“口令输入错误“ s=103+93,a=8; s=10+93+83,a=7;,依此类推,因此正确的答案为 A。39.在设窗体上有一个通用对话框控件 CD1,希望在执行下面程序时,打开如图所示的文件对话框:Private Sub Commandl_Click()CD1.DialogTitle=“打开文件“CD
26、1.InitDir=“C:“CD1.Filter=“所有文件|*.*|Word 文档|*.doc|文本文件|*.txt“CD1.FileName=“CD1.Action=1If CD1.FileName=“ThenPrint“未打开文件“ElsePrint“要打开文件 v&CD1.FileNameEnd IfEnd Sub(分数:3.00)A.B.C. D.解析:解析 在通用对话框控件中,Filter 属性指定了在对话框中显示的文件类型,该属性可以设置多个文件类型,每种文件类型由文件描述和文件通配符与扩展名组成,并由“|”隔开。Filterlndex 属性用来指定默认的过滤器,Filter 属
27、性中设置了多个过滤器后,每个过滤器的对应的值按从左到右顺序是1、9.,Filterlndex 属性默认为 1,即第一个过滤器,因此程序中会显示 C:/下的所有文件。应该在通话框打开之前(CD1.Action=1 之前)添加 CD1.Filterlndex=3,即使默认过滤器为第 3 个过滤器。40.设工程中有 2 个窗体:Form1、Form2,Form1 为启动窗体。Form2 中有菜单,其结构如表。要求在程序运行时,在 Form1 的文本框 Text1 中输入口令并按回车键(回车键的 ASCII 码为 13)后,隐藏 Form1,显示Form2。若口令为“Teacher”,所有菜单都可见;
28、否则看不到“成绩录入”菜单项。为此,某人在 Forml窗体文件中编写如下程序: 菜单结构标题名称级别成绩管理mark 1成绩查询query2成绩录入input3Private Sub Text11_KeyPress (KeyAscii As Integer)If KeyAscii=13 ThenIf Text1.Text=“Teacher“ThenForm2.input.Visible=TrueElseForm2.input.Visible=FalseEnd IfEnd IfForm1.HideForm2.ShowEnd Sub程序运行时发现刚输入口令时就隐藏了 Form1,显示了 Form2
29、,程序需要修改。下面修改方案中正确的是_。 A.把 Form1 中 Text1 文本框及相关程序放到 Form2 窗体中 B.把 Form1.Hide、Form2.Show 两行移到 2 个 End If 之间 C.把 If KeyAscii=13 Then 改为 If KeyAscii=”Teacher”Then D.把 2 个 Form2.input.Visible 中的“Form2.”删去(分数:3.00)A.B. C.D.解析:解析 原程序的执行流程为,当按下一个键后,激活 KeyPress 事件,事件中隐藏 Form1 和显示From2 的语句与判断是否按了回车键的语句是顺序的,即不论按了什么键,都会执行隐藏 Form1 和显示From2 的语句。这两句应该上移到第二个 Endlf 前面,也就是放在判断是否按了回车键的 If 语句块中。因此 B 选项正确。