(27)编写如下程序:
Private Sub Form_Click()
a$="54321":b$="abcde"
For j=l To 5
Print Mid$(a$,6-j,1)+Mid$(b$,j,1);
Next j
Print
End Sub
程序运行后,单击窗体,其输出结果为________。
A)alb2c3d45e B)a5b4c3d2el C)eld2c3b4a5 D)la2b3c4d5e
答案:D
评析:For循环共执行了5次,每次用Mid$函数取出a$和b$的子串输出,a$是倒序,每次取一个字符,b$是顺序,每次取一个字符,连接在一起输出,输出表达式用分号结束,表示下一次接着输出,故输出结果为la2b3c4d5e。
(28)在窗体上画一个名称为Labe11的标签,然后编写如下事件过程:
Option Base l
Private Sub Form_Click()
Dim a(20)As Integer
For k=l To 20
a(k)=k^2
Next k
Label1.Caption=a(k)
End Sub
程序运行后,单击窗体,在标签中显示的内容是__________。
A)400 B)20 C)441 D)出错信息
答案:D
评析:一维数组a的下标在1-20之间。而循环结束后k值为21,故产生下标越界的错误。
(29)在窗体上画一个名称为Text1的文本框,一个名称为Command1的命令按钮,然后编
写如下事件过程和通用过程:
Private Sub Command1_Click()
n=Val(Text1.Text)
If n\2=n/2 Then
f=f1(n)
Else
f=f2(n)
End If
Print£n
End Sub
Public Function fl(ByRef x)
X=x*x
n=x+x
End FunctiOn
Public Function f2(ByVa1 x)
X=X*X
f2=x+x+x
End FunctiOn
程序运行后,单击命令按钮,在窗体上显示的是_______。
A)72 36 B)108 36 C)72 6 D)108 6
答案:A
评析:在本题中,文本框中输入的是6,也就是n=6,n\2=n/2条件成立,所以执行f=fl(n)语句,调用f1过程,得到x=x*x=6*6=36,fl=36+36=72。由于函数f1中,参数是按地址传递的,故参数的值会返回,所以n的值为36。
(30)在窗体上画一个名称为command1的命令按钮,然后编写如下程序:
Option Base l
Private Sub Command1_Click()
Dim a(3,3)
For i=1To 3
For j=1 To 3
If i=j Then a(i,j)=l
If i<j Then a(i,j)=2
If i>j Then a(i,j)=3
Next j
Next i
For i=1 To 3
For j=1 To 3
Print a(i,j);
Next j
Print
Next i
End Sub
程序运行后,如果单击命令按钮,则在窗体上输出的内容为_________。
A)l 3 3 B)1 2 2 C)2 3 3 D)2 l l
2 1 3 3 1 2 l 2 3 3 2 l
2 2 l 3 3 l 1 l 2 3 3 2
答案:B
评析:本题程序在过程中定义了一个二维数组,该数组可容纳9个元素,在循环中给数组元素赋值,在每次循环中有If i=j Then a(i,j)=1,表示主对角线置1;If i<j Then a(i,j)=2,表示主对角线以上元素置2;If i>j Then a(i,j)=3,表示主对角线一下元素置3。