1、VB 机试模拟试卷 185及答案与解析 一、基本操作题( 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 注意:下面出现的 “考生文件夹 ”均为 c: wexam25160001。 (1) 在考 生文件夹下有工程文件 sjt3.vbp及窗体文件 sjt3.frm,该程序是不完整的,请在有 ?号的地方填入正确内容,然后删除 ?及所
3、有注释符 (即 号 ),但不能修改其他部分。存盘时不得改变文件名和文件夹。如图 16-3所示。 在名称为 Form1的窗体上有 1个 Labe1控件,四个 Text控件及七个命令按钮,功能为:开始启动工程时,界面上除 “开始录入 ”及 “退出 ”按钮之外,其他按钮均不可用 (灰色显示 );单击 “开始录入 ”按钮之后,利用 InputBox让用户连续且必须录入 10个数。若录入为非数字符号,则给出警告“输入数据无效, 请重新输入数值数据,请输入第 n个数 ”;录入完毕后, “开始录入 ”变灰,其他变为可用状态;按相应的按钮可分别求出所录入数据的升序、降序排列及最大数和最小数,并在右侧对应的文本
4、框中显示 (注意用 A(10)存放最大数,A(1)存放最小数 );单击 “清除 ”按钮将所有文本框清空。 (2) 在考生文件夹下有工程文件 sit4.vbp及窗体文件 sjt4.frm,该程序是不完整的,请在有 ?号的地方填入正确内容,然后删除 ?及所有注释符 (即 号 ),但不能修改其他部分。存盘时不得改变文件名和文件夹。如图 16-4所示。 在名称为 Form1,标题为 “求和程序 ”的窗体上有3个 Labe1控件, 2个 Text控件和 3个命令按钮。该程序的主要功能是求从 1到Text1中用户输入的任意自然数 n的累加和。刚启动工程时, “显示结果 ”和 “清除 ”按钮均为灰色;可以在
5、输入框内输入任意自然数 (n值太大时,运算时间将很长,建议不超过 9位 )。在输入数的同时 “显示结果 ”变为可用。当输入为非数值时,累加结果为 0;单击 “显示结果 ”可以在 Text2中显示累加和,且该框内的文字不可修改,同时 “显示结果 ”变灰, “清除 ”变为可用;单击 “清除 ”,输入框和显示框均显示“0”单击 “关闭 ”按 钮结束程序的运行。三、综合应用题( 30分) 3 在考生文件夹下有一个工程文件 Sj5 vbp,窗体上有一个文本框,名称为Textl,可以多行显示。还有 3个命令按钮,名称分别为 Commandl、 Command2和Command3,标题分别为 “读取数据 ”
6、、 “降序排列 ”和 “保存 ”。 “读取数据 ”按钮的功能是从考生文件夹下的 in5 dat文件中读取 40个整数到数组中,并在 Textl中显示出来; “降序排列 ”按钮的功能是对这 40个数降序排序,并显示在 Textl中; “保存 ”按钮的功能是把排好序的 40个数存到考生文件夹 下的 out5 dat文件中。程序运行界面如图 385所示。 注意:在窗体中已经给出了全部控件和部分程序,要求阅读程序并去掉程序中的注释符 “”,把程序中的 “?”改为正确的内容,使其实现上述功能,但不能修改程序中的其他部分,也不能修改控件的属性。最后把修改后的文件按原文件名存盘。 VB 机试模拟试卷 185
7、答案与解析 一、基本操作题( 30分) 1 【正确答案】 (1)根据题意,新建 “标准 EXE”工程,将一个文本框控件和两个命令按钮添加到窗体中,文本框的名称为 Textl, Text属性为 “模拟考试 ”,命令按钮的名称为 Commandl和 Command2, Caption属性分别为 “显示 ”和 “隐藏 ”。双击Command,进入代码窗口,编写如下代码: Private Sub Commandl Click() Textl Visible=True Textl可见 End Sub Private Sub Command2 Click() Textl Visible=FalseText
8、l不可见 End Sub 单击 按钮运行程序,并按要求保存。 (2)根据题意,新建 “标准 EXE”工程,将一个 Command添加到窗体中,其 名称为Commandl、 Caption属性为 “向左移动 ”。双击 Commandl进入代码窗口,编写如下代码: Private Sub Commandl Click() Commandl Left=Commandl Left-500 End Sub 单击 按钮运行程序,并按要求保存。 二、简单应用题( 40分) 2 【正确答案】 在窗体上建立好控件后,先设置控件属性,再编写事件过程。 用数组 a(10)来接收 InputBox输入的 10数, I
9、nputBox的格式为: InputBox(提示 ,标题 ,默认 , X坐标位置 , Y坐标位置 );控件是否可用可利用其 Enabled属性设置,当该值为 True时可用,为 False时不可用 (灰色 );判断是否是数字可用IsNumeric(),如果是数字返回 True,否则返回 False;本程序中用到的排序方法是将某一个元素做为标杆,其后的每一个元素与其比较,若小于标杆则两者交换,依此类推,题中要求排完序后 a(1)至 a(10)依次存放大数,在文本框中显示升序和降序的时候只要两者反序显示即可,即升序可依次显示 a(1)到 a(10),降序可依次显示 a(10)到 a(1)。解题步骤
10、: 第一步 :建立界面并设置控件属性。程序中用到的控件及其属性见表 16-3。第二步:编写程序代码。 程序提供的代码: Option Explicit Dim a(10) As Variant Dim i As Integer, j As Integer Dim m As Single Private Sub Command1_Click() Text2.Text= Command1.Enabled=False Command7.Enabled=True End Sub Private Sub Command2_Click() Text3.Text=? Command2.Enabled=Fal
11、se Command7.Enabled=True End Sub Private Sub Command3_Click() For i=1 To 10 Text1.Text=Text1.Text &?& “,“ Next i Command3.Enabled=False Command7.Enabled=True End Sub Private Sub Command4_Click() For i=10 To 1 Step -1 Text4.Text=Text4.Text &?& “,“ Next i Command4.Enabled=False Command7.Enabled=True E
12、nd Sub Private Sub Command5_Click() End End Sub Private Sub Command6 Click() Label1.Enabled=False For i=1 To 10 a(i)=InputBox(“请输入第 “ & i & “个数 ,请务必输入数值数据 ! “,“输入 “) Do While IsNumeric(a(i) )=False a(i)=InputBox(“输入数据无效 ,请重新输入数值数据 ! ! !“ & “请输入第 “ & _ i & “个数 “,“输入 “) Loop Next i For i=1 To 9 For j=
13、i+1 To 10 If Val(a(j) ) ?Val(a(i) ) Then m=a(j) a(j)=a(i) a(i)=m End If Next j Next i Command6.Enabled=False Commandl.Enabled=True Command2.Enabled=True Command3.Enabled=True Command4.Enabled=True Command5.Enabled=True Command7.Enabled=False End Sub Private Sub Command7_Click() Text1.Text=? Text2.Te
14、xt=? Text3.Text=? Text4.Text=? Label1.Enabled=True Command6.Enabled=True Command4.Enabled=False Command3.Enabled=False Command2.Enabled=False Commandl.Enabled=False Command7.Enabled=False End Sub Private Sub Form_Load() Command1.Enabled=False Command2.Enabled=False Command3.Enabled=False Command4.En
15、abled=False Command7.Enabled=False End Sub 参考代码: Option Explicit Dim a(10) As Variant Dim i As Integer, j As Integer Dim m As Single Private Sub Command1_Click() Text2.Text=a(10) Command1.Enabled=False Command7.Enabled=True End Sub Private Sub Command2_Click() Text3.Text=a(1) Command2.Enabled=False
16、Command7.Enabled=True End Sub Private Sub Command3_Click() For i=1 To 10 Text1.Text=Text1.Text & a(i) &“,“ Next i Command3.Enabled=False Command7.Enabled=True End Sub Private Sub Command4_Click() For i=10 To 1 Step -1 Text4.Text=Text4.Text & a(i) &“,“ Next i Command4.Enabled=False Command7.Enabled=T
17、rue End Sub Private Sub Command5_Click() End End Sub Private Sub Command6_Click() Label1.Enabled=False For i=1 To 10 a(i)=InputBox(“请输入第 “ & i & “个数 ,请务必输入数值数据 !“,“输入 “) Do While IsNumeric(a(i) )=False a(i)=InputBox(“输入数据无效 ,请重新输入数值数据 ! ! !“ & “请输入第 “ & i & _ “个数 “,“输入 “) Loop Next i For i=1 To 9 Fo
18、r j=i+1 To 10 If Val(a(j) ) Val(a(i) ) Then m=a(j) a(j)=a(i) a(i)=m End If Next j Next i Command6.Enabled=False Command1.Enabled=True Command2.Enabled=True Command3.Enabled=True Command4.Enabled=True Command5.Enabled=True Command7.Enabled=False End Sub Private Sub Command7_Click() Text1.Text=“ Text2
19、.Text=“ Text3.Text=“ Text4.Text=“ Label1.Enabled=True Command6.Enabled=True Command4.Enabled=False Command3.Enabled=False Command2.Enabled=False Command1.Enabled=False Command7.Enabled=False End Sub Private Sub Form_Load() Command1.Enabled=False Command2.Enabled=False Command3.Enabled=False Command4
20、.Enabled=False Command7.Enabled=False End Sub 第三步:调试并运行程序。 第四步:按题目要求存盘。 (2)控件是否可用可利用其 Enabled属性设置,当该值为 True时可用,为 False时不可用 (灰色 );计算从 1到 n的数字的和可从 1开始向后计算,每一步计算的结果都保留然后再用上一步计算的值和后面的数字计算;清除可使文本框的内容置空来实现 (文本框 .Text=“);显示结果框内 的文字不可修改,是通过 Locked属性变为 True时锁定的。解题步骤: 第一步:建立界面并设置控件属性。程序中用到的控件及其属性见表 16-4。 第二步:
21、编写程序代码: 程序提供的代码: Option Explicit Private Sub Commandl Click() Dim i As Double Dim sum As Double Dim n As Double sum=0 n=Val(Text1.Text) For i=1 To n sum=? Next 1 Text2.Text=? Command1.Enabled=False Command2.Enabled=True End Sub Private Sub Command2 Click() Text1.Text=? Text2.Text=? Command1.Enabled=
22、True Command2.Enabled=False End Sub Private Sub Command3 Click() End End Sub Private Sub Form Load() Command1.Enabled=False Command2.Enabled=False End Sub Private Sub Text1_Change() Command1.Enabled=True End Sub Option Explicit Private Sub Command1 Click() Dim i As Double Dim sum As Double Dim n As
23、Double sum=0 n=Val(Text1.Text) For i=1 To n sum=sum+i Next i Text2.Text=sum Command1.Enabled=False Command2.Enabled=True End Sub Private Sub Command2_Click() Text1.Text=0 Text2.Text=0 Command1.Enabled=True Command2.Enabled=False End Sub Private Sub Command3_Click() End End Sub Private Sub Form_Load(
24、) Command1.Enabled=False Command2.Enabled=False End Sub Private Sub Text1_Change() Command1.Enabled=True End Sub 第三步:调试并运行程序。 第四步:按题目要求存盘。 三、综合应用题( 30分) 3 【正确答案】 本题在排序中,使用双重循环,外循环每循环一次,确定内循环的次数,内循环就是把本次循环中最小的数,放在数组的最后面,这样就可以实现对40个数的降序排序。原代码补充后如下: Dim a(40)As Long Dim str(40)As String Dim tex As Stri
25、ng Dim i As Integer Private Sub Commandl Click() 读取数据 tex=“ Open“App Path& in5 dat“For Input As#1 For i=1 To 40 Input#1, a(i) 逐个读取40个数据 str(i)=a(i) tex: tex+str(i)+“ 将数组放到一个字符串中 Next i Close#1 Textl Text=tex 在 Textl中显示字符串 End Sub Private Sub Command3 Click() 保存数据 Open“App Path& out5 dat“For Output As#1 Print#1, Textl Text Close#1 End Sub 并在 Command2的 Click事件中编写以下代码: Private Sub Command2 Click() For i=1 To 40 降序排列 temp=a(i) For j=1 To i If a(j) 按钮运行程序,并按要求保存。