1、VB 机试-试卷 84 及答案解析(总分:12.00,做题时间:90 分钟)一、基本操作题(总题数:2,分数:4.00)1.基本操作题()(分数:2.00)_2.(1)在名称为 Forml 的窗体上,绘制一个文本框和两个命令按钮。文本框的名称为 Textl,内容初始时为空。两个命令按钮的名称分别为 Commandl、Command2、标题分别为“显示”和“隐藏”。编写适当的事件过程,当程序运行时,单击 Com mandl 命令按钮,显示文本框,文本框中显示“模拟考试”;单击Command2 命令按钮时,文本框消失。程序中不得使用任何变量。程序运行时的窗体界面如图 291 所示。注意:保存时必须
2、存放在考生文件夹下,窗体文件名为 sjlfrm,工程文件名为 sjlvbp。 (2)在名称为 Forml 的窗体上绘制一个命令按钮,其名称为 Commandl,标题为“向左移动”。编写适当的事件过程,使程序运行时,如果单击命令按钮,则按钮向左移动 500 单位。程序中不得使用任何变量。程序运行时的窗体界面如图 292 所示。 (分数:2.00)_二、简单应用题(总题数:2,分数:4.00)3.简单应用题()(分数:2.00)_4.(1)在考生文件夹下有工程文件 sj3vbp 及窗体文件 sj3frm,根据下文的描述,编写相应的程序。存盘时不得改变文件名和文件夹。 本题描述如下: 在窗体上有一名
3、为 Textl 的文本框,要求程序运行后,每用鼠标左键单击窗体一次,则文本框的宽增加 150;每用鼠标右键单击窗体一次,文本框的宽减小150。窗体的宽为 2 500,文本框最大宽度不允许超过窗体的宽度,最小宽度不小于 900(高与宽的单位为twip)。 程序运行时的窗口界面如图 273 所示。注意:保存时必须存放到考生文件夹下,工程文件名为sj3vbp,窗体文件名为 sj3frm。 (2)在考生文件夹下有工程文件 sj4vbp 及窗体文件 sj4frm,该程序是不完整的。在窗体中有一个名为 Labell 的标签和两个名称分别为 Commandl 与 Command2、标题分别为“显示”、“关闭
4、”的命令按钮。要求程序运行后,单击“显示”按钮,能打印出如图所示的 B 字三角形,执行完毕,“显示”按钮变成“完成”,且无效(变灰),如图 274 所示。 (分数:2.00)_三、综合应用题(总题数:2,分数:4.00)5.综合应用题()(分数:2.00)_6.在名称为 Form1 的窗体上有两个命令按钮(名称分别为 COmmand1 和 command2、标题分别为“读取”和“保存”)和一个文本框(名称为 Textl、MultiLine 属性为 True、ScrollBars 属性为 2)。要求程序运行后,如果单击“读取”按钮,则读入 in.txt 文件中的 50 个整数,放入一个数组中(数
5、组下界为 1),并在文本框 1“extl 中显示出来,运行界面如图 65 所示。如果单击“保存”按钮,则把数组中的前 30 个数据在文本框 Textl 中显示出来,并存人考生文件夹中的文件 resulttxt 中。(考生文件夹中有标准模块mode5has,其中的 writeData 过程可以把指定个数的数组元素存入 resulttxt 文件。) (分数:2.00)_VB 机试-试卷 84 答案解析(总分:12.00,做题时间:90 分钟)一、基本操作题(总题数:2,分数:4.00)1.基本操作题()(分数:2.00)_解析:2.(1)在名称为 Forml 的窗体上,绘制一个文本框和两个命令按钮
6、。文本框的名称为 Textl,内容初始时为空。两个命令按钮的名称分别为 Commandl、Command2、标题分别为“显示”和“隐藏”。编写适当的事件过程,当程序运行时,单击 Com mandl 命令按钮,显示文本框,文本框中显示“模拟考试”;单击Command2 命令按钮时,文本框消失。程序中不得使用任何变量。程序运行时的窗体界面如图 291 所示。注意:保存时必须存放在考生文件夹下,窗体文件名为 sjlfrm,工程文件名为 sjlvbp。 (2)在名称为 Forml 的窗体上绘制一个命令按钮,其名称为 Commandl,标题为“向左移动”。编写适当的事件过程,使程序运行时,如果单击命令按
7、钮,则按钮向左移动 500 单位。程序中不得使用任何变量。程序运行时的窗体界面如图 292 所示。 (分数:2.00)_正确答案:(正确答案:(1)根据题意,新建“标准 EXE”工程,将一个文本框控件和两个命令按钮添加到窗体中,文本框的名称为 Textl,Text 属性为“模拟考试”,命令按钮的名称为 Commandl 和Command2,Caption 属性分别为“显示”和“隐藏”。双击 Command,进入代码窗口,编写如下代码: Private Sub Commandl Click() TextlVisible=True Textl 可见 End Sub Private Sub Comm
8、and2 Click() TextlVisible=FalseTextl 不可见 End Sub 单击 按钮运行程序,并按要求保存。 (2)根据题意,新建“标准 EXE”工程,将一个 Command 添加到窗体中,其名称为 Commandl、Caption 属性为“向左移动”。双击 Commandl 进入代码窗口,编写如下代码: Private Sub Commandl Click() CommandlLeft=CommandlLeft-500 End Sub 单击 )解析:二、简单应用题(总题数:2,分数:4.00)3.简单应用题()(分数:2.00)_解析:4.(1)在考生文件夹下有工程文
9、件 sj3vbp 及窗体文件 sj3frm,根据下文的描述,编写相应的程序。存盘时不得改变文件名和文件夹。 本题描述如下: 在窗体上有一名为 Textl 的文本框,要求程序运行后,每用鼠标左键单击窗体一次,则文本框的宽增加 150;每用鼠标右键单击窗体一次,文本框的宽减小150。窗体的宽为 2 500,文本框最大宽度不允许超过窗体的宽度,最小宽度不小于 900(高与宽的单位为twip)。 程序运行时的窗口界面如图 273 所示。注意:保存时必须存放到考生文件夹下,工程文件名为sj3vbp,窗体文件名为 sj3frm。 (2)在考生文件夹下有工程文件 sj4vbp 及窗体文件 sj4frm,该程
10、序是不完整的。在窗体中有一个名为 Labell 的标签和两个名称分别为 Commandl 与 Command2、标题分别为“显示”、“关闭”的命令按钮。要求程序运行后,单击“显示”按钮,能打印出如图所示的 B 字三角形,执行完毕,“显示”按钮变成“完成”,且无效(变灰),如图 274 所示。 (分数:2.00)_正确答案:(正确答案:(1)鼠标事件分点击事件和状态事件。点击事件有单击(Click)和双击(DblClick),不区分左右键;状态事件有按下(Mousedown)、移动(Mousemove)和弹起(Mouseup),状态事件涉及Button、Shift 两个参数,Button 参数是
11、一个整数,值可能为 1(左键)、2(右键)或 4(中间键),Shift 参数也是一个整数,用来代表用户是否按下 Shift、Ctrl 或 Alt 键。根据题意,程序中可以使用 Mousedown事件,也可使用 Mouseup 事件。 根据题意,在进行鼠标左键点击放大前需判断文本框加宽后的宽度是否超过窗体大小,若是,将文本框的大小设为与窗体一致,否则宽度加 150;在进行鼠标右键点击缩小前需判断文本框缩小后的宽度是否小于 900,若是,将文本框的宽度设为 900,否则宽度减 150。补充后的具体代码如下: Private Sub Form_MouseDown(Button As Integer,
12、Shift As Integer,X As Single,Y As Single) Select Case Button Case 1当单击鼠标左键时 TextlWidth=TextlWidth+150 Textl的宽度加 150 Case 2当单击鼠标右键时 TextlWidth=TextlWidth-150 Textl 的宽度减 150 End Select If TextlWidthFormlWidth Then TextlWidth=FormlWidth当 Textl 的宽度大于 Forml的宽度,则不再增加 Elself TextlWidthTextlWidth=900 当 Text
13、l 的宽度小于 Forml 的宽度,则不再减小 End If End Sub 单击 按钮运行程序,并按要求保存。 (2)本题主要考查 For 循环控制语句与字符串的操作。根据题意,将一个标签和两个命令按钮添加到窗体中,标签的名称为 Labell,命令按钮的名称分别为 Commandl 和 Command2,Caption 属性分别为“显示”和“关闭”。双击 Commandl 进入代码窗口,补充后的代码如下: Private Sub Commandl_Click() Dim i As Integer Dim i AS Integer Dim str As String Dim tmp As St
14、ring str=“ For i=1 To 6 画三角形的上半部分 tmp=“ For j=1 To i tmp=tmp+“B“ Next j str=str+ tmp +vbCrLf将一行放入字符串中然后换行 Next i For i=5 To 1 Step-1 tmp=“ For j=1 To i tmp=tmp+“B“ Next j str=str+ tmp +vbCrLf将一行放人字符串中然后换行 Next i Labell Caption =str在 Label 中显示三角形 CommandlCaption=“完成“ Commandl Enabled =False End Sub P
15、rivate Sub Command2_Click() Unload Me End Sub 单击 )解析:三、综合应用题(总题数:2,分数:4.00)5.综合应用题()(分数:2.00)_解析:6.在名称为 Form1 的窗体上有两个命令按钮(名称分别为 COmmand1 和 command2、标题分别为“读取”和“保存”)和一个文本框(名称为 Textl、MultiLine 属性为 True、ScrollBars 属性为 2)。要求程序运行后,如果单击“读取”按钮,则读入 in.txt 文件中的 50 个整数,放入一个数组中(数组下界为 1),并在文本框 1“extl 中显示出来,运行界面如
16、图 65 所示。如果单击“保存”按钮,则把数组中的前 30 个数据在文本框 Textl 中显示出来,并存人考生文件夹中的文件 resulttxt 中。(考生文件夹中有标准模块mode5has,其中的 writeData 过程可以把指定个数的数组元素存入 resulttxt 文件。) (分数:2.00)_正确答案:(正确答案: 根据题意要求将一个文本框控件和两个命令按钮,其中文本框的名称为Namel,MultiLine 属性为 True,滚动属性为 2;命令按钮的名称分别为 Commandl 和 Command2,Caption的属性分别为读取和保存。然后将 mode5bas 模板加入到工程中(
17、右键单击工程名,然后选择加入modules(模板),选择 mode5bas)。 模板代码如下: Function isPrimeNum(num As Integer)As Boolean判断输入的数是否为素数 isPrimeNum=True Dim i AS Integer For i=2 TO num-1 If num Mod i=0 Then isPrimeNum=False Exit For End If Next i End Function Function writeData(total As Long) Open AppPath&“resulttxt“For Output As#
18、1 Write#1,total Close#1 End Function 单击Commandl 进入代码窗口,补充后的代码如下: Dim a(50)As Long全局变量 Dim str(50)As String全局变量 Private Sub Commandl Click() TextlText=“ Open AppPath&“intxt“For Input As#1打开“intxt“文件 Dim i As Integer Dim temp As Integer For i=0 To 49 Input #1,temp a(i)=temp按顺序读入到数组中 str(i)=a(i) Textl Text =Textl Text +str(i)+vbCrLf将数组中的数放入 Text 中显示 Next i Close#1 End Sub Private Sub Command2 Click() Dim i As Integer TextlText=“ total=0 For i=0 To 29 str(i)=a(i) TextlText=Text1Text+str(i)+vbCrLf 将数组中的前 30 个数放人 Text 中显示 writeData(str(i) 将结果保存到 resulttxt 中 Next i End Sub 单击 )解析: