1、二级 VISUAL+BASIC 机试-93 及答案解析(总分:100.00,做题时间:90 分钟)一、1 基本操作题(总题数:1,分数:30.00)请根据以下各小题的要求设计 Visual Basic 应用程序(包括界面和代码)。(分数:30.00)(1).在名称为 Form1 的窗体上放置一个名称为 Drive1 的驱动列表框控件,一个名称为 Dir1 的目录列表框控件、一个名称为 File1 的文件列表框控件。程序运行时,可以对系统中的文件进行浏览,如下图所示。注意:程序中不得使用任何变量,保存时必须存放在考生文件夹下,窗体文件名为 sj1.frm,工程文件名为 sj1.vbp。*(分数:
2、15.00)_(2).在名称为 Form1 的窗体上放置一个名为 Label1 的标签控件和一个名为 Timer1 的计时器控件,程序运行后,文本框中显示的是当前的时间,而且每一秒文本框中所显示的时间都会随时间的变化而改变,并且显示的字体为四号宋体字,如下图所示。注意:程序中不得使用任何变量,保存时必须存放在考生文件夹下,窗体文件名为 sj2.frm,工程文件名为 sj2.vbp。*(分数:15.00)_二、2 简单应用题(总题数:2,分数:40.00)1.在考生文件夹下有工程文件 sj3.vbp 及窗体文件 sj3.frm,该程序是不完整的,请在有“?”的地方填入正确内容,然后删除“?”及代
3、码前的所有注释符(即号),但不能修改其他部分。存盘时不得改变文件名和文件夹,如下图所示。在名称为 Form1 的窗体上有 3 个 Text 控件及 5 个命令按钮,功能为:开始启动工程时,界面上除“读取数据”及“关闭”按钮有效之外,其他按钮均不可用(灰色显示);单击“读取数据”按钮之后,利用InputBox 让用户连续且必须输入 8 个数。若录入为非数字符号,则给出提示“输入数据无效,请重新输入:”。输入完毕后,“读取数据”变灰,其他变为可用状态;按相应的按钮可分别求出所输入数据的升序排列及平均值,并在右侧对应的文本框中显示(注意用 A(8)存放最大数,A(1)存放最小数);单击“清空”按钮将
4、所有文本框清空。(分数:20.00)_2.在考生文件夹下有工程文件 sj4.vbp 及窗体文件 sj4.frm,该程序是不完整的,请在有“?”的地方填入正确内容,然后删除“?”及代码前的所有注释符(即号),但不能修改其他部分。存盘时不得改变文件名和文件夹,如右图所示。在名称为 Form1 的窗体上有 3 个 Labe1 控件、两个 Text 控件和两个命令按钮。该程序的主要功能是求从1 到 Text1 中用户输入的任意自然数 n 的累加和。刚启动时,可以在输入框内输入任意自然数(n 值太大时,运算时间将很长,建议不超过 4 位)。当输人为非数值时,累加结果为 0;单击“开始”按钮可以在 Tex
5、t2中显示累加和。同时“开始”变为“完成”并变灰;单击“关闭”按钮结束程序的运行。(分数:20.00)_三、3 综合应用题(总题数:1,分数:30.00)3.在考生文件夹下有工程文件 si5.vbp 及窗体文件 sj5.frm,该程序是不完整的,请在有“?”的地方填入正确内容,然后删除“?”及代码前的所有注释符(即号),但不能修改其他部分。存盘时不得改变文件名和文件夹,相应的 dat 文件也保存到考生文件夹下,否则没有成绩。本题描述如下:在名称为 Form1 的窗体上有一个 Labe1 控件和两个命令按钮,数据文件 in5.dat 存放了一些成绩。按“开始”按钮后,从考生文件夹下的 in5.d
6、at 中读出数据并求出它们的总分和平均分,将结果写入考生文件夹下的 out5.dat 文件中,程序运行界面如下图所示。执行完毕,“开始”按钮变成“完成”,且无效(变灰)。(分数:30.00)_二级 VISUAL+BASIC 机试-93 答案解析(总分:100.00,做题时间:90 分钟)一、1 基本操作题(总题数:1,分数:30.00)请根据以下各小题的要求设计 Visual Basic 应用程序(包括界面和代码)。(分数:30.00)(1).在名称为 Form1 的窗体上放置一个名称为 Drive1 的驱动列表框控件,一个名称为 Dir1 的目录列表框控件、一个名称为 File1 的文件列表
7、框控件。程序运行时,可以对系统中的文件进行浏览,如下图所示。注意:程序中不得使用任何变量,保存时必须存放在考生文件夹下,窗体文件名为 sj1.frm,工程文件名为 sj1.vbp。*(分数:15.00)_正确答案:(文件系统控件有 3 种:驱动器列表框(Drive List Box)、目录列表框(Dir List Box)和文件列表框(File List Box)。3 个文件系统控件必须协调工作才能构成一个文件管理系统,当用户在驱动器列表框中选择一个新的列表框或当目录列表框的 Path 属性改变会触发 Change 事件,将三者实现同步的代码为:File1.Path=Dir1.Path,Dir
8、1.Path=Drive1.Drive。根据题意,新建“标准 EXE”工程,将一个分区列表框控件、一个目录列表框控件和一个文件列表框控件添加到窗体中,分区列表框的名称为 Drive1,目录列表框的名称为 Dir1,文件列表框的名称为 File1。双击 Drive1,进入代码窗口,编写如下代码:Private Sub Dir1_Change() 将 File1 和 Dir1 相连File1.Path=Dir1End SubPrivate Sub Drive1_Change()Dir1.Path=Drive1.Drive 将 Drive1 和 Dir1 相连End Sub单击 )解析:(2).在名
9、称为 Form1 的窗体上放置一个名为 Label1 的标签控件和一个名为 Timer1 的计时器控件,程序运行后,文本框中显示的是当前的时间,而且每一秒文本框中所显示的时间都会随时间的变化而改变,并且显示的字体为四号宋体字,如下图所示。注意:程序中不得使用任何变量,保存时必须存放在考生文件夹下,窗体文件名为 sj2.frm,工程文件名为 sj2.vbp。*(分数:15.00)_正确答案:(计时器控件是以一定的时间间隔激发计时器事件而执行相应的代码,其 Interval 属性决定时间问隔的长短,以毫秒为单位。所以要实现每一秒文本框的时间改变,只要将该属性设置为 1000,要使程序运行后取得当前
10、时间可用 Time 函数,程序用到的 Str 函数将其中的内容转化为字符串。根据题意,新建“标准 EXE”工程,将一个标签和一个计时控件添加到窗体中,将标签的名称设为Label1、字体大小设为四号宋体,Timer 的名称为 Timer1。双击 Timer1,进入代码编写窗 12,编写以下代码:Private Sub Form_Load()Label1.Caption=Str(Time)End SubPrivate Sub Timer1_Timer()Label1.Caption=Str(Time)End Sub单击 )解析:二、2 简单应用题(总题数:2,分数:40.00)1.在考生文件夹下有
11、工程文件 sj3.vbp 及窗体文件 sj3.frm,该程序是不完整的,请在有“?”的地方填入正确内容,然后删除“?”及代码前的所有注释符(即号),但不能修改其他部分。存盘时不得改变文件名和文件夹,如下图所示。在名称为 Form1 的窗体上有 3 个 Text 控件及 5 个命令按钮,功能为:开始启动工程时,界面上除“读取数据”及“关闭”按钮有效之外,其他按钮均不可用(灰色显示);单击“读取数据”按钮之后,利用InputBox 让用户连续且必须输入 8 个数。若录入为非数字符号,则给出提示“输入数据无效,请重新输入:”。输入完毕后,“读取数据”变灰,其他变为可用状态;按相应的按钮可分别求出所输
12、入数据的升序排列及平均值,并在右侧对应的文本框中显示(注意用 A(8)存放最大数,A(1)存放最小数);单击“清空”按钮将所有文本框清空。(分数:20.00)_正确答案:(用数组 str(8)来接收 InputBox 输入的 8 个数,InputBox 的格式为:InputBox(提示,标题,默认,x 坐标位置.Y 坐标位置);Enabled 属性可设置控件是否可用,当该值为 True 时可用,为 False时不可用(灰色);Val()函数将字符转换成数值。根据题意,将 5 个命令按钮和 3 个文本框控件添加到窗体中,命令按钮的名称分别为Command1、Command2、Command3、C
13、ommand4 和 Command5,Caption 属性分别为“读取数据”、“升序显示”、“平均值”、“清空”和“关闭”,文本框的名称分别为 Text1、Text2 和 Text3,Text 属性都为空。双击 Command1 进入代码窗口,补充后的代码如下:Dim a(8) As LongDim str(8) As StringPrivate Sub Command1_Click()Dim strl As StringDim str2 As StringDim str3 As StringDim i As Integerstr3=“ “For i=1 To 8str2=istr1=“输入第
14、“str1=str1+str2str1=str1+“个数“str(i)=InputBox(str1)If str(i)=“ “Then 如果按取消则重新初始化对话框Form_LoadEnd IfWhile Asc(str(i)Asc(“9“) Or Asc(str(i)Asc(“0“)If str(i)=“ “ThenForm_LoadEnd Ifstr(i)=InputBox(“输入数据无效,请重新输入:“)Wenda(i)=Val(str(i)str3=str3+str(i)+“ “Next iCommand1.Enabled=FalseCommand2.Enabled=TrueComma
15、nd3.Enabled=TrueCommand4.Enabled=TrueText1.Text=str3End SubPrivate Sub Command2_Click()Dim i As IntegerDim k As IntegerDimj As IntegerDim temp As LongDim str As StringDim temp As StringFor i=1 To 8 升序排列temp=a(i)For j=0 To iIf a(j)temp Then 读取的数据比原位置的数据大For k=i To j+1 Step-1a(k)=a(k-1) 数据向后移Next ka(j
16、)tempExit ForEnd IfNext jNext iFor i1 To 8temp=a(i)str=str+temp+“ “Next iText2.Text=strEnd SubPrivate Sub Command3_Click() 求平均数Dim i As IntegerDim total As Longtotal=0For i=1 To 8total=total+a(i)Next itotal=total/8Text3.Text=totalCommand1.Enabled=FalseCommand2.Enabled=TrueCommand3.Enabled=FalseComma
17、nd4.Enabled=TrueEnd SubPrivate Sub Command4_Click() 清空所有文本框Text1.Text=“ “Text2.Text=“ “Text3.Text=“ “Command1.Enabled=TrueCommand2.Enabled=FalseCommand3.Enabled=FalseCommand4.Enabled=FalseEnd SubPrivate Sub Command5_Click() 关闭对话框Unload MeEnd SubPrivate Sub Form_Load() 初始化对话框Command1.Enabled=TrueComm
18、and2.Enabled=FalseCommand3.Enabled=FalseCommand4.Enabled=FalseCommand5.Enabled=TrueEnd Sub单击 )解析:2.在考生文件夹下有工程文件 sj4.vbp 及窗体文件 sj4.frm,该程序是不完整的,请在有“?”的地方填入正确内容,然后删除“?”及代码前的所有注释符(即号),但不能修改其他部分。存盘时不得改变文件名和文件夹,如右图所示。在名称为 Form1 的窗体上有 3 个 Labe1 控件、两个 Text 控件和两个命令按钮。该程序的主要功能是求从1 到 Text1 中用户输入的任意自然数 n 的累加和。
19、刚启动时,可以在输入框内输入任意自然数(n 值太大时,运算时间将很长,建议不超过 4 位)。当输人为非数值时,累加结果为 0;单击“开始”按钮可以在 Text2中显示累加和。同时“开始”变为“完成”并变灰;单击“关闭”按钮结束程序的运行。(分数:20.00)_正确答案:(要计算累加和通常利用 For 循环来完成。文本框中的内容(包括数字)默认都是当做字符串来处理的,如果要参与数据运算,则需先用 Val()函数将其转化为数字。根据题意,将 3 个标签、两个命令按钮和两个文本框控件添加到窗体中,标签的 Caption 属性分别为“要求:程序能得到结果 total,total=1+2+3+n”、“输
20、入 n(0n=9999)”和“结果是”,命令按钮的名称分别为 Command1 和 Cornmand2,Caption 属性分别为“开始”和“关闭”,文本框的名称分别为Text1 和 Text2,Text 属性都为空。双击 Command1 进入代码编写窗口,补充后的具体代码如下:Private Sub Command1_Click() 开始命令按键Dim i As IntegerDim total As Longn=Val(Text1.Text) 获得 ntotal=0For i=1 To ntotal=total+i 累加Next iText2.Text=totalCommand1.Ena
21、bled=False 完成后 Command1 不可用Command1.Caption=“完成“ 名称改为完成End SubPrivate Sub Command2_Click() 关闭命令按键Unload MeEnd Sub单击 )解析:三、3 综合应用题(总题数:1,分数:30.00)3.在考生文件夹下有工程文件 si5.vbp 及窗体文件 sj5.frm,该程序是不完整的,请在有“?”的地方填入正确内容,然后删除“?”及代码前的所有注释符(即号),但不能修改其他部分。存盘时不得改变文件名和文件夹,相应的 dat 文件也保存到考生文件夹下,否则没有成绩。本题描述如下:在名称为 Form1
22、的窗体上有一个 Labe1 控件和两个命令按钮,数据文件 in5.dat 存放了一些成绩。按“开始”按钮后,从考生文件夹下的 in5.dat 中读出数据并求出它们的总分和平均分,将结果写入考生文件夹下的 out5.dat 文件中,程序运行界面如下图所示。执行完毕,“开始”按钮变成“完成”,且无效(变灰)。(分数:30.00)_正确答案:(命令按钮的标题由 Caption 属性来设置单击命令按钮触发 Click 事件;执行完毕,“开始”按钮变成“完成”,且无效(变灰);Open“in5.dat“For Input As # 1 以只读方式打开文件,读出数据;程序中用到的 Input 读文件的格式
23、为:Input #文件号,变量列表,在将数据写入文件时,要使用 write #语句而不是使用 Print #语句,因为 Write #语句能够将各个数据项正确区分开。根据题意,将一个标签和两个命令按钮添加到窗体中,标签的 Caption 属性为“从考生文件夹下的in5.dat 中读出数据并求出它们的总分和平均分,将结果写入考生文件夹下的 out5.dat 文件中”,命令按钮的名称分别为 Command1 和 Command2,Caption 属性分别为“开始”和“关闭”。双击 Command1 进入代码编写窗口,利用 EOF 来判断是否读完数据,利用计数记录读取数据的个数,补充后的具体代码如下
24、:Private Sub Command1_Click() 开始命令Dim total As LongDim temp As IntegerDim str As StringDim num As Integertotal=0num=0Open“in5.dat“ For Input As # 1 打开文件进行读取While EOF(1)=False 如果没读到文件尾继续读取Input # 1,strtemp=Val(str) 将读到的字符串转换成数值total=total+temp 进行累加num=num+1 计数加 1WendClose # 1Open“out5.dat“ For Output As # 2 打开文件,进行写入write # 2,“总和是“write # 2,total 写入总和write # 2,“平均值是“Write # 2,total/num 写入平均值Command1.Enabled=False 计算完成后 Command1 不可用Command1.Caption=“完成“ Command1 的名称变为完成End SubPrivate Sub Command2_Click() 关闭命令Unload Me End Sub单击 )解析: