1、国家计算机二级(VB)67 及答案解析(总分:100.00,做题时间:120 分钟)一、选择题(每小题 2分,共 70分) 下列各(总题数:35,分数:70.00)1.下列程序的执行结果为( )。 Private Sub Commandl_Click() Dim s1 As String ,s2 As String s1= “abcd“ Call Transfer(sl,s2) Print s2 End Sub Private Sub Transfer (ByVal xstr As String,ystr As String) Dim tempstr As String ystr=tempst
2、r End Sub (分数:2.00)A.dcbaB.abdcC.abcdD.dabc2.为了通过键盘访问主菜单项,可在菜单编辑器的“标题”选项中的某个字母前插入何字符,建立热键字母? (分数:2.00)A.int i=10; while(1) i; if(i= =1)break; B.for(int i=1;i ;0 Or a=0 And a=0 And a10C.Case Is10 And Is1023.下面有一段程序代码,如果从键盘上输入“Computer“,则在文本框内显示的内容是( )。 Private Sub Text1_KeyPress(KeyAscii As Integer)
3、If KeyAscii =65 And KeyAscii=122 Then KeyAscii=42 End If End Sub (分数:2.00)A.PictureB.CurentYC.CurrentXD.Stretch24.以下事件过程可以将打开的对话框的标题改为“宇宙大爆炸”的是( )。(分数:2.00)A.Private Sub Command2_Click( ) CommonDialog1DialogTitle=“宇宙大爆炸” CommonDialog1ShowOpen End SubB.Private Sub Command2_Click( ) CommonDialog1Dialo
4、Title=“宇宙大爆炸” CommonDialog1ShowFont End SubC.Private Sub Command2_Click( ) CommonDialog1DilogTitle=“宇宙大爆炸” CommonDialog1Show End SubD.Private Sub Command2_Click( ) CommonDialog1DialogTitle=“宇宙大爆炸” CommonDialog1ShowColor End Sub25.下列程序段执行结果为( )。 m=5 n=-6 If Not X0 Then m=n-3 Else n=m+3 Print m-n;n-m
5、(分数:2.00)A.1,6,3,1,3B.1,6,3,6,3C.1,6,3,2,3D.1,7,3,2,326. 以下语句的输出结果是( )。 a = Sqr(26) Print Formats (a,“#“) (分数:2.00)A.在成员函数声明的前面加上 virtual修饰,就可把该函数声明为虚函数B.基类中说明了虚函数后,派生类中对应的函数也必须说明为虚函数C.虚函数可以是另一个类的友元函数,但不能是静态成员函数D.基类中说明的纯虚函数在其任何派生类中都必须实现27.在窗体上画一个命令按钮,然后编写如下事件过程: Sub BTC(old Copy( ) As Integer,new Co
6、py( ) As Integer) Dim i AS Integer For i=LBound(oldCopy( )To UBound(oldCopy( ) newCopy(i)=oldCopy(i) Next i End Sub Private Sub Command1 _ Click( ) Dimm(10) As Integer,n(10)As Integer For i=1 To 10 m(i) =i*i Next i Call BTC(m,n) Print n(5) End Sub 程序运行后,单击命令按钮输出结果为( )。 (分数:2.00)A.0B.2C.10D.2528.单击命令
7、按钮时,下列程序的执行结果为( )。 Private Sub Command1 Click() Dim x As Integer,y As Integer x=12:y=32 Call PCS(x,y) Print x;y End Sub Public Sub PCS(ByVal n As Integer,ByVal m As Integer) n=n Mod 10 m=m Mod 10 End Sub (分数:2.00)A.1232B.232C.23D.12329.在 Visual Basic中,要将一个窗体加载到内存进行预处理但不显示,应使用的语句是( )。(分数:2.00)A.关系中每一
8、个属性对应一个值域B.关系中不同的属性可对应同一值域C.对应同一值域的属性为不同的属性D.DOM(A)表示属性 A的取值范围30.下列叙述中正确的是_。(分数:2.00)A.软件交付使用后还需要进行维护B.软件一旦交付使用就不需要再进行维护C.软件交付使用后其生命周期就结束D.软件维护是指修复程序中被破坏的指令31.下面说法不正确的是( )。(分数:2.00)A.变量名的长度不能超过 255个字符B.变量名可以包含小数点或者内嵌的类型声明字符C.变量名不能使用关键字D.变量名的第一个字符必须是字母32.下列过程定义语句中,形参个数为不确定数量的过程是( )。(分数:2.00)A.4 6B.6
9、6C.8 8D.10 1233.只有将组合框的 Style属性设置为何值时,才能触发 DblClick事件?(分数:2.00)A.ThreadB.RunnableC.ObjectD.ThreadGroup34.下列程序运行结果是( )。 a=25:b=-45 i=Not a=b Print i (分数:2.00)A.数据库集合B.用户C.数据库管理系统及相关软件D.操作系统35.设在窗体上有一个文本框,然后编写如下的事件过程: Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Intcger) Const Alt=4 Const Ke
10、y_f2=n-m (分数:2.00)A.1,6,3,1,3B.1,6,3,6,3C.1,6,3,2,3 D.1,7,3,2,3解析:左移 1位,相当于乘以 2,题中的 x的值是一个八进制数,转换为十进制数是 32,再乘以 2,x 的值为 64。26. 以下语句的输出结果是( )。 a = Sqr(26) Print Formats (a,“#“) (分数:2.00)A.在成员函数声明的前面加上 virtual修饰,就可把该函数声明为虚函数B.基类中说明了虚函数后,派生类中对应的函数也必须说明为虚函数 C.虚函数可以是另一个类的友元函数,但不能是静态成员函数D.基类中说明的纯虚函数在其任何派生类
11、中都必须实现解析:本题考查的是数组的基本使用,数组还可以通过对应的指针调用 传递参数,其余选项的说法都是正确的。27.在窗体上画一个命令按钮,然后编写如下事件过程: Sub BTC(old Copy( ) As Integer,new Copy( ) As Integer) Dim i AS Integer For i=LBound(oldCopy( )To UBound(oldCopy( ) newCopy(i)=oldCopy(i) Next i End Sub Private Sub Command1 _ Click( ) Dimm(10) As Integer,n(10)As Inte
12、ger For i=1 To 10 m(i) =i*i Next i Call BTC(m,n) Print n(5) End Sub 程序运行后,单击命令按钮输出结果为( )。 (分数:2.00)A.0B.2C.10D.25 解析:在此题中定义了一个数据拷贝函数,用数组来保存数据,在主调过 程中,先用 ForNext循环语句给 m( )赋给,然后调用 BTC函数,将 m( )中的数据赋给 n ( ),最后输出 n(5)。在数据拷贝函数中,用了函数 LBound(oldCopy( )和 UBound(old- Copy( )分别获得数组的下界和上界,控制循环次数。用newCopy(i)=old
13、Copy(i)赋值语句,将 m数组中的数据赋给 n数组。因为 m(5)=25,数组 n与数组 m等价,所以 n (5)也是 25。28.单击命令按钮时,下列程序的执行结果为( )。 Private Sub Command1 Click() Dim x As Integer,y As Integer x=12:y=32 Call PCS(x,y) Print x;y End Sub Public Sub PCS(ByVal n As Integer,ByVal m As Integer) n=n Mod 10 m=m Mod 10 End Sub (分数:2.00)A.1232 B.232C.2
14、3D.123解析:此题是函数过程的调用。 在调用过程时,一般主调与被调过程之间有数据传递,即将主调过程的实参传递给被调用的过程,完成实参与形参的结合,然后执行被调过程,在 Visual Basic中,实参与形参的结合有两种方式,即传址与传值。这两种方法的特点如下: 传址的结合过程是,当调用一个过程时,它将实参的地址传给形参,因此在被调用的过程中,对形参的任何操作都变成了对相应实参的操作,因此实参的值会随形参的改变而改变。 传值的结合过程时:当调用一个过程时,系统将实参的值复制给形参并断开了联系,被调用过程中的操作时在形参自己的存储单元中进行的,当过程调用结束时,这些形参所占用的存储单元也同时被
15、释放,因此在过程中对形参的任何操作不会影响实参。而题中被调过程 PCS中有两个形参,两者均为传值方式。主调过程分别把实参 x、y 传递给 PCS,所以当过程调用结束后,实参x、y 的值都没有改变,最后输出的值应为 1232。29.在 Visual Basic中,要将一个窗体加载到内存进行预处理但不显示,应使用的语句是( )。(分数:2.00)A.关系中每一个属性对应一个值域B.关系中不同的属性可对应同一值域C.对应同一值域的属性为不同的属性 D.DOM(A)表示属性 A的取值范围解析:Caption 不是只读属性,在设计阶段可以在属性窗口中改变,也可以用代码在运行时改变,不同的运行状态可以有不
16、同的 Caption属性值,所以选项 A)是正确的;Height 和 Width的默认的单位是twip,1twip 等于 1/1440英寸,是 1点的 1/20,故选项 B)是不正确的;Icon 属性是用来设置窗体最小化图标的,所以选项 C)的表述是正确的;用来激活属性窗口的快捷键是 F4键,所以选项 D)也是正确的。30.下列叙述中正确的是_。(分数:2.00)A.软件交付使用后还需要进行维护 B.软件一旦交付使用就不需要再进行维护C.软件交付使用后其生命周期就结束D.软件维护是指修复程序中被破坏的指令解析:软件的运行和维护是指将已交付的软件投入运行,并在运行使用中不断地维护,根据新提出的需
17、求 进行必要而且可能的扩充和删改。而软件生命周期是指软件产品从提出、实现、使用维护到停止使用退役 的过程。31.下面说法不正确的是( )。(分数:2.00)A.变量名的长度不能超过 255个字符B.变量名可以包含小数点或者内嵌的类型声明字符 C.变量名不能使用关键字D.变量名的第一个字符必须是字母解析:在 Visual Basic中,可以用名字来表示内存的位置,以便访问内存中的数据。有关变量命名的规则如下: 名字只能由字母、数字和下划线组成; 名字的第一个字符必须是英文字母,最后一个字符可是是类型说明符; 名字的有效字符为 255个; 不能用 Visual Basic的保留字作变量名,但可以把
18、保留字嵌入变量名中;同时变量名 也不能是末尾带有类型说明符的保留字,例如变量Print和 Print$是非法的,而变量 Print_ Number是合法的。 32.下列过程定义语句中,形参个数为不确定数量的过程是( )。(分数:2.00)A.4 6B.6 6C.8 8 D.10 12解析:在 Sub过程中,程序段先定义了 3个 Integer 型变量 k,m,op,并给 k 赋给 初值 4,m 的初值为1,然后调用事件过程 PPC,并将它的值赋给 op;在事件过程 PPC中定 义了两个形参,参数的传送是通过引用实事,即将 k,m 的地址作为 a,b 的地址;在 PPC 中,将 m,I 定义为静
19、态变量,第一次调用后的值仍然保留,但是 m,I 分别都有赋值语句, 将它们的值变为 0,2,所以返回值不变。33.只有将组合框的 Style属性设置为何值时,才能触发 DblClick事件?(分数:2.00)A.ThreadB.RunnableC.Object D.ThreadGroup解析:表格是 Swing新添加的构件,主要功能是把数据以二维表格的形式显示出来。使用表格,依据 MVC的思想,最好先生成一个 MyTableModel类型的对象来表示数据,这个类是从 AbstractTableModel类中继承来的,因为 JTable会从这个对象中自动获取表格显示所必需的数据,Abstract
20、TableModel 类的对象负责表格大小的确定、内容的填写、赋值、表格单元更新的检测等等与表格内容有关的属性及其操作。34.下列程序运行结果是( )。 a=25:b=-45 i=Not a=b Print i (分数:2.00)A.数据库集合B.用户C.数据库管理系统及相关软件D.操作系统 解析:在一维数组中要注意的是作为下标表达式的常量表达式的值必须是大于等于 0,并且小于自身,本题中选项 B)的下标表达式的值超过了自身。35.设在窗体上有一个文本框,然后编写如下的事件过程: Private Sub Text1_KeyDown(KeyCode As Integer, Shift As In
21、tcger) Const Alt=4 Const Key_f2=&H71 altdown%=(Shift And Alt) 0 f2down% And f2down% Then If altdown% And f2down% Then Text =“abl“ End If Ead Sub 程序运行后,清除文本框中原有内容,如果按 Shift+F2键,则在文本框中显示的是( )。 (分数:2.00)A.add()B.requestFocus()C.repaint()D.paint() 解析:一个类的友元函数对类成员的访问能力等同于类的成员函数,即能访问类的所有成员。 二、填空题(每空 2分,共
22、30分)(总题数:10,分数:30.00)36.在窗体上有一个命令按钮,然后编写如下程序: Function Trans(ByVal num As Long) As Long Dim k As Long k=l Do While num k=k * (num Mod 10) num=num/10 Loop Trans=k Print Trans End Function Private Sub Commandl_Click1 Dim m As Long Dim s As Long m=InputBox(“请输入一个数“) s=Trans(m) End Sub 程序运行时,单击命令按钮,在输入对
23、话框中输入“789”,输出结果为 2,在输入对话框中输入“987”输出 3,在输入对话框中输入“879”,输出结果为 4。 (分数:3.00)填空项 1:_ (正确答案:504)解析:关键字 ByVal用来实现传值,也就是说在定义通用过程时,如果形参前面有关键字 Byval,则该参数用传值方式传递,否则用传址方式传递;在 Sub过程中,先将输入的 “456”赋给变量 m,m 作为参数,调用 Trans过程;在 Trans过程中以 num作为 Do While的循环条件;在循环体中,调用 Mod函数,将num的个位数字与 k相乘,然后赋给 k,第一次循环时,num 的值是 789,所以 k的值为
24、 9,执行 num = num/10后,num 的值为 78,循环三次后,num 变为 0;退出循环,k 值等于 987=504,并将 k的值作为返回值;当输入 “987”或“879”时执行相同的操作,结果都为 504。可以看出,此程序可用于求一个数值各位上数值的乘积。37.设有以下函数过程: Function fun(m As Integer) As Integer Dim k As Integer, sum As Integer sum = 0 For k = m To 1 Step -2 sum = sum + k Next k fun = sum End Function 若在程序中用
25、语句s=fun(10)调用此函数,则 s的值为 1。 (分数:3.00)填空项 1:_ (正确答案:30)解析:在 For 循环中,Step 是用于指定计数器的步长,本题中是-2,就是每执行一次循环后,k 的值减 2。 本题中从 10 开始执行循环,当 k=0 时,结束循环。此时 s=10+8+6+4+2=30。38.在窗体上画一个名称为“Command1“的命令按钮,然后编写如下事件过程: Private Sub Commandl_Click1 Dim a As String a=“123456789“ For i=1 To 5 Print Space(6-i);Mid$(a, 2,2*i-
26、1) Next i End Sub 程序运行后,单击命令按钮,窗体上的输出结果是 5 456 34567 2345678 123456789 请填空。 (分数:3.00)填空项 1:_ (正确答案:6-i)解析:Mid$(字符串,起始位置,个数)函数用于取出字符串从指定位置开始的含指定个数字符的字符串。本题 Mid$的作用在于依次取出字符串居中位置的 1、3、5、7、9 个字符,故取字符串起始位置为 6-i,即依次为 5、4、3、2、1。39.用户可以用 1 语句定义自己的数据类型。(分数:3.00)填空项 1:_ (正确答案:TyPe)解析:用户可以用 TyPe语句来定义数据类型,格式是:
27、Type 数据类型名 数据类型元素名 As类型名 数据类型元素名 As类型名 EndType 其中“数据类型名”是要定义的数据类型的名字,其命名规则和变量的命名规则相同;“数据类型元素名”也遵守相同的规则,且不能是数组名;“类型名”可以是任何基本数据类型,也可以是用户定义的类型。 40.将 C盘根目录下的图形文件 moon.jpg装入图片框 Picture1的语句是 1。(分数:3.00)填空项 1:_ (正确答案:Picture1.picture=loadpicture(“c:/moon.jpg”))解析:41.窗体上有两个按钮,则执行程序后按键盘 Cancel键的输出结果是 1。 Priv
28、ate Sub Command1 _ Click2 Print“北京“; End Sub Private Sub Command2 _ Click3 Print“南京“; End Sub Private Sub Form _ Load4 Command2CancelTrue Command1Cancel=True End Sub (分数:3.00)填空项 1:_ (正确答案:北京)解析:窗体中只能有一个 CommandButton控件为取消按钮。当一个 CommandButton 控件的 Cancel属性被设置为 True时,窗体中其他 CommandButton控件的 Cancel属性自动地
29、被设置为 False。当 CommandBuuon控件的 Cancel属性被设置为 True,而且当前窗体处于活动状态时,按 Cancel键可以触发该按钮 Click事件,而不管该控件是否获得焦点。本题开始时 Command2的 Caned属性为 True,但随后由于 Command1的该属性变为 True, Command 2 的 Cancel属性变为 False,因此按 Cancel键后执行 Command1 _ Click事件。42.在窗体上有一个命令按钮,然后编如下事件过程: Function SR( x As Double)As Double Select Case Sgn(x) C
30、ase 1 SR=Sqr(x) Exit Function Case 0 SR=0 Case-1 SR=-1 End Select End Function Private Sub Command1 _ Click1 Dim Msg,SRN Dim N AS Double N=InputBox(“请输入要计算平方根的数“) Msg=N&“的平方根“ Select Case SR(N) Case 0 Msg=Msg &“是 0“ Case-1 Msg=Msg&“是一个虚数“ Case ElSe Msg=Msg &“是“& SR(N) End Select MsgBox Msg End Sub 程
31、序运行后,单击命令按钮,在输入对话框内输入1,输出结果是 2。 (分数:3.00)填空项 1:_ (正确答案:-1 的平方根是一个虚数)解析:在 Sub过程中,定义了一个 Double型变量 N,并调用 InputBox函数,给 N 赋值,即将从对话框中输入的 -1 赋给 N;通过运算符“&”,将 N与字符串“的平方根”连接起来并赋给 Msg;在条件块语句中将 N作为参数,调用 SR事件过程,将 Function过程的返回值作为测试表达式;在 SR函数中,调用Sgn函数测试 x的值为正数还是负数,如果是正数,那么就执行条件块语句中的 SR=Sqr(x),即将 x的平方根作为返回值,如果 x值为
32、零,Sp 函数返回值为零,那么就将 0作为返回值;如果为负数,Sgn 函数返回值为- 1,SR=-1,即将-1 作为返回值;在 Sub程序的条件块语句中,根据 SR返回值的不同,执行不同操作,当返回值为 0,将 Msg字符串加“是 0”,赋给 Msg,如果是-1,将 Msg加“是一个虚数”赋给Msg,当为其他时,即在平方根时,将字符串 Msg加“是”,再加上这个数的平方根赋给 Msg,并用MsgBox函数输出。43.在窗体上加上一个文本控件 PCSTextBox,画一个命令按钮,当单击命令按钮的时候将显示 “打开文件”对话框,设置该对话框只用于打开文本文件,然后在文本控件中显示打开的文件名。请
33、填空。 Private Sub Command1_Click1 CommonDialog1Filter= 2 CommonDialog1ShowOpen PCSTextBoxText= 3 End Sub (分数:3.00)填空项 1:_ (正确答案:“Text)填空项 1:_ (正确答案:Files(*txt)|*txt“)解析:要设置通用对话框只用于打开文本文件,需要设置通用对话框的 Filter属性值,在这里我们应该填写的是“Text Files(*txt)| *txt“;在使用了对话框控件的 ShowOpen 后出现的打开文件对话框中的文件类型只有 Text Files(*txt)|*
34、.txt,选择了需要打开的文本文件后,应该让文件的文件名显示在文本框中,因此需要将通用对话框中选择的文件赋给文本控件,即将对话框的 FileName属性值赋给文本框的 Text属性。44.给定年份,下列程序用来判断该年是否是闰年,请填空。 Sub YN1 Dim X AS Integer xInput Box(“请输入年号“) If( x Mod 4=0 2 x Mod l000) 3 (x Mod 400=0)Then Print“是闰年“ Else Print“不是闰年,是普通年份“ End If End Sub (分数:3.00)填空项 1:_ (正确答案:And)解析:此题主要考查了闰
35、年的条件,并把条件用逻辑关系式表示出来。闰年的条件是能被四整除不能被100整除的是闰年,或者是能被 400整除,所以由此可以写出逻辑关系式:(x Mod 4=0 And x Mod l00 0 ) Or (x Mod 400=0)。45.下列程序计算 Sn的值。Sn=a+aa+aaa+aaaa,其中最后一项为 n个。 例如:a=5,n=4 时,则Sn=5+55+555+5555。请在空白处填入适当的内容,将程序补充完整。 Private Sub Command1_Click1 Dim a As Integer,n As Integer,Cout As Integer Dim Sn As Lon
36、g,Tn As Long Cout=1 Sn=0 Tn=0 a=InputBox(“请输入 a的值:“) 2 Do Tn=Tn * 10 + a Sn 二 Sn + Tn Cout=Cout+1 3 DebugPrint a,n,Sn End Sub (分数:3.00)填空项 1:_ (正确答案:答案:n = InputBox(“请输入 n的值!”))解析: a 和 n的值必须已知,表达式才能计算。但程序中没有给变量 n赋值的语句,可见第一个空白行应该填写给 n赋值的语句。 Do 循环应该有与之对应的终端语句,可见于第二个空白行应填写 Do循环的终端语句,即 While 语句,同时要构造出控制循环的。程序中有四个赋值语句,其中有 一个计数语句 Cout=Cout + 1,可见控制循环次数的变量应是 Cout。