• 2021-04-14
    假定有以下两个过程: Sub S1(ByVal x As Integer, ByVal y As Integer) Dim t As Integer t=K x=y y=t End Sub Sub S2(x As Integer, y As Integer) Dim t As Integer t=K x=y y=t End Sub 则以下说法中正确的是 ( ) A.用过程S1可以实现交换两个变量值的操作,S2不能实现 B.用过程S2可以实现交换两个变量值的操作,S1不能实现 C.用过程S1和S2都可以实现交换两个变量值的操作 D.用过程S1和S2都不能实现交换两个变量值的操作
  • 正确答案:B解析:本题主要是对调用方式的考查。在S1中实现的是传值调用,故不影响实际参数值。S2过程中实现的是传址调用,影响到实际参数。故用过程S2可以实现两个变量值的操作,而S1不能实现。选项B正确。

    举一反三

    内容

    • 0

      运行下面的程序,第二行显示结果是___________。 Private Sub Form_Click() Dim A As Integer Dim i As Integer A = 5 For i = 1 To 9 Call sub1(i, A) Print i, A Next i End Sub Private Sub sub1(x As Integer, y As Integer) Static N As Integer Dim I As Integer For I = 3 To 1 Step -1 N = N + x x = x + 2 Next I y = y + N End Sub

    • 1

      运行下列程序,单击窗体显示的结果为( )。 Private Sub Form_Click() Dim a Dim s As Integer, i As Integer a = Array(1, 2, 3) For i = 2 To 0 Step -1 s = s + a(i) * a(i) Next i Print s End Sub

    • 2

      有如下函数过程: Function secproc(x As Integer, y As Integer, z As Integer) secproc = 3 * y + z + 2 * x End Function Private Sub Command1_Click() Dim a As Integer, b As Integer, c As Integer a = 2: b = 3: c = 4 Print secproc(c, b, a) End Sub 该程序的运行结果是( )。

    • 3

      窗体上有标签(Label1、Label2)和命令按钮(Command1),编写如下事件过程: Private x As Integer: Private Sub Command1_Click(): Dim x As Integer, y As Integer: x = 5: y = 3: proc x, y: Label1.Caption = x: Label2.Caption = y: End Sub: Private Sub proc(ByVal a As Integer, b As Integer): x = a + b: b = b * b: End Sub:运行后,单击按钮,Label1和Label2将分别显示

    • 4

      设串s1=‘BCDEFG’,s2=‘PQRST’,函数con(x,y)返回x和y串的连接串,subs(s,I,j)返回串s的从序号i的字符开始的j个字符组成的子串,len(s)返回串s的长度,则con(sub(s1,2,len(s2)),sub(s1,len(s2),2))的结果是 A: ‘BCDEF’ B: ‘BCDEFG’ C: ‘BCPQRST’ D: ‘BCDEFEF’