2007年9月全国计算机等级考试二级VB模拟试题(2)及答案

出处:Examlink 作者:刀断水 日期:2007年09月13日 10时02分

(31) 定义过程的格式中,Static关键字的作用是指定过程中的局部变量在内存中的存储方式。若使用了Static关键字,则
A) 每次调用此过程,该过程中的局部变量都会被重新初始化
B) 在本过程中使用到的,在其他过程中定义的变量也为Statci型
C) 每次调用此过程时,该过程中的局部变量的值保持在上一次调用后的值
D) 定义了该过程中定义的局部变量为"自动"变量
解析:Static关键字用于指定局部变量在内存中的存储方式。变量的存储方式有两种:静态的和自动的。静态存储方式是指当过程运行完毕后,变量所占的内存单元不释放,而变量的值被保存下来,该变量为静态变量。Static型变量所占存储控件只初始化一次,且变量的值在整个程序运行期间都存在;Static关键字对过程之外定义的变量没有影响;Static关键字是定义该过程中定义的局部变量为静态变量。
(32) 单击命令按钮时,下列程序的执行结果为
Private Sub Command1_Click()
   Dim x As Integer, y As Integer
   x=50: y=78
   Call PPP(x, y)
   Print x; y
End Sub
Public Sub PPP(ByVal n As Integer, ByVal m As Integer)
   n=n \ 10
   m=m \ 10
End Sub
A) 08       
B) 5078
C) 450       
D) 7850
解析:在调用过程时,一般主调与被调过程之间有数据传递,即将主调过程的实参传递给被调用的过程,完成实参与形参的结合,然后执行被调过程,在Visual Basic中,实参与形参的结合有两种方式,即传址与传值。这两种方法的特点如下:
传址的结合过程时,当调用一个过程时,它将实参的地址传给形参,因此在被调用的过程中,对形参的任何操作都变成了对相应实参的操作,因此实参的值会随形参的改变而改变。
传值的结合过程时,当调用一个过程时,系统将实参的值复制给形参并断开了联系,被调用过程中的操作是在形参自己的存储单元中进行的,当过程调用结束时,这些形参所占用的存储单元也同时被释放,因此在过程中对形参的任何操作不会影响实参。而题中被调过程PPP中有两个形参,两者均为传值方式。主调过程分别把实参x、y 传递给PPP,所以当过程调用结束后,实参x、y的值都没有改变,最后输出的值应为50  78。
(33) 单击按钮时,以下程序运行后的输出结果是
Private Sub proc1(x As Integer, y As Integer, z As Integer)
   x=3 * z
   y=2 * z
   z=x + y
End Sub
Private Sub Command1_Click()
   Dim x As Integer, y As Integer, z As Integer
   x=1: y=2: z=3
   Call proc1(x, x, z)
   Print x; x; z
   Call proc1(x, y, y)
   Print x; y; y
End Sub
   A) 6  6  12      
    6  10  10      
B) 9  5  10               
    5  10  10
    C) 9  6  12      
     9  10  15     
D) 9  10  10                
     5   4  10
解析:从整体上看,可得主调过程将两次调用过程Proc1后,实参的值将随形参变化而变化,现在分析一下这两次调用实参和形参是怎么变化的。
第一次调用被调过程proc1,主调过程把实参x,x,z的地址分别传给形参x,y,z,此时形参x,y,z值分别为1,1,3,执行语句x = 3 * z后,形参x值变为9,此时相对应的实参x也变为9,执行语句y = 2 * z后,形参y值变为6,则相对应的实参x值变为6。执行z = x + y后,形参z值应为12,当然这次调用后,程序代码输出的数值为6,6,12;
第二次调用被调过程proc1,主调过程把实参x,x,z的地址分别传给形参x,y,z。我们应注意一下,此时实参x的值为6而不是1,所以此时形参x,y,z值分别为6,2和2,执行语句x = 3 * z后,形参x值为6,相对实参x值也相应的变为6。执行语句y = 2 * z后,形参y值变为4,相应的实参y值也变为4,执行z = x + y后,形参z值变为10,相应的实参y的值变为10,而形参y和z的地址相同,最后它们值都应为10,所以此次调用后,程序代码将输出的数值为6,10和10。

 (34) 单击命令按钮时,下列程序的运行结果为
Private Sub Command1_Click()
   Print MyFund(20, 18)
End Sub
Public Function MyFund(m As Integer, n As Integer) As Integer
   Do While m <> n
      Do While m > n: m=m - n: Loop
      Do While m < n: n=n - m: Loop
   Loop
   MyFund=m
End Function
A) 0        
B) 2
C) 4        
D) 6
解析:此题程序代码中,被调过程采用了Do While…Loop的嵌套语句结构,主调过程只调用了一次被调过程,Print MyFund(20, 18) 语句表明,程序最后输出的只是被调过程的返回值。主调过程在调用被调过程MyFund时,把数值20,18分别传给形参m和n,从被调过程中的循环语句来看,因为此时m的值大于n的值,所以执行语句m = m - n,m值变为2,而由语句MyFund = m可看出,此过程的返回值就是m的值,即2。
(35) 在窗体上画一个命令按钮,然后编写如下程序
Private Sub Command4_Click()
   Dim a As Integer, b As Integer
   a=1
   b=2
   Print N(a, b)
End Sub
Function N(x As Integer, y As Integer) As Integer
   N=IIf(x > y, x, y)
End Function
程序运行后,单击命令按钮,输出结果为
A) 1        
B) 2
C) 5        
D) 8
解析:事件过程N的作用是输出两个数中最大的,它调用了IIF函数,条件部分是(x>y),如果满足,那么N的值即为x的值,否则为y的值。在Sub过程中,定义了两个变量a,b,并赋给它们初值1,2,并调用Print函数,输出N(a,b)的值,因为x<y,所以输出y=2。

最后更新时间:2008-05-28 12:15:56
文章评论
共有 0 位网友发表了评论
用户名: 新注册) 密码: 匿名评论 [查看所有评论]

评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
您可以用以下几种方式找到此文章

考试全流程