1、VB 机试-试卷 11 及答案解析(总分:12.00,做题时间:90 分钟)一、基本操作题(总题数:2,分数:4.00)1.基本操作题()(分数:2.00)_2.在名称为 Forml 的窗体上添加两个名称分别为 Framel、Frame2 的框架,标题分别为“字号”、“修饰”;在 Framel 中添加两个单选按钮,名称分别为 Optionl、Option2,标题分别为“10 号字”、“20 号字”,且标题显示在单选按钮的左边;在 Frame2 中添加 1 个名称为 Checkl 的复选框,标题为“下划线”。程序运行后的窗体界面如图 611 所示。 注意:存盘时必须存放在考生文件夹下,工程文件名
2、保存为sjlvbp,窗体文件名保存为 sjlfrm。 (2)在名为 Forml 的窗体上绘制一个文本框,名为 Textl,无初始内容;再绘制一个图片框,名为 Picl。请编写 Text1 的 Change 事件过程,使得在运行时,在文本框中每输入一个字符,就在图片框中输出一行文本框中的完整内容。运行时的窗体如图 612 所示。(分数:2.00)_二、简单应用题(总题数:2,分数:4.00)3.简单应用题()(分数:2.00)_4.(1)在考生文件夹中有一个工程文件 sj3vbp 和一个窗体文件 sj3frm。窗体上有一个名为 Textl 的文件框,一个标题为“计算”、名称为 Commandl
3、的命令按钮和一个组合框。请在名为 Combo1 的组合框中输入 3 个列表项:“5”、“9”和“13”(列表项的顺序不限,但必须是这 3 个数字),程序运行情况如图363 所示。 请编写适当的事件过程,使得程序运行时,在组合框中选定一个数字后,单击“计算”按钮,则计算 4000 以内能够被该数整除的所有数之和,并放入 Textl 中。最后,按原文件名存盘(提示:由于计算结果较大,应使用长整型变量)。 注意:不得修改窗体文件中已经存在的程序,在结束程序运行之前,必须至少进行一次计算。必须用窗体右上角的关闭按钮结束程序,否则无成绩。 (2)在考生文件夹中有一个工程文件 sj4vbp 及窗体文件 s
4、j4frm。在名为 Forml 的窗体上有一个圆和一条直线(直线的名称为 Linel)构成一个钟表的图案;有两个命令按钮,名称分别为 Commandl 和 Command2,标题分别为“开始”和“暂停”;还有一个名为 Timerl 的计时器。 程序运行时,钟表指针不动,单击开始按钮,则钟表上的指针(即 Linel)开始顺时针旋转(每秒转 6 。 ,一分钟转一圈);单击暂停按钮,则指针暂停旋转。运行时的窗体如图 364 所示。请设置计时器的适当属性,使得每秒激活计时器的 Timer 事件一次;编写两个按钮的 Click 事件过程。文件中已经给出了所有控件和部分程序,不得修改已有程序和其他控件的属
5、性;编写的事件过程中不得使用变量,且只能写一条语句。最后,按原文件名并在原文件夹中保存修改后的文件。 (分数:2.00)_三、综合应用题(总题数:2,分数:4.00)5.综合应用题()(分数:2.00)_6.在考生文件夹中有工程文件 sj5vbp 及其窗体文件 sj5frm,该程序是不完整的。在名称为 Forml 的窗体上有一个文本框,名称为 Textl、MuItiLine 属性为 True、ScrollBars 属性为 2;两个命令按钮,名称分别为 Commandl 和 Command2、标题分别为“读取”和“排序保存”,如图 185 所示。程序运行后,如果单击“读取”按钮,则读入 intx
6、t 文件中的 50 个整数,放入一个数组中(数组下界为 1);如果单击“排序保存”按钮,则对这 50 个整数按从小到大的顺序进行排序,把排序后的全部数据在文本框Textl 中显示出来,然后存人考生文件夹的 outtxt 文件中。(考生文件夹下的标准模块 mode5has 中的 writedata 过程可以把指定个数的数组元素存入 outtxt 文件。) (分数:2.00)_VB 机试-试卷 11 答案解析(总分:12.00,做题时间:90 分钟)一、基本操作题(总题数:2,分数:4.00)1.基本操作题()(分数:2.00)_解析:2.在名称为 Forml 的窗体上添加两个名称分别为 Fram
7、el、Frame2 的框架,标题分别为“字号”、“修饰”;在 Framel 中添加两个单选按钮,名称分别为 Optionl、Option2,标题分别为“10 号字”、“20 号字”,且标题显示在单选按钮的左边;在 Frame2 中添加 1 个名称为 Checkl 的复选框,标题为“下划线”。程序运行后的窗体界面如图 611 所示。 注意:存盘时必须存放在考生文件夹下,工程文件名保存为sjlvbp,窗体文件名保存为 sjlfrm。 (2)在名为 Forml 的窗体上绘制一个文本框,名为 Textl,无初始内容;再绘制一个图片框,名为 Picl。请编写 Text1 的 Change 事件过程,使得
8、在运行时,在文本框中每输入一个字符,就在图片框中输出一行文本框中的完整内容。运行时的窗体如图 612 所示。(分数:2.00)_正确答案:(正确答案:(1)根据题意,新建“标准 EXE”工程,在窗体上添加 2 个框架,2 个单选按钮和1 个复选框,2 个框架的名称分别为 Framel 和 Frame2,Caption 属性分别为“字号”和“修饰”,2 个单选按钮的名称分别为 Optionl 和 Option2,Caption 属性分别为“10 号字”和“20 号字”,复选框名称为Checkl,Caption 属性为“下画线”。单击 )解析:二、简单应用题(总题数:2,分数:4.00)3.简单应
9、用题()(分数:2.00)_解析:4.(1)在考生文件夹中有一个工程文件 sj3vbp 和一个窗体文件 sj3frm。窗体上有一个名为 Textl 的文件框,一个标题为“计算”、名称为 Commandl 的命令按钮和一个组合框。请在名为 Combo1 的组合框中输入 3 个列表项:“5”、“9”和“13”(列表项的顺序不限,但必须是这 3 个数字),程序运行情况如图363 所示。 请编写适当的事件过程,使得程序运行时,在组合框中选定一个数字后,单击“计算”按钮,则计算 4000 以内能够被该数整除的所有数之和,并放入 Textl 中。最后,按原文件名存盘(提示:由于计算结果较大,应使用长整型变
10、量)。 注意:不得修改窗体文件中已经存在的程序,在结束程序运行之前,必须至少进行一次计算。必须用窗体右上角的关闭按钮结束程序,否则无成绩。 (2)在考生文件夹中有一个工程文件 sj4vbp 及窗体文件 sj4frm。在名为 Forml 的窗体上有一个圆和一条直线(直线的名称为 Linel)构成一个钟表的图案;有两个命令按钮,名称分别为 Commandl 和 Command2,标题分别为“开始”和“暂停”;还有一个名为 Timerl 的计时器。 程序运行时,钟表指针不动,单击开始按钮,则钟表上的指针(即 Linel)开始顺时针旋转(每秒转 6 。 ,一分钟转一圈);单击暂停按钮,则指针暂停旋转。
11、运行时的窗体如图 364 所示。请设置计时器的适当属性,使得每秒激活计时器的 Timer 事件一次;编写两个按钮的 Click 事件过程。文件中已经给出了所有控件和部分程序,不得修改已有程序和其他控件的属性;编写的事件过程中不得使用变量,且只能写一条语句。最后,按原文件名并在原文件夹中保存修改后的文件。 (分数:2.00)_正确答案:(正确答案:(1)组合框(ComboBox)将文本框与列表框的特性组合在一起,既可在组合框的文本框部分输入信息,也可在列表框部分选择项目;组合框的列表项可以在设计阶段通过其 List 属性加入,加入时注意每输入完一项后按“Ctrl+Enter”组合键换行再输入下一
12、项,也可以通过代码设置,Addhem方法用来向组合框中添加一个表项,其格式为:组合框Additem 列表项索引。 题目给出的源程序中已给设计好窗体,只需在 Combol 的 List 属性中添加“5”、“9”和“13”三个列表项,添加完成后,双击 Commandl 进入代码窗口,补充后的代码如下: Private Sub Commandl_Click() If Comb01Text=5 Then divide(5) Elself Comb01Text=9 Then divide(9) Else divide( 13 ) End If End Sub Private Sub divide(X A
13、S Integer) Dim i As Integer Dim temp As Long For i=1 TO 4000 If i Mod x=0 Then temp=temp+i End If Next i TextlText=temp End Sub 单击 按钮运行程序并按要求保存。 (2)本题主要考查计时器控件和形状控件和用法。计时器的 Interval 属性用于设置每次触发计时器的Timer 事件的时间间隔,单位为毫秒。Enabled 属性控制计时器是否开始启用,True 表示启用,False 表示不启用。形状控件用来绘制各种形状,其值有 6 种,0 表示矩形,1 表示正方形,2 表示
14、椭圆,3 表示圆形,4 表示圆角矩形,5 表示圆角正方形。 根据题意,将计时器的 Interval 属性设为 1 000,双击Commandl 命令按钮,进入代码窗口,源程序给出的代码如下: Dim lenth As Integer,q As Integer Const PI=314159 Private Sub Form Load() lenth=LinelY2-LinelY1 q=90 End Sub Private Sub Timerl_Timer() q=q-6 Linel.Y1=LinelY2-lenth*Sin(q*PI180) LinelX1=LinelX2+lenth*Cos(
15、q*PI180) End Sub 补充后的命令按钮事件如下: Private Sub Commandl Click() TimerlEnabled=True End Sub Private Sub Command2_Click() Timerl=False End Sub 单击 )解析:三、综合应用题(总题数:2,分数:4.00)5.综合应用题()(分数:2.00)_解析:6.在考生文件夹中有工程文件 sj5vbp 及其窗体文件 sj5frm,该程序是不完整的。在名称为 Forml 的窗体上有一个文本框,名称为 Textl、MuItiLine 属性为 True、ScrollBars 属性为 2
16、;两个命令按钮,名称分别为 Commandl 和 Command2、标题分别为“读取”和“排序保存”,如图 185 所示。程序运行后,如果单击“读取”按钮,则读入 intxt 文件中的 50 个整数,放入一个数组中(数组下界为 1);如果单击“排序保存”按钮,则对这 50 个整数按从小到大的顺序进行排序,把排序后的全部数据在文本框Textl 中显示出来,然后存人考生文件夹的 outtxt 文件中。(考生文件夹下的标准模块 mode5has 中的 writedata 过程可以把指定个数的数组元素存入 outtxt 文件。) (分数:2.00)_正确答案:(正确答案:根据题意将一个文本框控件和两个
17、命令按钮添加到窗体中,根据题意的要求设置属性,即文本框的名称为 Textl,MultiLine 属性为 true,滚动属性为 2,而两个命令按钮的控件的Caption 属性分别为“读取”和“排列保存”,名称为 Commandl 和 Command2,将 mode5has 模板加入到工程中(右键单击工程名,然后选择进入 modules(模板),选择 mode5has),模板的代码如下: Sub putdata(a()As Integer,n As Integer) Dim sFile AS String sFile=“outtxt“ Open AppPath&sFile For Outpu!As
18、#1 For i=1 To n Print#1,a(i); Next i Close#1 End Sub 双击Command1,进入代码编写窗 Vl,采用边读取边排序的方法,一旦读取的数比某个位置 n 的数大,则 n 之后的数将向后移一个数,而将新读取的数放到 n 的位置上,代码如下: Option Explicit Dim i(1 To 50)As Integer Private Sub Commandl_Click() Dim j As Integer Open AppPath&“intxt“For Input As#1 For i=l TO 50 Input#1,i(j) TextlTe
19、xtm=TextlText&i(j)&Space(5) Next j Close#1 End Sub Private Sub Command2_Click() Dim j As Integer Dim k As Integer Dim ternp As Integer Dim1ag AS Boolean For j=1 To 50 flag= False For k=1 To 50-j If i(k) temp flag=True End If Next k If Not flag Then Exit For End If Next j Text1 Text=“ For j=1 To 50 Textl Text=Textl Text& i(j)&Space(5) Next j putdata i, 50 End Sub 单击 *按钮运行程序,并按要求保存。 )解析: