1、国家二级 VB机试(上机操作)模拟试卷 342及答案与解析 一、基本操作题 1 (1)在名称为 Form1的窗体上画一个名称为 Framel、标题为 “目的地 ”的框架,在框架中添加三个复选框,名称分别为 Checkl、 Check2、 Check3,其标题分别是 “上海 ”、 “广州 ”、 “巴黎 ”,其中 “上海 ”为选中状态, “广州 ”为未选状态, “巴黎 ”为灰色状态,如图 3 117所示。请画控件并设置相应属性。 注意:存盘时必须存放在考生文件夹下,工程文件名为 sjtl vbp,窗体文件名为 sjtl frm。 (2)在名称为Form1的窗体上画一个名称为 Picture1的图片
2、框,其宽和高分别为 1700、 1900。请编写适当事件过程,使得在运行时,单击图片框,则装入考生目录下的图形文件picl bmp,如图 3 118所示。单击窗体则图片框中的图形消失。要求程序中不得使用变量,每个事件过程中只能写一条语句。 注意:存盘时必须存放在考生文件夹下,工程文件名为 sjt2 vbp,窗体文件名为 sjt2 frm。二、简单应用题 2 (1)在考生文件夹下有一个工程文件 sjt3 vbp,其功能是: 1)单击 “读数据 ”按钮,则把考生文件夹下 in3 dac文件中的 100个按升序排列的整数读入到数组 a中,同时显示在 Text1文本框中; 2)单击 “查找 ”按钮,则
3、提示用户输入查找的数,并利用二分法在数组 a中查找该数,若查找成功,则在 Text2文本框中显示该数在数组中的位置,否则显示查找失败。 提示:二分法查找的思路是,将查找值与有序数组的中间项元素进行比较,若相同则查找结束;否则判断查找值落在数组的上半部分还是下半部分,并继续在那一半的数组中重复上述查找过程。 要求:请将窗体的标题设置为 “二分法查找 ”,并将 “查找 ”命令按钮的 Click事件过程中的注释符去掉, 把 “?”改为正确内容,以实现上述程序功能。如图 3186所示的是运行时输入数值 68的查找结果。 注意:考生不得修改窗体文件中已经存在的控件和程序。最后,程序按原文件名存盘。 (2
4、)在考生文件夹下有一个工程文件 sjt4 vbp。运行程序,按下鼠标左键,并在窗体上拖动鼠标时,沿鼠标移动可在窗体上画出一系列圆,如图 3一 187所示。给出的程序不完整,要求去掉程序中的注释符,把程序中的 “?”改为正确的内容。 注意:考生不得修改窗体文件中已经存在的控件和程序,最后将程序按原文件名存盘。三、综合应用题 3 在考生 文件夹下有一个工程文件 sjt5 vbp,其窗体上有三个标签、三个文本框和两个命令按钮,均使用默认名称。程序的功能是: 如果单击 “读数据 “命令按钮,则把考生文件夹下 in5 dat文件中两组已按升序方式排列的数 (每组 30个数 )分别读入数组 A和 B,并分
5、别将它们显示在 Textl、 Text2中; 如果单击 “合并 ”命令按钮,则将 A、 B两个数组合并为另一个按升序方式排列的数组 C,并将合并后数组 C中的数据依升序方式显示在 Text3中。 窗体中给出了所有控件 (如图 3155所示 )以及 “读数据 ”命令按钮的 Click事件过程 ,请完善 “合并 ”命令按钮的 Click事件过程,使其实现上述功能。 注意:不得修改已经存在的控件和程序,在结束程序运行之前,必须进行合并操作,且必须通过窗体右上角的 “关闭 ”按钮结束程序,否则无成绩。最后,程序按原文件名存盘。国家二级 VB机试(上机操作)模拟试卷 342答案与解析 一、基本操作题 1
6、 【正确答案】 (1)步骤 1:新建一个 “标准 EXE”工程。 步骤 2:在窗体 Form1中加入一个框架,然后依次在框架中画出三个复选框。 步骤 3:分别设置框架和各复选框的相关属性,其属性及值如表 4-70所示。步骤 4:按要求将文件保存至考生文件夹中。 (2)步骤 1:新建一个 “标准 EXE“工程,如表 4-71在窗体中画出图片框并设置其相关属性。步骤 2:打开代码编辑窗口,编写图片框和窗体的单击事件过程。参考代码: Private Sub Form_Click()Picture1 Picture=LoadPicture(“)End SubPrivate Sub Picture1_C
7、lick()Picture1 Picture=LoadPicture(“picl bmp“)End Sub 步骤 3:按要求将文件保存至考生文件夹中。 【试题解析】 (1)本题只需按要求画出框架以及框架中的复选框,并设置其 Value属性。 (2)本题需分别在图片框和窗体的 Click事件过程中,用 LoadPicture()函数为图像框加载或清除图片。 二、简单应用题 2 【正确答案】 (1)步骤 1:打 开本题工程文件 sjt3 vbp,在代码编辑窗口中,去掉程序中的注释符 “”,将问号 “?”改为正确的内容。参考代码: m=(low+high) 2 high=m-1 low=m+1 Lo
8、op Until low high If flag=1 Then 步骤 2:按要求将文件保存至考生文件夹中。 (2)步骤 1:打开本题工程文件 sjt4 vbp,在代码编辑窗口中,去掉程序中的注释符 “”,将问号 “?”改为正确的内容。参考代码: Dim Flag As Boolean PriVate Sub Form MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Circle (X, Y), 300 Flag=False 步骤 2:按要求将文件保存至考生文件夹中。 【试题解析】 (1)在本题中
9、首先假设待查找数组的最小下标值为 low,最大下标值为 high,则数组正中的元素下标 m为 (low+high) 2。然后进行判断,如果 a(m)的值等于待查找的值,则视为找到,令变量 flag的值为 1并退出循环;否则若 a(m)大于 x, 则应该在左半部分查找,此时 low不变, high的值为 m-1; a(m)小于 x,则应该在右半部分查找,此时 high不变, low的值为 m+1。这样一直到 lowhigh为止退出循环,循环结束后判断旗帜变量 flag的值,若其为 l则意味着找到了待查找数据,否则为没有找到。 (2)本题源程序在 Form MouseDown事件过程中,先判断当前
10、按下的是否为鼠标左键,若为左键,则将全局变量 flag的值设置为 True,因此该变量类型应该为逻辑型;在 Form MouseUp事件过程中,判断若弹起的是鼠标左键,则令 flag为False,这样的话如果鼠标左键保持按住不放时 flag的值就一直为 True。在 Form MouseMove事件中,如果 flag为 True(意味着按住鼠标左键 ),则调用 Circle方法画一个圆。 三、综合应用题 3 【正确答案】 步骤 1:打开考生文件夹下的工程文件 sjt5 vbp。 步骤 2:编写 “合并 ”按钮的单击事件过程。参考代码: Private Sub Command2_Click()
11、;考生编写程序开始 ia=1: ib=1: iC=1 Do While ia=30 And ib=30 Tf a(ia) b(ib)Then c(ic)=a(ia): ia=ia+1 Else c(ic)=b(ib): ib=ib+1 End Tf ic=ic+1 Loop Do While ia=30 c(ic)=a(ia): ia=ia+1: ic=ic+1 Loop Do While ib=30 C(ic)=b(ib): ib=ib+1: ic=ic+1 Loop 考生编写程序结束 以下程序将合并后的数组 C显示在 Text3中 For k=1 To 60 Text3=Text3+Str
12、(c(k)+Space(2) Next k End S1 1b 步骤 3:运行程序,单击 “读数据 ”按钮,然后单击 “合并 ”按钮获得结果,然后通过窗体右上角的 “关闭 ”按钮结束程序。 步骤 4:按要求将文件保存至考生文件夹中。 【试题解析】 根据题意,要求实现两个数组的有序合并,可以设置三个变量 ia、ib、 ic用于标识当前分别在三个数组中的当前元素下标,初值均为 1;接下来进行循环,分别比较 a(ia)和 bob)的大小,若 a(ia)b(ib),则将 a(ia)放入 c(ic)中,然后令 ia加 1指向 a的下一个元素;否则将 bob)放入 c(ic)中并令 ib+1指向 b的下一个元素;最后令 ic加 1指向 c的下一个元素位置。 循环结束的条件是 a数组已经比较完或者 b数组已经比较完,此时需要将数组中余下的数据连接到 C数组中。