1、(A)二级 VISUAL+BASIC 笔试-2 及答案解析(总分:100.00,做题时间:90 分钟)一、基本操作题(总题数:2,分数:40.00)1.在名称为 Form1 的窗体上添加一个名称为 Shape1 的形状控件,通过设置参数使其形状为圆形;添加一个名称为 Label1 的标签,标题为“形状”,标签的大小能够根据标签内容的字数、大小而定;添加一个名称为 Text1 的文本框,文本框最多能够显示 5 个字符,文本框中初始内容为“圆形”,如图所示。(分数:20.00)_2.在名称为 Form1 的窗休上添加一个名称为 Label1 的标签,字号大小为四号,标题为“等级考试”,如图 1 所
2、示。通过设置属性使标签初始为不显示。请编写适当的程序,使得运行程序时,窗体的标题立即变为“标签”,单击窗体时,显示标签,如图 2 所示。注意:存盘时,将文件保存至考生文件夹下,且窗体文件名保存为 sjt2.frm,工程文件名保存为sjt2.vbp。要求程序中不得使用变量,每个事件过程中只能写一条语句。(分数:20.00)_二、简单应用题(总题数:2,分数:40.00)3.考生文件夹中有工程文件 sjt3.vbp。窗体上有一个名称为 Label1、标题为“标签控件”的标签;有一个名称为 Commandl、标题为“命令按钮”的命令按钮。单击上述两控件中的任一控件,则在标签 Label2中显示所单击
3、控件的标题内容(标题内容前添加“单击”二字),下图是单击命令按钮后的窗体外观。请去掉程序中的注释符,把程序中的?改为正确的内容。(分数:20.00)_4.在考生文件夹下有一个工程文件 sjt4.vbp,其窗体上有一个由八个图片框控件组成的控件数组、两个命令按钮及一个计时器控件,如图 1 所示。程序功能:将计时器控件设置为每隔 0.5 秒触发一次 Timer 事件。运行程序时,只显示下标为 0 的图片框控件数组元素,其他图片框均不可见。单击“开始”按钮,数组中的每个图片框自左至右依次显示,时间间隔为 0.5秒,产生“月亮”从左向右移动的效果,如图 2 所示。月亮移到右端后再从左端重新开始。单击“
4、停止”按钮,“月亮”停止移动。要求:按照题目要求设置控件属性,去掉程序中的注释符,把程序中的?改为正确的内容。注意:不能修改程序的其他部分和控件属性,最后将修改后的文件按原文件名进行存盘。(分数:20.00)_三、综合应用题(总题数:1,分数:20.00)5.考生文件夹下有一个_丁程文件 sjts.vbp。运行程序后,从文件中读出数据,将其放入一个 55 的二维数组 a 中。请编写程序,找出数组 a 中每行的最大值及该值在行中的次序(列下标),并将所找到的结果分别保存到一维数组 b、c 中(a 中第一行的最大值保存存 b(1)中,最大值的列次序保存在 c(1)中)。注意:不能修改程序的其他部分
5、和控件属性,最后将修改后的文件按原文件名存盘。程序调试通过后,命令按钮的事件过程必须至少执行一次。(分数:20.00)_(A)二级 VISUAL+BASIC 笔试-2 答案解析(总分:100.00,做题时间:90 分钟)一、基本操作题(总题数:2,分数:40.00)1.在名称为 Form1 的窗体上添加一个名称为 Shape1 的形状控件,通过设置参数使其形状为圆形;添加一个名称为 Label1 的标签,标题为“形状”,标签的大小能够根据标签内容的字数、大小而定;添加一个名称为 Text1 的文本框,文本框最多能够显示 5 个字符,文本框中初始内容为“圆形”,如图所示。(分数:20.00)_正
6、确答案:(操作步骤步骤 1:新建一个窗体,按照题目要求建立形状控件、标签控件及文本框控件并设置其属性,如图所示。程序中用到的控件及属性见表。)解析:考点 本题考点有:标签的 Name、Caption 和 AutoSize 属性,文本框的 Name、Text 和MaxLength 属性以及形状控件的 Name 和 Shape 属性。Shape 属性用来设置形状控件的形状。其取值及边框形状如下。取 0 值:矩形,默认设置;取 1:正方形;取 2:椭圆;取 3:圆;取 4:圆角矩形;取 5:圆角正方形。AutoSize 属性决定控件是否能自动调整大小以显示所有的内容。MaxLength 属性设置文本
7、框中输入的字符串长度。默认值为 0,表示该单行文本框中字符串的长度只受操作系统内存的限制。如果设置为大于 0 的数,则表示能够输入的最大字符数目。2.在名称为 Form1 的窗休上添加一个名称为 Label1 的标签,字号大小为四号,标题为“等级考试”,如图 1 所示。通过设置属性使标签初始为不显示。请编写适当的程序,使得运行程序时,窗体的标题立即变为“标签”,单击窗体时,显示标签,如图 2 所示。注意:存盘时,将文件保存至考生文件夹下,且窗体文件名保存为 sjt2.frm,工程文件名保存为sjt2.vbp。要求程序中不得使用变量,每个事件过程中只能写一条语句。(分数:20.00)_正确答案:
8、(操作步骤步骤 1:新建一个窗体,按照题目要求建立控件并设置其属性,如表所示。控件 标签属性 Name Caption VisibleFontSize设置值 Label1等级考试 False 四号字步骤 2:编写程序代码。参考答案Private Sub Form_Click()Label1.Visible=TrueEnd SubPrivate Sub Form_Load()Form1.Caption=“标签“End Sub步骤 3:调试并运行程序,关闭程序后按题目要求存盘。)解析:考点 本题考点有:标签的 Name、Caption、Visible 和 FontSize 属性以及窗体的 Capt
9、ion 属性。通过标签的 Name、Caption 和 FontSize 属性设置标签的名称、标题和字体大小,通过设置标签的Visible 属性为 False,使标签初始为不可见。编写适当的程序,在 Form_Load 事件过程中,窗体的Caption 属性值立即变为“标签”,在 Form_Click 事件过程中单击窗体时,设置标签的 Visible 属性为True 显示标签。二、简单应用题(总题数:2,分数:40.00)3.考生文件夹中有工程文件 sjt3.vbp。窗体上有一个名称为 Label1、标题为“标签控件”的标签;有一个名称为 Commandl、标题为“命令按钮”的命令按钮。单击上
10、述两控件中的任一控件,则在标签 Label2中显示所单击控件的标题内容(标题内容前添加“单击”二字),下图是单击命令按钮后的窗体外观。请去掉程序中的注释符,把程序中的?改为正确的内容。(分数:20.00)_正确答案:(操作步骤步骤 1:打开本题工程文件。步骤 2:打开代码编辑窗口,去掉程序中的注释符“”,将问号改为正确的内容。参考答案(阴影部分是需考生填入的内容)Private Sub Command1_Click()Call ShowName(Commandl) 将 Command1 控件传入 ShowNameEnd SubPrivate Sub Label1_Click()Call Sho
11、wName(Labell) 将 Label 控件传入 ShowNameEnd SubPrivate Sub ShowName(c As Control) 两者类型都为控件If TypeOf c Is CommandButton ThenLabel2.Caption=“单击“Command1.CaptionEnd IfIf TypeOf c Is Labe1 ThenLabel2 Caption=“单击“Label1.CaptionEnd IfEnd Sub步骤 3:调试并运行程序,关闭程序后按题目要求存盘。)解析:考点 本题考点有:Call 语句、TypeOf 运算符、标签的 Caption
12、属性、命令按钮的 Caption 属性以及 If 判断语句。单击两个控件中的任一个,通过 Call 语句调用函数 ShowName()实现在标签 Label2 中显示所单击控件的标题内容,自定义函数 ShowName()用于判断控件的类型,CommandButton 表示命令按钮,Labe1 表示标签,如果变量 c 的控件类型是 CommandButton,那么 Label2 的 Caption 属性设置为”单击”Command1.Caption,显示控件的标题内容。在自定义函数时,参数 c 定义的类型为 Control,表示定义的是控件的名称,同时在调用函数时要注意,函数的参数是控件的名称。
13、4.在考生文件夹下有一个工程文件 sjt4.vbp,其窗体上有一个由八个图片框控件组成的控件数组、两个命令按钮及一个计时器控件,如图 1 所示。程序功能:将计时器控件设置为每隔 0.5 秒触发一次 Timer 事件。运行程序时,只显示下标为 0 的图片框控件数组元素,其他图片框均不可见。单击“开始”按钮,数组中的每个图片框自左至右依次显示,时间间隔为 0.5秒,产生“月亮”从左向右移动的效果,如图 2 所示。月亮移到右端后再从左端重新开始。单击“停止”按钮,“月亮”停止移动。要求:按照题目要求设置控件属性,去掉程序中的注释符,把程序中的?改为正确的内容。注意:不能修改程序的其他部分和控件属性,
14、最后将修改后的文件按原文件名进行存盘。(分数:20.00)_正确答案:(操作步骤步骤 1:打开本题工程文件,将 Timer1 的 Interval 属性设置为 500。步骤 2:打开代码编辑窗口,去掉程序中的注释符“”,将问号改为正确的内容。参考答案(阴影部分是需考生填入的内容)Private Sub Form_Load()Picture1(0).Left=0Picture1(0).Top=100For k=1 To 7Picturel(k).Visible=False 当窗体装载时,下标为 17 的图片都不显示NextEnd SubPrivate Sub Commandl_Click()Ti
15、mer1.Enabled=True单击 Command1 按钮,Timer 事件触发End SubPrivate Sub Command2_Click()Timer1.Enabled=FalseEnd SubPrivate Sub Timer1_Timer()Static i As IntegerPicturel(i).Visible=Falsei=i+1If i=8 Then判断图片是否执行到最后一张i=0重置 i 值End IfPicturel(i).Visible=TrueEnd Sub步骤 3:调试并运行程序,关闭程序后按题目要求存盘。)解析:考点 本题考点有:计时器的 Interva
16、l 和 Enabled 属性,图片框的 Left、Top、Visible 属性,Static 局部变量定义,For 循环语句以及 If 判断语句。首先将 Timer1 的 Interval 属性设置为 500,使计时器控件设置为每隔 0.5 秒触发一次。在 Form_Load 事件过程中,通过图片框 Visible 属性设置只显示下标为 0 的图片框控件数组元素,其他下标为 17 的图片框均不显示。单击“开始”按钮,计时器的 Enabled 属性设置为 True,Timer1_Timer 事件启动,运用循环语句将数组中的每个图片框自左向右依次显示,产生“月亮”从左向右移动的效果,循环变量设置为
17、局部变量 Static,使“月亮”移到右端后再从左端重新开始。单击“停止”按钮,“月亮”停止移动。变量 i 要定义成局部变量才能使“月亮”移到右端后再从左端重新开始,如果不设置计时器控件的Interval 属性,则计时器不会起作用,编程的时候要注意。三、综合应用题(总题数:1,分数:20.00)5.考生文件夹下有一个_丁程文件 sjts.vbp。运行程序后,从文件中读出数据,将其放入一个 55 的二维数组 a 中。请编写程序,找出数组 a 中每行的最大值及该值在行中的次序(列下标),并将所找到的结果分别保存到一维数组 b、c 中(a 中第一行的最大值保存存 b(1)中,最大值的列次序保存在 c
18、(1)中)。注意:不能修改程序的其他部分和控件属性,最后将修改后的文件按原文件名存盘。程序调试通过后,命令按钮的事件过程必须至少执行一次。(分数:20.00)_正确答案:(操作步骤步骤 1:打开本题工程文件。步骤 2:打开代码编辑窗口,在指定位置编写如下代码。参考答案Max=a(i,1)将每行第一个数作为该行最大值,以便进行比较For j=1 To 5If Maxa(i,j)Then依次循环比较该行其他数,如有更大值,则替换 max 值Max=a(i,j)End Ifb(i)=Max最大值存入数组 b 中If Max=a(i,j)Then c(i)=j最大值的下标存入数组 c 中Next j步
19、骤 3:调试并运行程序,关闭程序后按题目要求存盘。)解析:考点 本题考点有:二维数组、嵌套循环、文件编辑、For 循环语句以及 If 判断语句。从考生文件夹下的文件中读出数据,放入 55 的二维数组 a 中。在命令按钮单击事件过程中,程序中变量 Max 保存最大数,最初把数组的第一个元素赋给 Max,然后将其后的元素依次与之比较,如果大于 Max的值则与之交换,依次类推,最终 Max 中的元素就是最大值,并把每一行的最大值保存到一维数组 b 中,通过 For 循环语句和 If 判断语句找出 a 数组中每行的最大值以及其在行中的位置,并将所找到的结果分别保存到一维数组 c 中,把最终的结果保存在文件 out5.txt 中。