1、二级 VISUAL+BASIC 机试-123 及答案解析(总分:100.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:30.00)请根据以下各小题的要求设计 Visual Basic 应用程序(包括界面和代码)。(分数:30.00)(1).在名称为 Form1、标题为“练习”的窗体上画一个名称为 Frame1、标题为“效果”的框架。框架内含有 3 个复选框,其名称分别为 Chk1、Chk2 和 Chk3,运行后的窗体如图 1 所示。*注意:存盘时必须存放在考生文件夹下,工程文件名为 sjt1.vbp,窗体文件名为 sjt1.frm。(分数:15.00)_(2).在名称为 For
2、m1,标题为“列表框练习”的窗体上画一个名称为 List1 的列表框,表项内容依次输入“环球时报”、“人物”、“探索”和“读者”;再画 2 个标题分别为“复制”和“移去”的命令按钮。如图 2 所示。*要求:编写适当的事件过程,使得单击“复制”按钮,可以将选中的列表项内容复制到已有列表项的尾部;单击“移去”按钮,可以将选中的列表项内容删除。注意:存盘时,将文件保存至考生文件夹下,窗体文件名为 sjt2.frm,工程文件名为 sjt2.vbp。要求程序中不得使用变量,每个事件过程中只能写一条语句。(分数:15.00)_二、简单应用题(总题数:1,分数:40.00)完成下列问题:(分数:40.00)
3、(1).考生文件夹下有一个工程文件 sjt3.vbp,其中的窗体上有一个名称为 Cmd 的命令按钮控件数组;有一个名称为 Image1 的图像框。请画一个名称为 Timer1 的计时器,时间间隔为 3s,初始状态为不可用,如图 3 所示。*程序功能如下:单击“前进”按钮,则 Timer1 的状态变为可用,且在图像框中显示 3s 黄灯(图像文件为考生文件夹下的yellow.ico)后,显示绿灯(图像文件为考生文件夹下的 green.ico)直至下次单击某个命令按钮。单击“停止”按钮,则 Timer1 的状态变为可用,且在图像框显示 3s 黄灯后,显示红灯(图像文件为考生文件夹下的 red.ico
4、)直至下次单击某个命令按钮。单击“结束”按钮,则结束程序执行。在横线处填写正确的内容,以实现上述程序功能。注意:考生不得修改窗体文件中已经存在的控件和程序,最后将程序按原文件名存盘。题目提供的源程序Dim flag As IntegerPrivate Sub Cmd_Click(Index As Integer)If Index= (1) ThenEndElse考生文件夹下的图片文件Image1.Picture=LoadPicture(“yellow.ico“)flag=IndexTimer1.Enabled= (2) End IfEnd SubPrivate Sub Timer1_Timer
5、()Select Case (3) Case 0Image1.Picture=LoadPicture(“green.ico“)Timer1.Enabled=FalseCase 1Image1.Picture=LoadPicture(“red.ico“)Timer1.Enabled=FalseEnd SelectEnd Sub(分数:20.00)_(2).考生文件夹下有一个工程文件 sjt4.vbp,其中的窗体上已有如图 4 所示的控件。程序功能如下:*单击“读数据”按钮,则将考生文件夹下 in4.dat 文件内容(该文件中仅含有字母和空格)显示在 Text1文本框中。在 Text1 中选中部分
6、文本,并单击“统计”按钮,则以不区分大小写字母的方式,自动统计选中文本中同时出现“o”、“n”两个字母单词的个数(如:million、company 都属于满足条件的单词),并将统计结果显示在 Text2 文本框内。在横线处填写正确的内容,以实现上述程序功能。注意:考生不得修改窗体文件中已经存在的控件和程序,最后将程序按原文件名存盘。题目提供的源程序Dim s As StringPrivate Sub Command1_Click()Open App.Patb & “/in4.dat“ For Input As #1s=Input(LOF(1),#1)Close #1Text1.Text=sE
7、nd SubPrivate Sub Command2_Click()Dim m As IntegerIf Len(s)= (1) ThenMsgBox “请先使用“读数据“功能!“ElseIf Text1. (2) =0 ThenMsgBox “请先选中文本!“Elset=“For i=1 To Text1.SelLengthc=Mid(Text1.SelText,i,1)If c“ Thent=t+cElsex= (3) If InStr(x, “o“) 0 And InStr(x, “n“) 0 Thenm=m+1End Ift=“End IfNext i(4) =Str(m)End If
8、End IfEnd Sub(分数:20.00)_三、综合应用题(总题数:1,分数:30.00)1.在考生文件夹下有一个工程文件 sjt5.vbp,其功能是:单击“读数据”按钮,则把考生文件夹下 in5.dat 文件中的 100 个正整数读入数组 a 中,同时显示在Text1 文本框中;单击“素数”按钮,则将数组 a 中所有素数(只能被 1 和自身整除的数称为素数)存入数组 b 中,并将数组b 中的元素显示在文本框 Text2 中。在给出的窗体文件中已经有了全部控件(如图 5 所示),但程序不完整。(分数:30.00)_二级 VISUAL+BASIC 机试-123 答案解析(总分:100.00,
9、做题时间:90 分钟)一、基本操作题(总题数:1,分数:30.00)请根据以下各小题的要求设计 Visual Basic 应用程序(包括界面和代码)。(分数:30.00)(1).在名称为 Form1、标题为“练习”的窗体上画一个名称为 Frame1、标题为“效果”的框架。框架内含有 3 个复选框,其名称分别为 Chk1、Chk2 和 Chk3,运行后的窗体如图 1 所示。*注意:存盘时必须存放在考生文件夹下,工程文件名为 sjt1.vbp,窗体文件名为 sjt1.frm。(分数:15.00)_正确答案:(操作步骤第 1 步:新建一个标准 EXE 工程,修改窗体 Form1 的 Caption
10、属性为“练习”。第 2 步:在窗体上画一个框架控件,修改其 Caption 属性为“效果”。第 3 步:在框架内添加 3 个复选框,第一个复选框的名称修改为 Chk1,Caption 属性修改为“倾斜”;第二个复选框的名称修改为 Chk2,Caption 属性修改为“加粗”;第三个复选框的名称修改为Chk3,Caption 属性修改为“下划线”。第 4 步:保存并运行工程。)解析:解析 本题考查基本控件框架和复选框的使用。框架是一个容器型控件,可以容纳其他控件,本题的复选框就放置在框架内。(2).在名称为 Form1,标题为“列表框练习”的窗体上画一个名称为 List1 的列表框,表项内容依次
11、输入“环球时报”、“人物”、“探索”和“读者”;再画 2 个标题分别为“复制”和“移去”的命令按钮。如图 2 所示。*要求:编写适当的事件过程,使得单击“复制”按钮,可以将选中的列表项内容复制到已有列表项的尾部;单击“移去”按钮,可以将选中的列表项内容删除。注意:存盘时,将文件保存至考生文件夹下,窗体文件名为 sjt2.frm,工程文件名为 sjt2.vbp。要求程序中不得使用变量,每个事件过程中只能写一条语句。(分数:15.00)_正确答案:(操作步骤第 1 步:新建一个标准 EXE 工程,修改窗体 Form1 的 Caption 属性为“列表框练习”。第 2 步:在窗体上画一个列表框控件,
12、在其 List 属性中依次输入“环球时报”、“人物”、“探索”和“读者”,每一项在 List 属性中占一行。第 3 步:在窗体上画两个命令按钮控件,将第一个命令按钮的 Caption 属性修改为“复制”,将第二个命令按钮的 Caption 属性修改为“移去”。第 4 步:编写程序。Private Sub Command1_Click()List1.AddItem List1.TextEnd SubPrivate Sub Command2_Click()List1.RemoveItem List1.ListIndexEnd Sub第 5 步:保存并运行工程。)解析:解析 本题考查基本控件列表框和
13、命令按钮的使用。列表框的列表项由它的 List 属性控制,可以通过属性窗口没置列表项,也可以用程序代码增减列表项。增加列表项的方法是:列表框名.AddItem 列表项文本, 列表项下标省略“列表项下标”则将新表项添加到列表项尾部。移去列表项的方法是:列表框名.RemoveItem 列表项下。当前被选中的列表项的文本内容可以从列表框的 Text 属性获得,当前被选中的列表项的下标可从列表框的 ListIndex 属性获得。二、简单应用题(总题数:1,分数:40.00)完成下列问题:(分数:40.00)(1).考生文件夹下有一个工程文件 sjt3.vbp,其中的窗体上有一个名称为 Cmd 的命令按
14、钮控件数组;有一个名称为 Image1 的图像框。请画一个名称为 Timer1 的计时器,时间间隔为 3s,初始状态为不可用,如图 3 所示。*程序功能如下:单击“前进”按钮,则 Timer1 的状态变为可用,且在图像框中显示 3s 黄灯(图像文件为考生文件夹下的yellow.ico)后,显示绿灯(图像文件为考生文件夹下的 green.ico)直至下次单击某个命令按钮。单击“停止”按钮,则 Timer1 的状态变为可用,且在图像框显示 3s 黄灯后,显示红灯(图像文件为考生文件夹下的 red.ico)直至下次单击某个命令按钮。单击“结束”按钮,则结束程序执行。在横线处填写正确的内容,以实现上述
15、程序功能。注意:考生不得修改窗体文件中已经存在的控件和程序,最后将程序按原文件名存盘。题目提供的源程序Dim flag As IntegerPrivate Sub Cmd_Click(Index As Integer)If Index= (1) ThenEndElse考生文件夹下的图片文件Image1.Picture=LoadPicture(“yellow.ico“)flag=IndexTimer1.Enabled= (2) End IfEnd SubPrivate Sub Timer1_Timer()Select Case (3) Case 0Image1.Picture=LoadPictu
16、re(“green.ico“)Timer1.Enabled=FalseCase 1Image1.Picture=LoadPicture(“red.ico“)Timer1.Enabled=FalseEnd SelectEnd Sub(分数:20.00)_正确答案:(操作步骤第 1 步:打开工程文件 sjt3.vbp。第 2 步:添加计时器控件。在窗体上画一个计时器控件,修改其 Enabled 属性为 False,修改其 Interval属性为:3000。第 3 步:修改程序。第 4 步:调试、运行并保存程序。12 2True 3Flag)解析:解析 程序的思路是单击按钮组中的一个按钮后,检查被单
17、击按钮的索引 Index 值,如果索引为2,即单击了“结束”按钮,则执行 End 语句结束程序的执行;否则,将图像框中的图片显示为“黄灯”并启动计时器,3s 之后,执行计时器的 Timer 事件过程,在 Timer 事件过程中根据之前单击的按钮决定显示红灯还是绿灯,并使 Timer1 的状态变为不可用。因为 Timer 事件过程无法直接获取哪一个按钮被单击的信息,所以程序在通用栏中定义了一个的模块级变量 Flag,在 Cmd_Click 事件过程中执行一句Flag=Index,Flag 就起到了记忆并传递被单击按钮的索引的作用。(2).考生文件夹下有一个工程文件 sjt4.vbp,其中的窗体上
18、已有如图 4 所示的控件。程序功能如下:*单击“读数据”按钮,则将考生文件夹下 in4.dat 文件内容(该文件中仅含有字母和空格)显示在 Text1文本框中。在 Text1 中选中部分文本,并单击“统计”按钮,则以不区分大小写字母的方式,自动统计选中文本中同时出现“o”、“n”两个字母单词的个数(如:million、company 都属于满足条件的单词),并将统计结果显示在 Text2 文本框内。在横线处填写正确的内容,以实现上述程序功能。注意:考生不得修改窗体文件中已经存在的控件和程序,最后将程序按原文件名存盘。题目提供的源程序Dim s As StringPrivate Sub Comm
19、and1_Click()Open App.Patb & “/in4.dat“ For Input As #1s=Input(LOF(1),#1)Close #1Text1.Text=sEnd SubPrivate Sub Command2_Click()Dim m As IntegerIf Len(s)= (1) ThenMsgBox “请先使用“读数据“功能!“ElseIf Text1. (2) =0 ThenMsgBox “请先选中文本!“Elset=“For i=1 To Text1.SelLengthc=Mid(Text1.SelText,i,1)If c“ Thent=t+cElse
20、x= (3) If InStr(x, “o“) 0 And InStr(x, “n“) 0 Thenm=m+1End Ift=“End IfNext i(4) =Str(m)End IfEnd IfEnd Sub(分数:20.00)_正确答案:(操作步骤第 1 步:打开工程文件 sjt4.vbp。第 2 步:修改程序。第 3 步:调试、运行并保存程序。10 2SelLength 3LCase(t) 4Text2)解析:解析 程序的思路是首先在 Command1_Click 中将文件内容读入到文本框 Text1 中。然后在Command2_Click 中,使用 Len()函数判断文本框中是否有字
21、符,如果文本框中文本长度为 0,则提示“请先使用读数据功能!”;在已经读取文件内容的基础上,再检查是否已经选取了部分文字,利用文本框的 SelLength 属性可判断是否已选择了部分文字,如果 SelLength 的值为 0,则提示“请先选中文本!”;在读入文字并选中部分文字的情况下再做单词的判断。分解单词时,从选取的文本内容中每次取一个字符,若该字符为空格字符,则说明空格前面的字符就是一个单词,否则将取出的一个字符连接到变量 t中。找出一个单词后,用 InStr()函数判断该单词是否同时含有字符“o”和“n”,题目要求不区分大小写,可以先将找到的单词统一转换为大写或小写再做检查。三、综合应用
22、题(总题数:1,分数:30.00)1.在考生文件夹下有一个工程文件 sjt5.vbp,其功能是:单击“读数据”按钮,则把考生文件夹下 in5.dat 文件中的 100 个正整数读入数组 a 中,同时显示在Text1 文本框中;单击“素数”按钮,则将数组 a 中所有素数(只能被 1 和自身整除的数称为素数)存入数组 b 中,并将数组b 中的元素显示在文本框 Text2 中。在给出的窗体文件中已经有了全部控件(如图 5 所示),但程序不完整。(分数:30.00)_正确答案:(操作步骤第 1 步:打开工程文件 sjt5.vbp。第 2 步:编写程序。参考程序如下:For k=1 To 100flag
23、=True 假定 a(k)是素数,用 flag 为真来表示For i=2 To Sqr(a(k)If a(k)Mod i=0 Thenflag=False 假定不成立,修改 flag 的值为 FalseExit For 得出结论后,无须继续检查End IfNext iIf flag=True Then a(k)是素数,计数并将 a(k)存入数组 b 中num=num+1b(num)=a(k)End IfNext k第 3 步:调试、运行并保存程序。)解析:解析 程序在 Command1_Click 事件过程中将 100 个整数读入到数组 a 中。在 Command2_Click 事件过程中,首先检查文本框中是否有内容,在有内容的情况下再判断该数是否为素数。判断一个数是否为素数算法为:对于数 n,用 n 除以 2 到 之间的全部整数,若都除不尽,则 n 是素数,否则 n 不是素数。要表达“都除不尽”这一条件是困难的,可采用以下方法解决:先假定数 n 是素数,再用 2 到