1、二级 VISUAL+BASIC 机试-101 及答案解析(总分:100.00,做题时间:90 分钟)一、1 基本操作题(总题数:1,分数:30.00)请根据以下各小题的要求设计 Visual Basic 应用程序(包括界面和代码)。(分数:30.00)(1).在名称为 Form1 的窗体上建立一个名称为 Command1、标题为“显示”的命令按钮,一个名称为 Text1的文本框,运行界面如下图所示。要求程序运行后,在文本框中输入几个字符,单击“显示”按钮,则在窗体上显示文本框中的文字。*注意:在程序中不能使用任何变量。保存时必须存放在考生文件夹下,窗体文件名为 sj1.frm,工程文件名为 s
2、j1.vbp。(分数:15.00)_(2).在名称为 Form1 的窗体上建立两个名称分别为 Commandl 和 Command2,标题为“按钮 A”和“按钮B”的命令按钮,运行界面如下图左图所示。要求程序运行后,如果单击“按钮 A”,则使两个按钮重合,如下图右图所示。注意:在程序中不得使用任何变量(必须通过属性设置来移动控件)。保存时必须存放在考生文件夹下,窗体文件名为 sj2.frm,工程文件名为 sj2.vbp。* *(分数:15.00)_二、2 简单应用题(总题数:2,分数:40.00)1.在考生文件夹中有工程文件 sj3.vbp 及其窗体文件 sj3.frm,该程序是不完整的。请在
3、有“?”的地方填入正确内容,然后删除“?”及代码前的所有注释符(即号),但不能修改其他部分。存盘时不得改变文件名和文件夹。本题描述如下:在窗体上有一个名称为 Command1、标题为“求和”的命令按钮,3 个名称分别为 Text1、Text2 和 Text3的文本框,运行界面如下图所示。要求程序运行后,在 Text1 和 Text2 中分别输入两个整数,单击“求和”按钮后,可把两个整数之间的所有奇数(不含输入的两个整数)累加起来并在 Text3 中显示。(分数:20.00)_2.在考生文件夹中有工程文件 sj4.vbp 及其窗体文件 sj4.frm,该程序是不完整的。请在有“?”的地方填入正确
4、内容,然后删除“?”及代码前的所有注释符(即号),但不能修改其他部分。存盘时不得改变文件名和文件夹。在窗体上建立一个名称为 Text1 的文本框,建立一个名称为 command1、标题为“计算”的命令按钮,如下图所示。要求程序运行后,如果单击“计算”按钮,则求出 50200 之间所有可以被 5 整除的数的总和,在文本框中显示出来,并把结果存人考生文件夹下的 out.txt 文件中(在考生的文件夹下有一个modebas 标准模块,该模块中提供了保存文件的过程 writedata,考生可以直接调用)。(分数:20.00)_三、3 综合应用题(总题数:1,分数:30.00)3.在考生文件夹中有工程文
5、件 st5.vbp 及其窗体文件 sj5.frm,该程序是不完整的,请在有“?”的地方填入正确内容,然后删除“?”及代码前的所有注释符(即号),但不能修改其他部分。存盘时不得改变文件名和文件夹。本题描述如下:在名称为 Form1 的窗体上有一个文本框,名称为 Text1、MultiLine 属性为 True、ScrolIBars 属性为 2,两个命令按钮,名称分别为 Command1 和 Command2,标题分别为“读入”和“排列保存”,运行界面如下图所示。要求程序运行后,如果单击“读入”按钮,则从“in.txt”文件中读入 50 个整数,放入一个数组中(数组下界为 1);如果单击“排列保存
6、”按钮,则对这 50 个数从大到小进行排序,把排序后的全部数据在文本框 Text1 中显示出来,然后存入考生文件夹中的“result.txt”文件中(在程序中的标准模块mode5.bas 过程可以把指定个数的数组元素存入 result.txt 文件)。注意:文件必须存放在考生文件夹下,窗体文件名为 sj5.frm,工程文件名为 sj5.vbp,排序结果存入result.txt 文件,否则没有成绩。(分数:30.00)_二级 VISUAL+BASIC 机试-101 答案解析(总分:100.00,做题时间:90 分钟)一、1 基本操作题(总题数:1,分数:30.00)请根据以下各小题的要求设计 V
7、isual Basic 应用程序(包括界面和代码)。(分数:30.00)(1).在名称为 Form1 的窗体上建立一个名称为 Command1、标题为“显示”的命令按钮,一个名称为 Text1的文本框,运行界面如下图所示。要求程序运行后,在文本框中输入几个字符,单击“显示”按钮,则在窗体上显示文本框中的文字。*注意:在程序中不能使用任何变量。保存时必须存放在考生文件夹下,窗体文件名为 sj1.frm,工程文件名为 sj1.vbp。(分数:15.00)_正确答案:(根据题意,新建“标准 ExE”工程,将一个文本框控件和一个命令按钮添加到窗体中,将文本框的名称设为 Text1,将命令按钮的名称设为
8、 Command1,Caption 属性为显示。双击 Command1,进入代码编写窗口,编写如下代码:Private Sub Command1_Click() 单击按钮“显示”调用的函数Print Text1.TextEnd Sub单击 )解析:(2).在名称为 Form1 的窗体上建立两个名称分别为 Commandl 和 Command2,标题为“按钮 A”和“按钮B”的命令按钮,运行界面如下图左图所示。要求程序运行后,如果单击“按钮 A”,则使两个按钮重合,如下图右图所示。注意:在程序中不得使用任何变量(必须通过属性设置来移动控件)。保存时必须存放在考生文件夹下,窗体文件名为 sj2.f
9、rm,工程文件名为 sj2.vbp。* *(分数:15.00)_正确答案:(本题考查按钮的摆放位置的设置,涉及对象的 Left 和 Top 属性。命令按钮的标题通过Caption 属性来设置,单击命令按钮触发 Click 事件。Left 表示控件与所在窗体的左边之间的距离,Top表示控件与所在窗体的顶边之间的距离。让两个按钮位置重合只需将两个按钮的 Left 和 Top 设置相同即可。根据题意,新建“标准 EXE”工程,并排放入两个命令按钮,名称分别为 Command1 和 Command2、Caption属性分别为“按钮 A”和“按钮 B”,要求按下按钮 A 后,按钮 B 的位置发生变化,双
10、击 Command1,进入代码编辑区,输入以下代码:Private Sub Command1_Click() 按钮 A 的事件函数Command2.Left=Command1.Left 改变按钮 B 的位置Command2.Top=Command1.TopEnd Sub单击 )解析:二、2 简单应用题(总题数:2,分数:40.00)1.在考生文件夹中有工程文件 sj3.vbp 及其窗体文件 sj3.frm,该程序是不完整的。请在有“?”的地方填入正确内容,然后删除“?”及代码前的所有注释符(即号),但不能修改其他部分。存盘时不得改变文件名和文件夹。本题描述如下:在窗体上有一个名称为 Comma
11、nd1、标题为“求和”的命令按钮,3 个名称分别为 Text1、Text2 和 Text3的文本框,运行界面如下图所示。要求程序运行后,在 Text1 和 Text2 中分别输入两个整数,单击“求和”按钮后,可把两个整数之间的所有奇数(不含输入的两个整数)累加起来并在 Text3 中显示。(分数:20.00)_正确答案:(看一个数是否为奇数,只要判断此数是否能被 2 整除,若不能整除,则是奇数,否则不是奇数。如 N Mod 2=0 则说明余数为 0,N 能被 2 整除,否则 N 不能被 2 整除。根据题意将一个命令按钮和 3 个文本框控件添加到窗体中,命令按钮的名称属性为 Command1、C
12、aption 属性为“求和”,3 个文本框的名称分别为 Text1、Text2 和 Text3,然后双击 Command1 进入代码窗口,补充后的具体代码如下:Private Sub Command1_Click()Dim total As LongDim min AS IntegerDim max As IntegerDim a As Integermin=Text1.Text Text1 输入的整数max=Text2.Text Text2 输入的整数total=0For a=min+1 To max-1 循环操作If a Mod 2=1 Then 判断是否为奇数total=total+a
13、进行相加操作End IfNext aText3.Text=total 将得到的数输出到文本框 3End Sub单击 )解析:2.在考生文件夹中有工程文件 sj4.vbp 及其窗体文件 sj4.frm,该程序是不完整的。请在有“?”的地方填入正确内容,然后删除“?”及代码前的所有注释符(即号),但不能修改其他部分。存盘时不得改变文件名和文件夹。在窗体上建立一个名称为 Text1 的文本框,建立一个名称为 command1、标题为“计算”的命令按钮,如下图所示。要求程序运行后,如果单击“计算”按钮,则求出 50200 之间所有可以被 5 整除的数的总和,在文本框中显示出来,并把结果存人考生文件夹下
14、的 out.txt 文件中(在考生的文件夹下有一个modebas 标准模块,该模块中提供了保存文件的过程 writedata,考生可以直接调用)。(分数:20.00)_正确答案:(根据题意,将一个命令按钮和一个文本框控件添加到窗体中,命令按钮的名称Command1、Caption 属性为“计算”,文本框的名称为 Text1,本题是为了求 50200 之间能被 5 整除的数的和,显示到文本框中并保存到 out.txt 中。在“工程”窗口中单击鼠标右键,在弹出的快捷菜单中选择“添加”“添加模块”,然后在弹出对话框的“现存”选项卡中选择“mode.bas”,单击“确定”按钮即添加成功。模块 mode
15、.bas 中的代码如下:Function writeData(total As Long) 将数据保存到 outtxt 中Open “out.txt“For Output As#1 打开文件Write#1,total 进行写入Close#1End Function双击 Command1 进入代码窗口,补充后的代码如下:Private Sub Command1_Click()Dim total As LongDim n As Integertotal=0For n=50 To 200 循环操作If n Mod 5=0 Then 判断是否能被 5 整除total=total+n 进行相加操作End
16、 IfNext nText1.Text=total 在 Text1 中显示出来writeData(total) 写入 out.txt 文件中End Sub单击 )解析:三、3 综合应用题(总题数:1,分数:30.00)3.在考生文件夹中有工程文件 st5.vbp 及其窗体文件 sj5.frm,该程序是不完整的,请在有“?”的地方填入正确内容,然后删除“?”及代码前的所有注释符(即号),但不能修改其他部分。存盘时不得改变文件名和文件夹。本题描述如下:在名称为 Form1 的窗体上有一个文本框,名称为 Text1、MultiLine 属性为 True、ScrolIBars 属性为 2,两个命令按钮
17、,名称分别为 Command1 和 Command2,标题分别为“读入”和“排列保存”,运行界面如下图所示。要求程序运行后,如果单击“读入”按钮,则从“in.txt”文件中读入 50 个整数,放入一个数组中(数组下界为 1);如果单击“排列保存”按钮,则对这 50 个数从大到小进行排序,把排序后的全部数据在文本框 Text1 中显示出来,然后存入考生文件夹中的“result.txt”文件中(在程序中的标准模块mode5.bas 过程可以把指定个数的数组元素存入 result.txt 文件)。注意:文件必须存放在考生文件夹下,窗体文件名为 sj5.frm,工程文件名为 sj5.vbp,排序结果存
18、入result.txt 文件,否则没有成绩。(分数:30.00)_正确答案:(在本题中涉及文件的操作,用 Write#或 Input#语句读取数据,对文件操作完后一定要关闭文件。根据题意,将一个文本框控件和两个命令按钮添加到窗体中,根据题意的要求设置属性,即文本框的名称为 Text1、MultiLine 属性为 True、ScrollBar 属性为 2,两个命令按钮的控件的 Caption 属性分别为读取和排列保存,名称为 Command1 和 Command2。在“工程”窗口中单击鼠标右键,在弹出的快捷菜单中选择“添加”“添加模块”,然后在弹出对话框的“现存”选项卡中选择“mode5.bas
19、”,单击“确定”按钮即添加成功。模块的代码如下:Function writeData(total As Long)Open“result.txt“For Append As#1Write#1,totalClose#1End Function分析程序可知,程序在读取的同时就进行了排序,一旦读取的数比当前数大,则将两数位置交换,继续比较后面的数。补充后的具体代码如下:Dim str(50)As String 全局变量Dim a(50)As Long 全局变量Private Sub Command1_Click()Text1.Text=“ “Open“in.txt”For Input As#1Dim
20、 i As IntegerFor i=0 To 49Input#1,a(i)Next iFor i=0 To 49str(i)=a(i)Text1.Text=Text1.Text+str(i)+vbCrLfNext iClose#1End SubPrivate Sub Command2_Click()Dim j As IntegerDim j As IntegerDim temp As IntegerDim k As IntegerText1.Text=“ “For i=0 To 49temp=a(i)For j=0 To iIf a(j)temp ThenFor k=i To j+1 Step -1a(k)=a(k-1)Next ka(j)=tempExit ForEnd IfNext jNext iFor i=0 To 49str(i)=a(i)Text1.Text=Text1.Text+str(i)+vbCrLfwriteData(str(i)Next iEnd Sub单击 )解析: