1、二级 VISUAL+BASIC-467 及答案解析(总分:44.00,做题时间:90 分钟)一、1 基本操作题(总题数:1,分数:15.00)1.在名称为 Form1 的窗体中建立一个名称为 Cmd1,标题为“显示”的命令按钮,如图 11-13 所示。要求程序运行后,如果单击“显示”按钮,则执行语句 Form1.Print“显示“;如果单击窗体,则执行语句Form1.Cls。 注意:保存时必须存放在考生文件夹下,窗体文件名为 sjt1.frm,工程文件名为 sjt1.vbp。 (分数:15.00)_二、2 简单应用题(总题数:1,分数:-1.00)2.注意:下面出现的“考生文件夹”均为 c:/
2、wexam/25160001。 (1) 在考生文件夹下有工程文件 sjt3.vbp 及窗体文件 sjt3.frm,该程序是不完整的,请在有?号的地方填入正确内容,然后删除?及所有注释符(即“号),但不能修改其他部分。存盘时不得改变文件名和文件夹。如图 16-3 所示。 在名称为 Form1 的窗体上有 1 个 Labe1 控件,四个 Text 控件及七个命令按钮,功能为:开始启动工程时,界面上除“开始录入”及“退出”按钮之外,其他按钮均不可用(灰色显示);单击“开始录入”按钮之后,利用 InputBox 让用户连续且必须录入 10 个数。若录入为非数字符号,则给出警告“输入数据无效,请重新输入
3、数值数据,请输入第 n 个数”;录入完毕后,“开始录入”变灰,其他变为可用状态;按相应的按钮可分别求出所录入数据的升序、降序排列及最大数和最小数,并在右侧对应的文本框中显示(注意用 A(10)存放最大数,A(1)存放最小数);单击“清除”按钮将所有文本框清空。 (2) 在考生文件夹下有工程文件 sit4.vbp 及窗体文件 sjt4.frm,该程序是不完整的,请在有?号的地方填入正确内容,然后删除?及所有注释符(即“号),但不能修改其他部分。存盘时不得改变文件名和文件夹。如图 16-4 所示。 在名称为 Form1,标题为“求和程序”的窗体上有 3 个 Labe1 控件,2 个 Text 控件
4、和 3 个命令按钮。该程序的主要功能是求从 1 到 Text1 中用户输入的任意自然数 n 的累加和。刚启动工程时,“显示结果”和“清除”按钮均为灰色;可以在输入框内输入任意自然数(n 值太大时,运算时间将很长,建议不超过 9位)。在输入数的同时“显示结果”变为可用。当输入为非数值时,累加结果为 0;单击“显示结果”可以在 Text2 中显示累加和,且该框内的文字不可修改,同时“显示结果”变灰,“清除”变为可用;单击“清除”,输入框和显示框均显示“0”单击“关闭”按钮结束程序的运行。 (分数:-1.00)_三、3 综合应用题(总题数:1,分数:30.00)3.去掉程序中的注释符“”,把程序中的
5、“?”改为正确的内容,使其实现下述功能,但不能修改程序中的其他部分,也不能修改控件的其他属性。最后把修改后的文件按原文件名存盘。 在考生文件夹下有一个工程文件 sj5.vbp,其窗体上有一个文本框,名称为 Text1;有 3 个命令按钮,名称分别为 Command1、Command2 和 Command3,标题分别为“输入”、“计算显示”、“保存”,运行界面如下图所示。在给定程序中有一个函数过程 isPrimeNum,其功能是判断参数是否为素数,如果是素数,则返回 True,否则返回 False。 请将程序中有问号的地方替换为相应的代码,使得在运行时,单击“输入”按钮,弹出输入对话框,单击“计
6、算显示”按钮,则找出大于输入参数的最小素数,并显示在 Text1 中;单击“保存”按钮,则把Text1 中的计算结果存入考生文件夹下的 out5.txt 文件中。 注意:考生不得修改 isPrimeNum 函数过程和控件的属性,必须把计算结果通过“保存”按钮存入out5.txt 文件中,否则无成绩。 (分数:30.00)_二级 VISUAL+BASIC-467 答案解析(总分:44.00,做题时间:90 分钟)一、1 基本操作题(总题数:1,分数:15.00)1.在名称为 Form1 的窗体中建立一个名称为 Cmd1,标题为“显示”的命令按钮,如图 11-13 所示。要求程序运行后,如果单击“
7、显示”按钮,则执行语句 Form1.Print“显示“;如果单击窗体,则执行语句Form1.Cls。 注意:保存时必须存放在考生文件夹下,窗体文件名为 sjt1.frm,工程文件名为 sjt1.vbp。 (分数:15.00)_正确答案:()解析:命令按钮的标题由 Caption 属性设置,单击命令按钮触发 Click 事件。在窗体上打印信息用 Print方法,清除窗体上的打印信息使用 Cls 方法,这两条语句在题目中已经给出,只要将其放入适当的事件过程中即可。解题步骤如下。 (1)建立界面并设置控件属性。 本题只用到了 1 个命令按钮,将其 Caption 属性设置为“显示”,Name 属性设
8、置为 Cmd1。 (2)编写代码。 参考代码: Private Sub(Cmd1_Click() Form1.Print“显示“ End Sub Private Sub Form_Click() Form1.C1s End Sub (3)调试并运行程序。 (4)按题目要求存盘。 解析 在窗体上建立好控件后,先设置控件属性,再编写事件过程。二、2 简单应用题(总题数:1,分数:-1.00)2.注意:下面出现的“考生文件夹”均为 c:/wexam/25160001。 (1) 在考生文件夹下有工程文件 sjt3.vbp 及窗体文件 sjt3.frm,该程序是不完整的,请在有?号的地方填入正确内容,然
9、后删除?及所有注释符(即“号),但不能修改其他部分。存盘时不得改变文件名和文件夹。如图 16-3 所示。 在名称为 Form1 的窗体上有 1 个 Labe1 控件,四个 Text 控件及七个命令按钮,功能为:开始启动工程时,界面上除“开始录入”及“退出”按钮之外,其他按钮均不可用(灰色显示);单击“开始录入”按钮之后,利用 InputBox 让用户连续且必须录入 10 个数。若录入为非数字符号,则给出警告“输入数据无效,请重新输入数值数据,请输入第 n 个数”;录入完毕后,“开始录入”变灰,其他变为可用状态;按相应的按钮可分别求出所录入数据的升序、降序排列及最大数和最小数,并在右侧对应的文本
10、框中显示(注意用 A(10)存放最大数,A(1)存放最小数);单击“清除”按钮将所有文本框清空。 (2) 在考生文件夹下有工程文件 sit4.vbp 及窗体文件 sjt4.frm,该程序是不完整的,请在有?号的地方填入正确内容,然后删除?及所有注释符(即“号),但不能修改其他部分。存盘时不得改变文件名和文件夹。如图 16-4 所示。 在名称为 Form1,标题为“求和程序”的窗体上有 3 个 Labe1 控件,2 个 Text 控件和 3 个命令按钮。该程序的主要功能是求从 1 到 Text1 中用户输入的任意自然数 n 的累加和。刚启动工程时,“显示结果”和“清除”按钮均为灰色;可以在输入框
11、内输入任意自然数(n 值太大时,运算时间将很长,建议不超过 9位)。在输入数的同时“显示结果”变为可用。当输入为非数值时,累加结果为 0;单击“显示结果”可以在 Text2 中显示累加和,且该框内的文字不可修改,同时“显示结果”变灰,“清除”变为可用;单击“清除”,输入框和显示框均显示“0”单击“关闭”按钮结束程序的运行。 (分数:-1.00)_正确答案:()解析:解析 在窗体上建立好控件后,先设置控件属性,再编写事件过程。 用数组 a(10)来接收 InputBox 输入的 10 数,InputBox 的格式为:InputBox(提示,标题,默认,X坐标位置,Y 坐标位置);控件是否可用可利
12、用其 Enabled 属性设置,当该值为 True 时可用,为 False时不可用(灰色);判断是否是数字可用 IsNumeric(),如果是数字返回 True,否则返回 False;本程序中用到的排序方法是将某一个元素做为标杆,其后的每一个元素与其比较,若小于标杆则两者交换,依此类推,题中要求排完序后 a(1)至 a(10)依次存放大数,在文本框中显示升序和降序的时候只要两者反序显示即可,即升序可依次显示 a(1)到 a(10),降序可依次显示 a(10)到 a(1)。解题步骤: 第一步:建立界面并设置控件属性。程序中用到的控件及其属性见表 16-3。 表 16-3 控 件 属 性 设 置
13、值 标签 Caption 点击“开始录入”按钮,录入 10个数 文本 Name Scrollbars Multilane Text1 2-vertical true 文本 Name Scrollbars Multilane Text4 2-vertical true 文本 Name Text2 文本 Name Text3 按钮 Name Caption Command1 最大数 按钮 Name Caption Command2 最小数 按钮 Name Caption Command3 升序排列 按钮 Name Caption Command4 降序排列 按钮 Name Caption Comm
14、and5 退出 按钮 Name Caption Command6 开始录入 按钮 Name Caption Command7 清除 第二步:编写程序代码。 程序提供的代码: 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() “Text
15、3.Text=? Command2.Enabled=False 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.Enable
16、d=False Command7.Enabled=True 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
17、 i For i=1 To 9 For 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 Commandl.Enabled=True Command2.Enabled=True Command3.Enabled=True Command4.Enabled=True Command5.Enabled=True Command7.Enabled=False End Sub Private Sub Command7_Click(
18、) “Text1.Text=? “Text2.Text=? “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 Command
19、3.Enabled=False Command4.Enabled=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
20、(1) Command2.Enabled=False 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.Enabl
21、ed=False Command7.Enabled=True 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
22、 i For i=1 To 9 For 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()
23、Text1.Text=“ Text2.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.Enab
24、led=False Command4.Enabled=False Command7.Enabled=False End Sub 第三步:调试并运行程序。 第四步:按题目要求存盘。 (2) 解析 控件是否可用可利用其 Enabled 属性设置,当该值为 True 时可用,为 False 时不可用(灰色);计算从 1 到 n 的数字的和可从 1 开始向后计算,每一步计算的结果都保留然后再用上一步计算的值和后面的数字计算;清除可使文本框的内容置空来实现(文本框.Text=“);显示结果框内的文字不可修改,是通过 Locked 属性变为 True 时锁定的。解题步骤: 第一步:建立界面并设置控件属性。
25、程序中用到的控件及其属性见表 16-4。 表 16-4 标 题 属 性 设 置 值 Label Name Caption Label1 该程序的功能是求SS=1+2+3+n Label Name Caption Label2 请输入:n(0n999999999) Label Name Caption Label3 结果显示框 Text Name Text1 Text Name Caption Text2 True Commandbutton Name Caption Command1 显示结果 Commandbutton Name Caption Command 清除 Commandbutto
26、n Name Caption Command 关闭 第二步:编写程序代码: 程序提供的代码: Option Explicit Private Sub Command1_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.Tex
27、t=? “Text2.Text=? Command1.Enabled=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
28、 Double Dim sum As Double Dim n As 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()
29、 End End Sub Private Sub Form_Load() Command1.Enabled=False Command2.Enabled=False End Sub Private Sub Text1_Change() Command1.Enabled=True End Sub 第三步:调试并运行程序。 第四步:按题目要求存盘。三、3 综合应用题(总题数:1,分数:30.00)3.去掉程序中的注释符“”,把程序中的“?”改为正确的内容,使其实现下述功能,但不能修改程序中的其他部分,也不能修改控件的其他属性。最后把修改后的文件按原文件名存盘。 在考生文件夹下有一个工程文件 sj5
30、.vbp,其窗体上有一个文本框,名称为 Text1;有 3 个命令按钮,名称分别为 Command1、Command2 和 Command3,标题分别为“输入”、“计算显示”、“保存”,运行界面如下图所示。在给定程序中有一个函数过程 isPrimeNum,其功能是判断参数是否为素数,如果是素数,则返回 True,否则返回 False。 请将程序中有问号的地方替换为相应的代码,使得在运行时,单击“输入”按钮,弹出输入对话框,单击“计算显示”按钮,则找出大于输入参数的最小素数,并显示在 Text1 中;单击“保存”按钮,则把Text1 中的计算结果存入考生文件夹下的 out5.txt 文件中。 注
31、意:考生不得修改 isPrimeNum 函数过程和控件的属性,必须把计算结果通过“保存”按钮存入out5.txt 文件中,否则无成绩。 (分数:30.00)_正确答案:()解析:判断一个数是否为素数就是看该数是否除了 1 及其本身外别无其他约数(即从 2 到 n-1 之间没有可以将其整除的数)即可,从 Function 函数中可知,变量 is Prime Num 是用于保留判断数是否是素数的结果的,值为 True 表示是素数,值为 False 表示不是素数。文本框通过 Text 属性显示计算结果,其形式为:文本框名.Text=要显示的内容。将数据写入文件可用命令 Write#语句或 Print
32、#语句,本程序中用的是前者,其形式为:Write#文件号,输出列表。 根据题意,将一个文本框控件和 3 个命令按钮添加到窗体中,文本框的名称为 Text1,Text 属性为空,命令按钮的名称分别为 Command1、Command2 和 Command3,Caption 属性分别为“输入”、“计算显示”和“保存”。双击 Command1 进入代码窗口,编写如下代码: Dim a As Integer Dim res As Integer Private Sub Command1_Click() a=Val( InputBox(“输入参数:“ ) “弹出输入对话框 End Sub Private
33、 Sub Command2_Click() While is Prime Num(a)=False “如果输入参数不是素数则继续循环 a=a+1 Wend Text1. Text =a “将获得的素数在 Text1 中显示出来 End Sub Function is Prime Num(num As Integer)As Boolean “判断输入是否为素数 is Prime Num=True Dim i As Integer For i=2 To num-1 If num Mod i=0 Then is Prime Num=False End If Next i End Function Private Sub Command3_Click() Open“out5.txt“For Output As#1 Write #1,a Close#1 End Sub 单击