第6章测试题
Next
End Sub
10.子过程F(n,m,t)对一个四位数n整数判断:已知该整数n,逆向排列获得另一个4位数m是它自身的倍数(2倍以上),则t为true表示满足上述条件。主调程序调用该函数,显示1000~9999中所有满足该条件的数,如图3所示。
Private Sub Command1_Click()
【提示】
此题关键在于编一个插入排序过程,插入排序法的思路是:
对数组已有n个有序数,当输入某数x时:
(1)找x应在数组中的位置j
(2)将n-j个数依次往后移,使位置为j的数让出。
(3)将数x放入数组中应有的位置j,一个数插入完成。
对于若干个数输入,只要调用插入排序过程即可。
Dim n As Integer
End Sub
Public Sub p2(x%, ByVal y%)
Dim c%
x = 2 * x: y = y + 2: c = x + y
End Sub
Private Sub Command1_Click()
a = 2: b = 4: c = 6
Call p1(a, b)
Print "a="; a; "b="; b; "c="; c
子过程如下:
Public Sub MoveStr(a(), m%, Tag As Boolean)
Dim i%, j%, t$
If(15)Then '左移
For i = 1 To m
(16)
For j = 0 To(17)
a(j) = a(j + 1)
Next j
(18)
Next i
Else
For i = 1 To m
3.要想从子过程调用后返回两个结果,下面子过程语句说明合法的是()。
A.Sub f2(ByVal n%, ByVal m%)B.Sub f1(n%, ByVal m%)
C.Sub f1(n%, m%)D.Sub f1(ByVal n%, m%)
4.在过程中定义的变量,若希望在离开该过程后,还能保存过程中局部变量的值,则应使用()关键字在过程中定义局部变量。
Do While j > 0
sn(i) = Val((32))
str1 = Mid(str1, j + 1)
i = i + 1
j =(33)
Loop
sn(i) = Val(str1)
n =(34)
End Sub
12.以下过程将一个有序数组中重复出现的数进行压缩,删除后只剩一个。主调程序运行后结果如图5所示。
5.窗体中的模块级变量应在(6)段声明,它作用于该窗体(7)。
6.如下程序,运行的结果是(8),函数过程的功能是(9)。
Public Function f(m%, n%)
Do While m <> n
Do While m > n: m = m - n: Loop
Do While n > m: n = n - m: Loop
For i = 1 To 2: Call Proc(x): Next i
For i = 0 To 4: Print x(i);: Next i
End Sub
A.3 4 7 5 6B.3 5 7 45 C.2 3 4 4 5 D.4 5 6 7 8
二、填空题
1.伟地址方式是当过程被调用时,形参与实参共享(1)。
prime =(10)
For i = 2 To Sqr(x)
If(11)Then
prime = False
Exit Function
End If
Next i
End Function
Private Sub Form_Click()
i = 1
For n =(12)
For k = 3 To n / 2
If prime(k)(13)Then
A.Call F1(n + m)B.Call F1(m)C.Call F1(5)D.Call F1(m+5)
2.下面子过程语句说明合法的是()。
A.Sub F1(ByVal n%())B.Sub F1(n%)As Integer
C.Function f1%(f1%)D.Function f1(ByVal n%)
Dim i%, j%
j = 1
Do While(41)'查找x应插入的位置
j = j + 1
Loop
For i = n - 1 To j Step -1 'n-j个元素往后移
(42)
Next i
a(j) = x 'x插入数组中的第j个位置
End Sub
Call p2(a, b)
Print "a="; a; "b="; b; "c="; c
End Subቤተ መጻሕፍቲ ባይዱ
A.a=2 b=4 c=6 B.a=4 b=6 c=10
a=4 b=6 c=10 a=8 b=8 c=16
C.a=4 b=6 c=6D.a=4 b=6 c=14
a=8 b=6 c=6 a=8 b=8 c=6
Print i; ":"; n; "="; k; "+"; n - k
Exit For
End If
Next k
i = i + 1
Next n
End Sub
8.子过程MoveStr( )是把字符数组移动m个位置,当Tag为true时左移,则前m个字符移到字符数组尾,例如,“abcdefghij”左移3个位置后,结果为“defghijabc”;当tag为False时右移,则后m个字符移到字符数组前,如“abcdefghij”右移3个位置后,结果为“hijabcdefg”。
Loop
f = m
End Function
Private Sub Command1_Click()
Print f(24, 18)
End Sub
7.将100-150之间的偶数,拆分成两个素数之和(只要一对即可),是后输出格式如图1所示。其中,prime函数判断参数x是否为质数。
Private Function prime(ByValxAs Integer) As Boolean
(19)
For j = UBound(a)(20)'右移
a(j) = a(j - 1)
Next j
(21)
Next i
End If
End Sub
9.子过程CountN用来统计字符串中各数字字符(“0”~“9”)出现的个数;主调程序对在Text1Box1框输入的文本,每次单击“统计”按钮,调用该子过程,在Label1框显示结果,如图2所示。
7.如下程序的运行结果是()。
Public Sub Proc(a%())
Static i%
Do
a(i) = a(i) + a(i + 1)
i = i + 1
LoopWhile i < 2
End Sub
Private Sub Command1_Click()
Dim m%, i%, x%(10)
For i = 0 To 4: x(i) = i + 1: Next i
Tag =(29)
End If
End Sub
11.下列程序中的子过程MySplit(s,sArray(),n)用于实现Split函数的功能(字符分离到数组),即将数字字符串s按分隔符“,”分离到sArray数组中,分离的个数为n。主调程序将文本框中输入的数字字符串按回车键后分离,结果在List1控件显示,如图4所示。
End If
Next i
End Sub
Private Sub Command1_Click()
Dim n(9) As Integer, i%
Call CountN(n(), Text1)
List1.Clear
For i = 0 To 9
If n(i) Then(25)"字符" & i & "出现的次数为" & n(i)
Private Sub Text1_KeyPress(KeyAscii As Integer)
Dim str1 As String, num(100) As Integer, n%, i%
If(30)Then
str1 = Trim(Text1)
Call MySplit((31))
List1.Text = ""
Picture2.Print Text1 '打印刚输入的数
For i = 1 To n '打印插入后的有序数
Picture1.Print bb(i);
Next i
Picture1.Print
Text1 = ""
End If
End Sub
Sub insert(a() As Single, ByVal x!)
第6章测试题
一、选择题
1.设有如下程序段:
Public Sub F1(n%)
...
n = 3 * n + 4
...
End Sub
Private Sub Command1_Click()
Dim n%, m%
n = 3
m = 4
..
调用F1语句
...
End Sub
则在Command1_Click()事件中有效的调用语句是()。