1、国家二级 VB 机试(上机操作)-试卷 32 及答案解析(总分:10.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:4.00)请根据以下各小题的要求设计 Visual Basic 应用程序(包括界面和代码)。(分数:4.00)(1).在名称为 Form1 的窗体上建立一个如下表所示的下拉菜单,其中“设置”菜单项为灰色(不可用),如图 3-58 所示。 (分数:2.00)_(2).在名称为 Form1 的窗体上画一个名称为:Hscroll1 的水平滚动条,其最大刻度为 100,最小刻度为0;再画两个单选按钮,名称分别为 Option1、Option2,标题分别为“最大值”、“最小
2、值”,且都未选中。再通过属性窗口设置适当属性使得程序刚运行时,焦点在滚动条上(如图 3-59 所示)。 请编写适当的事件过程,使得程序运行时,单击“最大值”单选按钮,则滚动条上的滚动框移到最右端;单击“最小值”单选按钮,则滚动框移到最左端。 (分数:2.00)_二、简单应用题(总题数:2,分数:4.00)1.在考生文件夹下有一个工程文件 sjt3vbp,已给出了所有控件和部分程序。程序运行时,请按以下顺序操作: 1)单击“读入数据”按钮,可把考生目录下的文件 in3dat 中的 100 个整数读到数组 a 中; 2)从名称为 Listl 的列表框中选中一项(如图 3-60 所示)。 3)单击“
3、计算”按钮,则可按该选项的要求计算出结果并放到文本框中。 4)单击窗体右上角的关闭按钮结束程序。 “读入数据”按钮的 Click 事件过程已经给出,请为“计算”按钮编写适当的事件过程实现上述功能。 (分数:2.00)_2.在考生文件夹下有一个工程文件 sjt4vbp。窗体中横线(横坐标)的名称为 Line1,竖线(纵坐标)的名称为 Line2;五个不同颜色的矩形是一个形状控件数组,名称为 Shape1,它们的 visible 属性都为False;从左到右的两个按钮的名称分别为 Command1、Command2;另有一个有五个元素的标签数组,名称为 Label1,其所有元素的 Visible
4、属性都为 False。如图 3-61(a)所示。程序运行时,单击“输入 5 个数据”按钮,可输入五个整数(最好在 1002000 之间),并作为刻度值显示在纵坐标的左面:单击“画直方图”按钮,则按五个数的输入顺序显示直方图。例如若输入的五个数是 1200、500、800、1900、1500,则结果如图 3-61(b)所示。 文件中已经给出了所有控件和程序,但程序不完整,请去掉程序中的注释符,把程序中的?改为正确的内容。 (分数:2.00)_三、综合应用题(总题数:1,分数:2.00)3.在考生文件夹下有一个工程文件 sjt5vbp,已给出了所有控件(如图 3-62 所示)和部分程序。程序运行时
5、,请按以下顺序操作: 1)单击“读入文件”按钮,把考生目录下的文件 in5dat 中的内容读入内存并显示在上面的文本框(Text1)中; 2)单击“加密”按钮,则可对 Text1 中的内容进行加密并显示在下面的文本框(Text2)中。 3)单击“存结果”按钮则把 Text2 中的内容存到 out5dat 文件中。 加密规则:对于第奇数个字符,若是字母,则把它变为它后面的字符(若为“Z”则变为“A”),不是字母则不变;对于第偶数个字符,若是字母,则把它变为它前面的字符(若为“A”则变为“Z”),不是字母则不变。大小写字母都遵循此规则。 例如: 若原有的字符是:AbbaZGHa-MnnKYzx 则
6、加密后的字符是:BaczAFGb-NmojXaw 已经给出“存结果”按钮的 Click 事件过程和函数 isletter,函数 isletter(aAsString)判断变量 a 中是否为一个字母,若是则返回 True,否则返回 False,可以直接调用。 请编写“读入文件”按钮和“加密”按钮的 Click 事件过程,以实现上述功能。(in5dat 文件中只含英文单词和空格,不分段落和行) 注意:考生不得修改已经存在的程序,必须用“存结果”按钮存储加密结果,否则无成绩。最后,按原文件名把程序存盘。 (分数:2.00)_国家二级 VB 机试(上机操作)-试卷 32 答案解析(总分:10.00,做
7、题时间:90 分钟)一、基本操作题(总题数:1,分数:4.00)请根据以下各小题的要求设计 Visual Basic 应用程序(包括界面和代码)。(分数:4.00)(1).在名称为 Form1 的窗体上建立一个如下表所示的下拉菜单,其中“设置”菜单项为灰色(不可用),如图 3-58 所示。 (分数:2.00)_正确答案:(正确答案:审题分析 本题只需按题目要求利用 VB 菜单设计器建立一个二级菜单。 操作步骤 步骤 1:新建一个“标准 EXE”工程,利用菜单设计器按表 4-34 在窗体上建立一个二级菜单。 )解析:(2).在名称为 Form1 的窗体上画一个名称为:Hscroll1 的水平滚动
8、条,其最大刻度为 100,最小刻度为0;再画两个单选按钮,名称分别为 Option1、Option2,标题分别为“最大值”、“最小值”,且都未选中。再通过属性窗口设置适当属性使得程序刚运行时,焦点在滚动条上(如图 3-59 所示)。 请编写适当的事件过程,使得程序运行时,单击“最大值”单选按钮,则滚动条上的滚动框移到最右端;单击“最小值”单选按钮,则滚动框移到最左端。 (分数:2.00)_正确答案:(正确答案:审题分析 本题需要在窗体上画出水平滚动条,并设置 Tablndex 属性为 0;然后在单选按钮的单击事件中改变滚动条的 Value 属性值就能使滑块处于指定位置。 操作步骤 步骤 1:新
9、建一个“标准 EXE”工程,按表 4-35 在窗体中画出控件并设置其相关属性。 )解析:二、简单应用题(总题数:2,分数:4.00)1.在考生文件夹下有一个工程文件 sjt3vbp,已给出了所有控件和部分程序。程序运行时,请按以下顺序操作: 1)单击“读入数据”按钮,可把考生目录下的文件 in3dat 中的 100 个整数读到数组 a 中; 2)从名称为 Listl 的列表框中选中一项(如图 3-60 所示)。 3)单击“计算”按钮,则可按该选项的要求计算出结果并放到文本框中。 4)单击窗体右上角的关闭按钮结束程序。 “读入数据”按钮的 Click 事件过程已经给出,请为“计算”按钮编写适当的
10、事件过程实现上述功能。 (分数:2.00)_正确答案:(正确答案:审题分析 本题在命令按钮的单击事件中先利用循环统计字符串中大写字母和小写字母的值。首先假设数组中的第一个元素既为最大值也为最小值,然后依次从第二个元素开始向后循环,对每一个数组元素都加以判断,若其比最大值还大,则其成为新的最大值;若其比最小值还小,则其成为新的最小值。这样循环结束后可以得到数组的最大值和最小值。 接下来判断列表框中选中的是哪一项然后执行对应计算,并输出结果。 操作步骤 步骤 1:打开考生文件夹中的本题工程文件 sjt3vbp,双击窗体中的“计算”命令按钮,在打开的代码编辑窗口中编写其单击事件过程。 参考代码: P
11、riVate Sub Command2_Click() Dim k As Integer,i1,i2 As Integer i1=a(1):i2=a(1) For k=2 To 100 If a(k)i1 Then i1=a(k) End If If a(k)i2 Then i2=a(k) End If Next k If List1Selected(0)=True Then Text1Text=i1 一 i2 End If If List1Selected(1)=True Then Text1Text=i1+i2 End If If List1Selected(2)=True Then Te
12、xt1Text=i1*i2 End If End Sub 步骤 2:按键运行程序,单击“读入数据”按钮,然后在列表框中选择一项,并单击“计算”按钮,统计出结果。 步骤 3:单击窗体右上角的关闭按钮以结束程序。 步骤 4:按要求将文件保存至考生文件夹中。 考点链接 选择控件、For 循环结构)解析:2.在考生文件夹下有一个工程文件 sjt4vbp。窗体中横线(横坐标)的名称为 Line1,竖线(纵坐标)的名称为 Line2;五个不同颜色的矩形是一个形状控件数组,名称为 Shape1,它们的 visible 属性都为False;从左到右的两个按钮的名称分别为 Command1、Command2;另
13、有一个有五个元素的标签数组,名称为 Label1,其所有元素的 Visible 属性都为 False。如图 3-61(a)所示。程序运行时,单击“输入 5 个数据”按钮,可输入五个整数(最好在 1002000 之间),并作为刻度值显示在纵坐标的左面:单击“画直方图”按钮,则按五个数的输入顺序显示直方图。例如若输入的五个数是 1200、500、800、1900、1500,则结果如图 3-61(b)所示。 文件中已经给出了所有控件和程序,但程序不完整,请去掉程序中的注释符,把程序中的?改为正确的内容。 (分数:2.00)_正确答案:(正确答案:审题分析 “输入 5 个数据”按钮的单击事件过程中,需
14、要连续输入 5 个数据并且存放到数组 s 中,因此 k 应该由 1 循环到 5,在循环中将输入的数据保存到数组 s 中并且将其赋值给五个标签组成的控件数组,随后将标签的 Visible 属性设置为 True 以便显示出来。 “画直方图”按钮的单击事件过程中,源程序用 For 循环来依次计算每一个形状控件的高度,该高度应该为对应数组元素的值;然后计算该直方图的 Top 属性值(应为水平直线的 Y1 或 Y2 属性值减去直方图的高度),最后显示该直方图(通过设置其 Visible 实现)。 操作步骤 步骤 1:打开考生文件夹中的本题工程文件 sjt4vbp,在代码编辑窗口,去掉程序中的注释符“”,
15、将问号“?”改为正确的内容。 参考代码: For k=1 To 5 Label1(k 一 1)Visible=True Shape1(k 一 1)Height=s(k) a=Line1Y1 步骤 2:按要求将文件保存至考生文件夹中。 考点链接 图形控件、控件数组)解析:三、综合应用题(总题数:1,分数:2.00)3.在考生文件夹下有一个工程文件 sjt5vbp,已给出了所有控件(如图 3-62 所示)和部分程序。程序运行时,请按以下顺序操作: 1)单击“读入文件”按钮,把考生目录下的文件 in5dat 中的内容读入内存并显示在上面的文本框(Text1)中; 2)单击“加密”按钮,则可对 Tex
16、t1 中的内容进行加密并显示在下面的文本框(Text2)中。 3)单击“存结果”按钮则把 Text2 中的内容存到 out5dat 文件中。 加密规则:对于第奇数个字符,若是字母,则把它变为它后面的字符(若为“Z”则变为“A”),不是字母则不变;对于第偶数个字符,若是字母,则把它变为它前面的字符(若为“A”则变为“Z”),不是字母则不变。大小写字母都遵循此规则。 例如: 若原有的字符是:AbbaZGHa-MnnKYzx 则加密后的字符是:BaczAFGb-NmojXaw 已经给出“存结果”按钮的 Click 事件过程和函数 isletter,函数 isletter(aAsString)判断变量
17、 a 中是否为一个字母,若是则返回 True,否则返回 False,可以直接调用。 请编写“读入文件”按钮和“加密”按钮的 Click 事件过程,以实现上述功能。(in5dat 文件中只含英文单词和空格,不分段落和行) 注意:考生不得修改已经存在的程序,必须用“存结果”按钮存储加密结果,否则无成绩。最后,按原文件名把程序存盘。 (分数:2.00)_正确答案:(正确答案:审题分析 分析题目可知,本题中“读入文件”命令按钮中首先使用 For Input 方式打开文件,然后通过 IAneInput#语句将打开文件中的数据读出到变量 s 中并且赋给文本框。 在“加密”按钮的单击事件中,利用 For 循
18、环对字符串 s 进行遍历,依次取出 s 中的每一个字符;如果循环变量 i 的值为偶数,接下来就要判断取出的字符是不是字母,如果是字母则进行 Chr(Asc(Mid(s,i,1)-1)的转换,但是要注意如果为字母“A”或者“a”要转换为“Z”或者“z”。同理,如果循环变量的值为奇数,如果取出的字符是字母,则进行 Chr(Asc(Mid(s,i,1)+1)的转换,如果为字母“Z”或者“z”要转换为“A”或者“a”。最后将转换得到的字母连接起来即得到结果。 操作步骤 步骤 1:打开考生文件夹中的本题工程文件 sjt5vbp,在代码编辑窗口指定位置编写以下代码: 参考代码: Private Sub C
19、ommand1_Click() Open“in5dat“ For Input As 1 Line Input #1,s Close #1 Text1Text=s End Sub Private Sub Command2_Click() Dim i As Integer Dim ss As String ss=“ “ For i=1 To Len(s) If isletter(Mid(s,i,1)=True Then If i Mod 2=0 Then If Mid(s,i,1)=“a“ Then ss=ss “Z“ ElseIf Mid(s,i,1)=“A“Then ss=ss “Z“ Els
20、e ss=ssChr(Asc(Mid(s,i,1)一 1) End If Else If Mid(s,i,1)=“Z“Then ss=ss “A“ ElseIf Mid(s,i,1)=“z“Then ss=ss “a“ Else ss=ssChr(Asc(Mid(s,i,1)+1) End If End If Else ss=ss Mid(s,i,1) End If Next Text2Text=ss End Sub 步骤 2:按键运行程序,先单击“读入文件”按钮,接着单击“加密”按钮,然后单击“存结果”按钮保存结果,最后单击窗体右上角的关闭按钮结束程序。 步骤 3:按要求将文件保存至考生文件夹中。 考点链接 顺序文件、常用内部函数)解析: