1、VB 机试-试卷 15 及答案解析(总分:12.00,做题时间:90 分钟)一、基本操作题(总题数:2,分数:4.00)1.基本操作题()(分数:2.00)_2.请根据以下各小题的要求设计 VisualBasic 应用程序(包括界面和代码)。(1)在名称为 Forml 的窗体上建立一个名称为 Opl 的单选按钮数组,含三个单选按钮,它们的标题依次为“选择 1”、“选择 2”、“选择 3”,其下标分别为 0、l、2,初始状态下,“选择 2”为选中状态。运行后的窗体如图 1-100 所示。注意:存盘时必须存放在考生文件夹下,工程文件名为 sjtlvbp,窗体文件名为 sjtlfian。(2)在窗体
2、上建立一个二级菜单,第一级含两个菜单项,标题分别为“编辑”、“帮助”,名称分别为 edit、help。其中“编辑”菜单含有子菜单,共有三个菜单项,其标题依次为“剪切”、“复制”、“粘贴”,名称分别为“cut”、“copy”、“paste”(如图 1-10l 所示)。注意:存盘时必须存放在考生文件夹下,工程文件名为 sjt2vbp,窗体文件名为 sjt2frm。 (分数:2.00)_二、简单应用题(总题数:2,分数:4.00)3.简单应用题()(分数:2.00)_4.(1)在考生文件夹下有一个工程文件 sjt3vbp。窗体上有一个标题为“得分”的框架,在框架中有一个名称为 Tcxtl 的文本框数
3、组,含六个元素;文本框 Text2 用来输入难度系数。程序运行时,在左边的六个文本框中输入 6 个得分,输入难度系数后,单击“计算分数”按钮,则可计算出最后得分并在文本框Text3 中显示(如图 1-228 所示)。计算方法:去掉一个最高得分和一个最低得分,求剩下得分的平均分,再乘以 3,再乘以难度系数。最后结果保留到第 2 位小数,不四舍五入。注意:文件中已经给出了所有控件和程序,但程序不完整,请去掉程序中的注释符,把程序中的?改为正确的内容。考生不能修改程序中的其他部分和各控件的属性。最后把修改后的文件按原文件名存盘。 (2)在考生目录下有一个工程文件 sjt4vbp。窗体上的控件如图 1
4、-229 所示。程序运行时,若选中“阶乘”单选按钮。则“1000”、“2000”菜单项不可用(如图 1-229 所示),若选中“累加”单选按钮,则“lO”、“12”菜单项不可用。选中菜单中的一个菜单项后,单击“计算”按钮,则相应的计算结果显示在文本框中(例如选中“阶乘”和“10”,则计算 10l,选中“累加”和“2000”,则计算 1+2+3+2000)。单击“存盘”按钮,则把文本框中的结果保存到考生目录下的 out4dat 文件中。要求:编写“计算”按钮的 Click 事件过程。注意:不得修改已经存在的程序,在结束程序运行之前,必须用“存盘”按钮存储计算结果,否则无成绩。最后,程序按原文件名
5、存盘。 (分数:2.00)_三、综合应用题(总题数:2,分数:4.00)5.综合应用题()(分数:2.00)_6.在考生目录下有一个工程文件 sjt5vbp,其窗体如图 1-53 所示。考生目录下有一个 in5dat 文件,文件中有 5 个运动员的姓名、7 个裁判的打分和动作的难度系数。每人的数据占一行,顺序是:姓名、7个分数、难度系数。程序运行时,单击“输入”按钮,可把 in5dat 文件中的 5 个姓名读入数组athlete 中,把 5 组得分(每组 7 个)和难度系数读入二维数组 a 中(每行的最后一个元素是难度系数),并把这些数据显示在 Textl 文本框中;单击“选出冠军”按钮,则把
6、冠军的姓名和成绩分别显示在文本框Text2、Text3 中。成绩的计算方法是:去掉一个最高分和一个最低分,求剩下得分的平均分,乘以 3 再乘以难度系数;单击“存盘”按钮,则把冠军姓名和成绩存入考生目录下的 out5dat 文件中。要求:去掉程序中的注释符,把程序中的?改为正确的内容(程序中 getmark 函数的功能是计算并返回第一个运动员的最后得分),并编写“选出冠军”按钮的 Click 事件过程。注意:不得修改已经存在的程序和控件的属性,在结束程序运行前,必须用“存盘”按钮存储计算结果,否则无成绩。最后,程序按原文件名存盘。(分数:2.00)_VB 机试-试卷 15 答案解析(总分:12.
7、00,做题时间:90 分钟)一、基本操作题(总题数:2,分数:4.00)1.基本操作题()(分数:2.00)_解析:2.请根据以下各小题的要求设计 VisualBasic 应用程序(包括界面和代码)。(1)在名称为 Forml 的窗体上建立一个名称为 Opl 的单选按钮数组,含三个单选按钮,它们的标题依次为“选择 1”、“选择 2”、“选择 3”,其下标分别为 0、l、2,初始状态下,“选择 2”为选中状态。运行后的窗体如图 1-100 所示。注意:存盘时必须存放在考生文件夹下,工程文件名为 sjtlvbp,窗体文件名为 sjtlfian。(2)在窗体上建立一个二级菜单,第一级含两个菜单项,标
8、题分别为“编辑”、“帮助”,名称分别为 edit、help。其中“编辑”菜单含有子菜单,共有三个菜单项,其标题依次为“剪切”、“复制”、“粘贴”,名称分别为“cut”、“copy”、“paste”(如图 1-10l 所示)。注意:存盘时必须存放在考生文件夹下,工程文件名为 sjt2vbp,窗体文件名为 sjt2frm。 (分数:2.00)_正确答案:(正确答案: 第 l 小题 【操作步骤】 步骤 l:新建一个“标准 EXE”工程。 步骤 2:在窗体Forml 中加入一个单选按钮,并用“复制”和“粘贴”的方法,生成包含 4 个元素的单选按钮数组。 步骤 3:分别设置单选按钮数组中各元素的相关属性
9、,其属性及值如表 2-56 所示。 步骤 4:按要求将文件保存至考生文件夹中。 第 2 小题 【操作步骤】 步骤 l:新建一个“标准 EXE”工程,利用菜单设计器如表 2-57 在窗体上建立一个二级菜单。 )解析:解析: 第 l 小题 容器(如窗体和框架)中的单选按钮(OptionButton)组常用于提供多个选项之间的唯一选择,其 Value 属性用于设置或返回每个单选按钮的选中状态:值为 False 表示未选,值为true表示选中。 本题只需按要求画出控件数组,并设置其 Value 属性。 第 2 小题 本题只需按题目要求利用VB 菜单设计器建立一个二级菜单。二、简单应用题(总题数:2,分
10、数:4.00)3.简单应用题()(分数:2.00)_解析:4.(1)在考生文件夹下有一个工程文件 sjt3vbp。窗体上有一个标题为“得分”的框架,在框架中有一个名称为 Tcxtl 的文本框数组,含六个元素;文本框 Text2 用来输入难度系数。程序运行时,在左边的六个文本框中输入 6 个得分,输入难度系数后,单击“计算分数”按钮,则可计算出最后得分并在文本框Text3 中显示(如图 1-228 所示)。计算方法:去掉一个最高得分和一个最低得分,求剩下得分的平均分,再乘以 3,再乘以难度系数。最后结果保留到第 2 位小数,不四舍五入。注意:文件中已经给出了所有控件和程序,但程序不完整,请去掉程
11、序中的注释符,把程序中的?改为正确的内容。考生不能修改程序中的其他部分和各控件的属性。最后把修改后的文件按原文件名存盘。 (2)在考生目录下有一个工程文件 sjt4vbp。窗体上的控件如图 1-229 所示。程序运行时,若选中“阶乘”单选按钮。则“1000”、“2000”菜单项不可用(如图 1-229 所示),若选中“累加”单选按钮,则“lO”、“12”菜单项不可用。选中菜单中的一个菜单项后,单击“计算”按钮,则相应的计算结果显示在文本框中(例如选中“阶乘”和“10”,则计算 10l,选中“累加”和“2000”,则计算 1+2+3+2000)。单击“存盘”按钮,则把文本框中的结果保存到考生目录
12、下的 out4dat 文件中。要求:编写“计算”按钮的 Click 事件过程。注意:不得修改已经存在的程序,在结束程序运行之前,必须用“存盘”按钮存储计算结果,否则无成绩。最后,程序按原文件名存盘。 (分数:2.00)_正确答案:(正确答案: 第 1 小题 【操作步骤】 步骤 1:打开考生文件中的本题工程文件 sjt3vbp,在代码编辑窗口,去掉程序中的注释符“”,将问号“?”改为正确的内容。 参考代码: For k=1 To 5 If aVal(Textl(k)Text) Then s= (s-a-b)4 s=s*3*Val(Text2Text) Text3Text=Int(8*100)10
13、0 步骤 2:按要求将文件保存至考生文件夹中。 第 2 小题 【操作步骤】 步骤 l:打开考生文件夹中的本题工程文件 sjt4vbp。 步骤 2:打开代码编辑窗口,编写“计算”按钮的单击事件过程。 参考代码: PriVate Sub Commandl_Click() If OptionlValue=True Then s=1 For k=1 T0 n s=s*k Next End If If Option2Value=True Then 8=0 For k=1 To n s=s+k Next End If Textl=s End Sub 步骤3:按要求将文件保存至考生文件夹中。 步骤 4:按F
14、5键键运行程序,选择不同选项,单击“数值”菜单项,并且选择一个可用的数值,然后单击“计算”按钮得到结果,最后单击“存盘”按钮保存结果。)解析:解析: 第 1 小题 控件数组是一组具有共同名称和类型的控件,它们拥有共同的事件,数组中的每个控件都有唯一的索引号(Index),即下标,默认索引号从 0 开始。控件数组的 Count 属性值可返回该控件数组中元素的个数。 本题原程序在“计算”按钮的单击事件过程中,用变量 a 记录最高得分,用变量b 记录最低得分,用变量 s 记录得分总数,这三个变量的初值均为文本框数组 Textl 中第一个元素的值。原程序通过 For 循环将文本框数组 Textl 中第
15、 26(索引号为 l5)个元素的值依次累加入变量 s,并依次与变量 a、变量 b 比较大小,将较大值存入变量 a,将较小值存入变量 b。故第一个?处应改为:5(或TextlCount-1),第两个?处应改为:a。去掉一个最高得分和一个最低得分后,剩下求平均分的元素只有 4 个,故第三个?处应改为:4。所得平均分乘以 3,再乘以难度系数即为最后得分,故第 4 个?处应改为:s。最后结果保留到第 2 位小数(不四舍五入)后显示中文本框 Text3 中。故第 5 个?处应改为:Text3Text。 第 2 小题 本题原程序要求编写“计算”按钮的单击事件。当单击按钮时,首先判断两个单选按钮选中了哪一个
16、,如果选中了“阶乘”按钮,则执行阶乘算法,将从 1 到 n 的数值依次乘到累乘积s 中;若选中了“累加”按钮,则执行累加算法,将从 1 到 n 的数值依次加到累加和 s 中。注意 s 作为累乘积的时候初值应该为 l,而作为累加和的时候初值应该为 0。最后将 s 的值显示在文本框中。三、综合应用题(总题数:2,分数:4.00)5.综合应用题()(分数:2.00)_解析:6.在考生目录下有一个工程文件 sjt5vbp,其窗体如图 1-53 所示。考生目录下有一个 in5dat 文件,文件中有 5 个运动员的姓名、7 个裁判的打分和动作的难度系数。每人的数据占一行,顺序是:姓名、7个分数、难度系数。
17、程序运行时,单击“输入”按钮,可把 in5dat 文件中的 5 个姓名读入数组athlete 中,把 5 组得分(每组 7 个)和难度系数读入二维数组 a 中(每行的最后一个元素是难度系数),并把这些数据显示在 Textl 文本框中;单击“选出冠军”按钮,则把冠军的姓名和成绩分别显示在文本框Text2、Text3 中。成绩的计算方法是:去掉一个最高分和一个最低分,求剩下得分的平均分,乘以 3 再乘以难度系数;单击“存盘”按钮,则把冠军姓名和成绩存入考生目录下的 out5dat 文件中。要求:去掉程序中的注释符,把程序中的?改为正确的内容(程序中 getmark 函数的功能是计算并返回第一个运动
18、员的最后得分),并编写“选出冠军”按钮的 Click 事件过程。注意:不得修改已经存在的程序和控件的属性,在结束程序运行前,必须用“存盘”按钮存储计算结果,否则无成绩。最后,程序按原文件名存盘。(分数:2.00)_正确答案:(正确答案: 【操作步骤】 步骤 l:打开考生文件中的本题工程文件 sjt5vbp,在代码编辑窗口,去掉程序中的注释符“”,将问号“?”改为正确的内容。 参考代码: s=a(n,1) For k=2 To 7 getmark=s *3*a(n, 8) PriVate Sub Command2_Click() 要求考生编写的程序 Dim k As Integer maxmar
19、k=getmark(1) m=1 For k=2 To 5 If maxmark 键键运行程序,先单击“读入”按钮,然后单击“选出冠军”按钮,最后单击“存盘”按钮。)解析:解析:根据题意,数组 athlete 中存入的是 5 个运动员的姓名,二维数组 a 中存入的是 5 个运动员每人的 7 个分数和一个难度系数,数组 athlete 中元素的下标与二维数组 a 中第一维的下标对应。 原程序的 getmark 函数中,参数 n 为运动员的顺序号,变量 s 用于记录某运动员的 7 个分数之和,其初值设置为该运动员的第一个分数(即 a(n,1)。统计 7 个分数之和是在 For 循环中完成的,依次将第 27 个分数累加入变量 s。故循环终值应为;7。变量 maxnum 和 minnum 分别用于记录 7 个分数中的最高分和最低分,数组元素 a(n,8)是难度系数,故 getmark 函数的返回值应为:getmark=s*3*a(n,8)。 在“选出冠军”的 Click 事件过程中,可声明一个整型变量 m,用于记录最后得分较高的运动员序号,其初值可设置为1。通过 For 循环依次比较第一个运动员与后面 4 人的最后得分,并用 m 记录下最后得分较高的运动员序号。循环结束,数组元素 athlete(m)即为冠军的姓名,函数 getmark(m)的值即为其最后得分。