1、VB机试模拟试卷 58及答案与解析 一、基本操作题( 30分) 1 (1)在名称为 Forml的窗体上,绘制一个文本框和两个命令按钮。文本框的名称为Textl,内容初始时为空。两个命令按钮的名称分别为 Commandl、 Command2、标题分别为 “显示 ”和 “隐藏 ”。编写适当的事件过程,当程序运行时,单击 Com mandl命令按钮,显示文本框,文本框中显示 “模拟考试 ”;单击 Command2命令按钮时,文本框消失。程序中不得使用任何变量。程序运行时的窗体界面如图 291所示。 注意:保存时必须存放在考生文件夹下, 窗体文件名为 sjl frm,工程文件名为 sjl vbp。 (
2、2)在名称为 Forml的窗体上绘制一个命令按钮,其名称为Commandl,标题为 “向左移动 ”。编写适当的事件过程,使程序运行时,如果单击命令按钮,则按钮向左移动 500单位。程序中不得使用任何变量。程序运行时的窗体界面如图 292所示。注意:保存时必须存放在考生文件夹下,窗体文件名为 sj2 frm,工程文件名为 sj2 vbp。 二、简单应用题( 40分) 2 (1)在考生文件夹下有工程文件 sj3 vbp及窗体文件 sj3 frm,根据下文的描述,编写相应的程序。存盘时不得改变文件名和文件夹。 本题描述如下: 在窗体上有一名为 Textl的文本框,要求程序运行后,每用鼠标左键单击窗体
3、一次,则文本框的宽增加 150;每用鼠标右键单击窗体一次,文本框的宽减小 150。窗体的宽为 2 500,文本框最大宽度不允许超过窗体的宽度,最小宽度不小于 900(高与宽的单位为 twip)。 程序运行时的窗口界面如图 273所示。注意:保存时必须存放到考生文件夹下,工程文件名为 sj3 vbp,窗体文件名为 sj3 frm。 (2)在考生文件夹下有工程文件 sj4 vbp及窗体文件 sj4 frm,该程序是不完整的。在窗体中有一个名为 Labell的标签和两个名称分别为 Commandl与 Command2、标题分别为 “显示 ”、“关闭 ”的命令按钮。要求程序运行后,单击 “显示 ”按钮
4、,能打印出如图所示的 B字三角形,执行完毕, “显示 ”按钮变成 “完成 ”,且无效 (变灰 ),如图 274所示。注意:请在有 “?”号的地方填放正确内容,然后删除 “?”及所有注释符 (即 “”号 ),但不能修改其他部分。存盘时不得改变文件名和文件夹。 三、综合应用题( 30分) 3 在名称为 Form1的窗体上有两个命令按钮 (名称分 别为 COmmand1和command2、标题分别为 “读取 ”和 “保存 ”)和一个文本框 (名称为 Textl、 MultiLine属性为 True、 ScrollBars属性为 2)。要求程序运行后,如果单击 “读取 ”按钮,则读入in.txt文件中
5、的 50个整数,放入一个数组中 (数组下界为 1),并在文本框 1“extl中显示出来,运行界面如图 65所示。如果单击 “保存 ”按钮,则把数组中的前 30个数据在文本框 Textl中显示出来,并存人考生文件夹中的文件 result txt中。 (考生文件夹中有标准模块 mode5 has,其中的 writeData过程可以把指定个数的数组元素存入 result txt文件。 ) 注意:在考生文件夹中有工程文件 sj5 vbp及其窗体文件 sj5 frm,该程序是不完整的,请在有 “?”的地方填入正确内容,然后删除 “?”及代码前的所有注释符 (即 “”号 ),但不能修改其他部分。存盘时不得
6、改变文件名和文件夹。文件必须存放在考生文件夹下,窗体文件名为 sj5 frm,工程文件名为 sj5 vbp,结果存入 result txt文件,否则没有成绩。 VB机试模拟试卷 58答案与解析 一、基本操作题( 30分) 1 【正确答案 】 (1)根据题意,新建 “标准 EXE”工程,将一个文本框控件和两个命令按钮添加到窗体中,文本框的名称为 Textl, Text属性为 “模拟考试 ”,命令按钮的名称为 Commandl和 Command2, Caption属性分别为 “显示 ”和 “隐藏 ”。双击Command,进入代码窗口,编写如下代码: Private Sub Commandl Cli
7、ck() Textl Visible=True Textl可见 End Sub Private Sub Command2 Click() Textl Visible=FalseTextl不可见 End Sub 单击 按钮运行程序,并按要求保存。 (2)根据题意,新建 “标准 EXE”工程,将一个 Command添加到窗体中,其名称为Commandl、 Caption属性为 “向左移动 ”。双击 Commandl进入代码窗口,编写如下代码: Private Sub Commandl Click() Commandl Left=Commandl Left-500 End Sub 单击 按钮运行程序
8、,并按要求保存。 二、简单应用题( 40分) 2 【正确答案】 (1)鼠标事件分点击事件和状态事 件。点击事件有单击 (Click)和双击(DblClick),不区分左右键;状态事件有按下 (Mousedown)、移动 (Mousemove)和弹起 (Mouseup),状态事件涉及 Button、 Shift两个参数, Button参数是一个整数,值可能为 1(左键 )、 2(右键 )或 4(中间键 ), Shift参数也是一个整数,用来代表用户是否按下 Shift、 Ctrl或 Alt键。根据题意,程序中可以使用 Mousedown事件,也可使用 Mouseup事件。 根据题意,在进行鼠标左
9、键点 击放大前需判断文本框加宽后的宽度是否超过窗体大小,若是,将文本框的大小设为与窗体一致,否则宽度加150;在进行鼠标右键点击缩小前需判断文本框缩小后的宽度是否小于 900,若是,将文本框的宽度设为 900,否则宽度减 150。补充后的具体代码如下: Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Select Case Button Case 1当单击鼠标左键时 Textl Width=Textl Width+150Textl的宽度加 150 Case 2当单
10、击鼠标右键时 Textl Width=Textl Width-150Textl的宽度减 150 End Select If Textl WidthForml Width Then Textl Width=Forml Width当 Textl的宽度大于Forml的宽度,则不再增加 Elself Textl Width 按钮运行程序,并按要求保存。 (2)本题主要考查 For循环控制语句与字符串的操作。根据题意,将一个标签和两个命令按钮添 加到窗体中,标签的名称为 Labell,命令按钮的名称分别为Commandl和 Command2, Caption属性分别为 “显示 ”和 “关闭 ”。双击 C
11、ommandl进入代码窗口,补充后的代码如下: Private Sub Commandl_Click() Dim i As Integer Dim i AS Integer Dim str As String Dim tmp As String 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+v
12、bCrLf将一行放人字符串中然后换行 Next i Labell Caption=str在Label中显示三角形 Commandl Caption=“完成 “ Commandl Enabled=False End Sub Private Sub Command2_Click() Unload Me End Sub 单击 按钮运行程序,并按要求保存。 三、综合应用题( 30分) 3 【正确答案】 根据题意要求将一个文本框控件和两个命令按钮,其中文本框的名称为 Namel, MultiLine属性为 True,滚动属性为 2;命令按钮的名称分别为Commandl和 Command2, Captio
13、n的属性分别为读取和保存。然后将 mode5 bas模板加入到工程中 (右键单击工程名,然后选择加入 modules(模板 ),选择mode5 bas)。 模板代码如下: 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)
14、Open App Path&“ result txt“For Output As#1 Write#1,total Close#1 End Function 单击 Commandl进入代码窗口,补充后的代码如下: Dim a(50)As Long全局变量 Dim str(50)As String全局变量 Private Sub Commandl Click() Textl Text=“ Open App Path&“ in txt“For Input As#1打开 “in txt“文件 Dim i As Integer Dim temp As Integer For i=0 To 49 Inpu
15、t#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 Textl Text=“ total=0 For i=0 To 29 str(i)=a(i) Textl Text=Text1 Text+str(i)+vbCrLf 将数组中的前 30个数放人 Text中 显示 writeData(str(i) 将结果保存到 result txt中 Next i End Sub单击 按钮运行程序,并按要求保存。