内容正文:
专题6 过程与自定义函数及递归函数(专项练习)
1. 对于如下两个VB函数:
Function gcd1(a As Integer,b As Integer) As Integer
If a Mod b=0 Then
gcd1=b
Else
gcd1=gcd1(b,a Mod b)
End If
End Function
Function gcd2(a As Integer,b As Integer)As Integer
Dim r As Integer
r=a Mod b
Do While r<>0 a=b
b=r
r=a Mod b
Loop
gcd2 = b
End Function
下列说法错误的是( )
A. 函数调用gcd1(6,15)和gcd2(24,9)的结果是相等的 B. 函数调用gcd2(18,gcd2(24,9))的结果是3
C. 函数调用gcd2(18,gcd2(24,9))采用了递归算法 D. 函数gcd1采用了递归算法
2. 某一过程算法的 VB 程序段如下:
Private Sub Command1_Click( )
Dim n As Integer
n = Val(Text1.Text)
Call prsj ( n ) '调用自定义过程
End Sub
Sub prsj (c As Integer)
'自定义过程,可以用 Call 语句来调用该过程
Dim i As Integer, j As Integer, k As String
List1.Clear
For i = 1 To c
k = ""
For j = 1 To i
k = k + "*"
Next j
List1.AddItem k
Next i
End Sub
在文本框 Text1 输入3,执行该程序段后,在列表框 List1 中显示的是( )
A. B. C. D.* * *
* *
*
* * *
* * *
* * *
*
* *
* * *
*
* * *
* * * * *
3. 我们在用计算机解决问题时,常采用递归法。
已知: f(3)=3; 当n>3时,f(n)=f(n-1)*n; 编程求f(5)的值。下列结果正确的是( )
A. 120 B. 60 C. 3 D. 23
4. 自定义函数 delStr(S,m)的功能是删除字符串 S 中第 m 位上的字符,代码如下:
Function delStr(S As String, m As Integer) As String
Dim n As Integer
n = Len(S)
If m < 1 Or m > n Then
delStr = "输入位置有误!"
ElseIf m = 1 Then
delStr = Mid(S, 2, n - 1)
ElseIf m < n Then
'(1)
ElseIf m = n Then
delStr = Mid(S, 1, n - 1)
End If
End Function
则(1)处填写代码正确的是( )
A. delStr = Mid(S, 1, m) + Mid(S, m+ 1, n) B. delStr = Mid(S, 1, m-1) + Mid(S, m , n)
C. delStr = Mid(S, 1, m) + Mid(S, m, n-m) D. delStr = Mid(S, 1, m-1) + Mid(S, m+1, n-m)
5. 有如下程序段:
Private Sub Command1_Click()
Dim i As Integer, s As String, c As String
s = Text1.Text: Text2.Text = ""
For i = 1 To Len(s)
c = Mid(s, i, 1) : Text2.Text = Text2.Text + convert(c)
Next i
End Sub
Function convert(c As String) As String
If c >= "a" And c <= "z" Then convert = Chr(Asc(c)-32) Else convert = Chr(Asc(c)+32)
End Function
文本框 Text1中输入hOMEpAGE,执行该程序段,文本框Text2中显示的是( )
A. Ho