1、二级 VISUAL+BASIC 机试-92 及答案解析(总分:100.00,做题时间:90 分钟)一、1 基本操作题(总题数:2,分数:30.00)1.在窗体上画一个列表框,名称为 List1,通过属性窗口向列表框中添加 3 个项目,分别为“Iterm1、“Iterm2”和“Item3”。编写适当的事件过程。使程序运行后,如果双击 Form1 空白处则清空列表框中的内容。程序运行时窗体界面如下图左图和下图右图所示。注意:存盘时必须存放在考生文件夹下,工程文件名为 sj1.vbp,窗体文件名为 sj1.frm。(分数:15.00)_2.在窗体上画两个命令按钮,名称分别为 command1、Com
2、mand2,标题分别为“启用”、“禁用”,一个名称为 Text1 的 Text 控件。请编写适当的事件过程,使得程序在运行时,单击“启用”按钮,Text1 会变为有效,而当单击“禁用”命令按钮后 Text1 变为无效。程序中不得使用任何变量,程序运行时的窗体界而如下图左图和下图右图所示。注意:保存时必须存放在考生文件夹下,窗体文件名为 sj2.frm,工程文件名为 sj2.vbp。(分数:15.00)_二、2 简单应用题(总题数:2,分数:40.00)3.在考生目录下有一个工程文件 sj3.vbp,窗休中有一个命令按钮,标题为“向左移动”,名称为command1,还有一个计时器,名称为 Tim
3、er1,并给出了两个事件过程,但并不完整,要求:设置计时器的属性,使其在初始状态不计时;设置计时器的属性,使其每隔 0.3 秒调用 Timer1 事件过程一次。去掉程序中的注释符“”,把程序中的“?”改为正确的内容,使得在运行时单击“向左移动”按钮,则按钮每隔 0.3 秒向左移动一次,当移出窗体时返回窗体的右端,如下图所示。注意:不能修改程序中的其他部分,最后把修改后的文件按原文件名存盘。(分数:20.00)_4.在考生文件夹中有文件 sj4.vbp 及其窗体文件 sj4.frm,窗体已经设计好,要求考生用 If 语句编写程序,使得程序运行时,满足下列要求。不得使用任何变量。存盘时不得改变文件
4、央和文件名。本题描述如下:窗体上有两个复选框,名称分别为 Check1 和 Check2,标题分别为“英语”和“德语”两个单选按钮,名称分别为 Option1 和 Option2,标题分别为“我会”和“我不会”;一个名称为 Label1 的标签;一个名称为 Command1、标题为“输出”的命令按钮。要求程序运行后,对复选框和单选按钮进行选择,然后单击按钮,可根据下表的规定在标签中显示相应的信息:标签中显示相应的信息选择项 标签中显示的信息Check1、Check2、Opion1 我既会英语也会德语Check1、Option1 我只会英语Check2、Option1 我只会德语Check1、C
5、heck2、Option2 我既不会英语也不会德语Check1、Option2 我不会英语Check2、Option2 我不会德语程序运行时的界而如图所示。(分数:20.00)_三、3 综合应用题(总题数:1,分数:30.00)5.打开考生文件夹下的 sj5.vbp,在名称为 Form1 的窗体上建立两个命令按钮,名称分别为 Command1 和Command2,命令按钮上分别显示“输入”和“结果”(如下图所示)。程序运行时单击“输入”按钮,输入6 个数放人数组 a 中,单击“结果”按钮,则把数组 a 中的数值按照降序排列。请在有“?”号的地方填写正确内容,然后删除“?”及代码前的所有注释符(
6、即号),但不能修改其他部分。注意:存盘时不得改变文件名和文件夹。(分数:30.00)_二级 VISUAL+BASIC 机试-92 答案解析(总分:100.00,做题时间:90 分钟)一、1 基本操作题(总题数:2,分数:30.00)1.在窗体上画一个列表框,名称为 List1,通过属性窗口向列表框中添加 3 个项目,分别为“Iterm1、“Iterm2”和“Item3”。编写适当的事件过程。使程序运行后,如果双击 Form1 空白处则清空列表框中的内容。程序运行时窗体界面如下图左图和下图右图所示。注意:存盘时必须存放在考生文件夹下,工程文件名为 sj1.vbp,窗体文件名为 sj1.frm。(
7、分数:15.00)_正确答案:(列表框控件用于显示可供单一或多个选择的列表项,给列表框添加列表项既可以在设计阶段通过其 List 属性设置加入(注意每输入完一项后按Ctrl+Enter组合键换行再输入下一项),也可在程序运行时通过代码“列表框名.Addhem”项目“ “加入,清除窗体内容可通过 Cls 方法来实现。根据题意,新建“标准 EXE”工程,将一个 List 控件添加到窗体中,其名称为 List1,在属性窗口的List 属性中添加“Item1”、“Item2”和“Item3”,每输入一个后按Ctrl+Enter组合键换行输入下一个元素,当输入完成后,按回车键,则元素添加完成,双击 Fo
8、rm1 的空白处,进入代码编写窗口,编写如下代码:Private Sub Form_DblClick()Dim i As IntegerFor iList1.ListCount-1 To 0 Step-1 先删除索引大的项,防止 i 溢出List1.Remove Item i 移除索引指定项Next iEnd Sub单击 )解析:2.在窗体上画两个命令按钮,名称分别为 command1、Command2,标题分别为“启用”、“禁用”,一个名称为 Text1 的 Text 控件。请编写适当的事件过程,使得程序在运行时,单击“启用”按钮,Text1 会变为有效,而当单击“禁用”命令按钮后 Text
9、1 变为无效。程序中不得使用任何变量,程序运行时的窗体界而如下图左图和下图右图所示。注意:保存时必须存放在考生文件夹下,窗体文件名为 sj2.frm,工程文件名为 sj2.vbp。(分数:15.00)_正确答案:(命令按钮(Command Button)常用来建立实现某种命令,通过命令按钮的 Caption 属性设置其标题;控件是否有效由其 Enabled 属性来设置,值为 True 表示有效,值为 False 表示无效;单击命令按钮将触发其 Click 事件。要实现程序运行时单击某个按钮使文本框变为无效,只需在编写该按钮的 Click 事件过程中修改文本框的Enabled 属性值即可。根据题
10、意,新建“标准 EXE”工程,将一个文本框控件和两个命令按钮添加到窗体中,文本框的名称为Text1,命令按钮的名称分别为 Command1 和 Command2,Caption 属性分别为“启用”和“禁用”。双击Command1 进入代码窗口,编写如下代码:Private Sub Command1_Click()Text1.Enabled=True 启用 Text1End SubPrivate Sub Command2_Click()Text1.Enabled=False 禁用 Text1End Sub单击 )解析:二、2 简单应用题(总题数:2,分数:40.00)3.在考生目录下有一个工程文
11、件 sj3.vbp,窗休中有一个命令按钮,标题为“向左移动”,名称为command1,还有一个计时器,名称为 Timer1,并给出了两个事件过程,但并不完整,要求:设置计时器的属性,使其在初始状态不计时;设置计时器的属性,使其每隔 0.3 秒调用 Timer1 事件过程一次。去掉程序中的注释符“”,把程序中的“?”改为正确的内容,使得在运行时单击“向左移动”按钮,则按钮每隔 0.3 秒向左移动一次,当移出窗体时返回窗体的右端,如下图所示。注意:不能修改程序中的其他部分,最后把修改后的文件按原文件名存盘。(分数:20.00)_正确答案:(本题考查计时器控件(Timer)、命令按钮控件(Comma
12、nd Button)的常用属性和事件,以及编写简单事件过程。计时器只在设计时可见,计时器是否启用由其 Enabled 属性设置,值为 True 或 False。启用后间隔多长时间触发一次其 Timer 事件由其 Interval 属性设置,Interval 属性的单位为毫秒,默认值为 0,此时计时器也不启用。控制命令按钮向左移动可通过修改其 Left 属性值实现,当 Left 属性值超过窗体的 Width 属性值时,表示按钮已移出窗体,此时 Left 属性值设为 0,即可将按钮返回窗体右端。移动按钮的事件过程均在计时器的 Timer 中实现。根据题意,将一个命令按钮和一个计时器控件添加到窗体中
13、,命令按钮的名称为 Command1、Caption 属性为“向左移动”,Timer 的名称为 Timer1。双击 Command1 进入代码编写窗口,Timer1 将隔一个周期调用Timer 函数一次,而按下 Command1 将启动 Timer1 计时器,即设置其周期,补充后的具体代码如下:Private Sub Command1_Click()Timer1.Interval=300 设置 Timer 的周期End SubPrivate Sub Timer1_Timer()Command1.Left=Command1.Left-100 Command 向左移动If Command1.Lef
14、t0 ThenCommand1.Left=Form1.width-Command1.Width当移动出最左端时,Command 返回窗体最右端End IfEnd Sub单击 )解析:4.在考生文件夹中有文件 sj4.vbp 及其窗体文件 sj4.frm,窗体已经设计好,要求考生用 If 语句编写程序,使得程序运行时,满足下列要求。不得使用任何变量。存盘时不得改变文件央和文件名。本题描述如下:窗体上有两个复选框,名称分别为 Check1 和 Check2,标题分别为“英语”和“德语”两个单选按钮,名称分别为 Option1 和 Option2,标题分别为“我会”和“我不会”;一个名称为 Labe
15、l1 的标签;一个名称为 Command1、标题为“输出”的命令按钮。要求程序运行后,对复选框和单选按钮进行选择,然后单击按钮,可根据下表的规定在标签中显示相应的信息:标签中显示相应的信息选择项 标签中显示的信息Check1、Check2、Opion1 我既会英语也会德语Check1、Option1 我只会英语Check2、Option1 我只会德语Check1、Check2、Option2 我既不会英语也不会德语Check1、Option2 我不会英语Check2、Option2 我不会德语程序运行时的界而如图所示。(分数:20.00)_正确答案:(本题主要考查复选框(CheekBox)和单
16、选按钮(OptionButton),以及用 If 语句编程的综合运用。复选框组常用于提供多重选择,Value 属性值决定每个复选框的选中状态:0 表示未选;1 表示选中;2 表示不可用(即灰色);单选按钮组常用于提供唯一选择,Value 属性值决定每个单选按钮的选中状态:False 表示未选、True 表示选中。根据题意,窗体已设计好,只要考生编写相应的代码以实现其功能。双击 Command1 进入代码窗口,编写如下代码:Private Sub Command1 Click()If Option1.Value=True Then 选择 Option1If Check1.Value=1 And
17、Check2.Value=1 ThenLabel1.Caption=“我既会“+Check1.Caption+“也会“+Check2.CaptionElse If Cheek1.Value=1 ThenLabel1.Caption=“我只会“+Check1.Caption 显示我只会英语EIse If Check2.Value=1 ThenLabel1.Caption=“我只会“+Check2.Caption 显示我只会德语End IfElse 选择 Option2If Check1.Value=1 And Cheek2.Value=1 ThenLabel1.Caption=“我既不会“+Ch
18、eck1.Caption+“也不会“+Check2.CaptionElse If Check1.Value=1 ThenLabel1.Caption=“我不会“+Cheek1.Caption 显示我不会英语Else If Check2.Value=1 ThenLabel1.Caption=“我不会“+Check2.Caption 显示我不会德语End IfEnd IfEnd Sub单击 )解析:三、3 综合应用题(总题数:1,分数:30.00)5.打开考生文件夹下的 sj5.vbp,在名称为 Form1 的窗体上建立两个命令按钮,名称分别为 Command1 和Command2,命令按钮上分别
19、显示“输入”和“结果”(如下图所示)。程序运行时单击“输入”按钮,输入6 个数放人数组 a 中,单击“结果”按钮,则把数组 a 中的数值按照降序排列。请在有“?”号的地方填写正确内容,然后删除“?”及代码前的所有注释符(即号),但不能修改其他部分。注意:存盘时不得改变文件名和文件夹。(分数:30.00)_正确答案:(本题重点考查“冒泡法”数据排序方法。“冒泡法”是一种重要的数据排序算法,其思想是按顺序让一个数列中的每一个数都与其之后所有的数逐一进行比较,如果该数小于其后面的数,则把这两个位置的数进行交换。依此类推,即可实现所有数的降序排列。根据题意,将两个命令按钮添加到窗体中,名称分别为 Co
20、mmand1 和 Command2,Caption 属性分别为“输入”和“结果”。双击 Command1 进入代码窗口,编写如下代码:Dim a(6) As IntegerDim str As StringDim temp As StringDim i As IntegerPrivate Sub Command1_Click()str=“排序前:“For i=1 To 6a(i)=Val(InputBox(“请输入:“) 输入 6 个数到数组中temp=a(i)str=str+temp+“ “ 将数组中的数放到字符串中Next iPrint str 在窗口中显示数组End SubPrivate Sub Command2_Click()str=“排序后:“For i=1 To 6 降序排列temp=a(i)For j=1 To iIf a(j)=temp Then 读取的数据比原位置的数据小则偏移For k=i To j+1 Step-1a(k)=a(k-1) 数据向后偏移一个Next ka(j)=tempExit ForEnd IfNextjNext iFor i=1 To 6temp=a(i) 将排序后的数组放入字符串中str=str+temp+“ “Next iPrint str 在窗口中显示排序后的结果End Sub单击 )解析: