大学vb上机及课后习
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
答案
八年级地理上册填图题岩土工程勘察试题省略号的作用及举例应急救援安全知识车间5s试题及答案
Ch7 过程
第七章 过程
1.在过程中声明的局部变量和在过程中声明的静态变量有什么不同,
答:局部变量离开过程后,该变量的值就消失,而静态变量离开过程后,该变量的值不消失,下次调用时该变量保留上一次的值。
2.在VB程序中调用程序向过程传递数据有哪几种方式,它们之间有什么不同, 答:在VB程序中调用程序向过程传递数据有两种:按值传递与按地址传递。按值传递是指调用时将实参的值复制给形参,形参的值改变与实参没有任何关系;按地址传递是指调用时实参与形参共用同一个存储单元,形参的值发生变化实参的值也发生变化,实参的值发生变化,形参的值也发生变化。
4.阅读程序,给出输出结果:
(1)Option Explicit
Option Base 1
Private Sub Cmd1_Click()
Dim St As String, Char As String
Dim Data()As String, I As Integer, J As Integer
St=”10281018123811181038”
For I=1 To Len(St)
If Mid(St,I,1)<>”8” Then
Char=Char & Mid(St,I,1)
Else
J=J+1
ReDim Preserve Data(J)
Data(J)=Char
Char=””
End If
Next I
Call Conver(Data,Char)
Print Char
End Sub
Private Sub Conver(a() As String, Ch As String)
Dim I As Integer, J As Integer, N As Integer, Dec As Integer
For I=1 To UBound(a)
N=Len(a(I))
For J=1 To N
Dec=Dec+Val(Mid(a(I),J,1))*8^(N-J)
Next J
Ch=Ch & Chr(Dec)
Dec=0
Next I
End Sub
输出结果为:BASIC
(2) Private Sub Cmd1_Click()
Dim N As Integer, I As Integer
N=2
For I=9 To 1 Step -1
Call Sub2(I,N)
Print I,N
Next I
End Sub
Private Sub Sub2(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-1
Next I
Y=Y+N
End Sub
输出结果为:6 26
2 62
-2 98 (3)Option Explicit
Private Sub Cmd_Click()
Dim A As Integer
A=2
Call Sub1(A)
End Sub
Private Sub Sub1(X As Integer)
X=X*2+1
If X<10 Then
Call Sub1(X)
End If
X=X*2+1
Print X
End Sub
输出结果为:23
47
(4)Option Explicit
Dim x As Integer, y As Integer
Private Sub Form_Click()
Dim a As Integer, b As Integer
a=5 : b=3
Call sub1(a,b)
Print a,b
Print x,y
End Sub
Private Sub sub1(ByVal m As Integer, n As Integer)
Dim y As Integer
x=m+n : y=m-n
m=fun1(x,y)
n=fun1(y,x)
End Sub
Private Function fun1(a As Integer, b As Integer) As Integer
x=a+b : y=a-b
Print x,y
fun1=x+y
End Function
输出结果为:10 8
12 -10
5 2
12 -10
10.利用随机函数Rnd()生成25个正整数,分别赋给一个5*5数组的每个元素,然后找出最大元素的位置,并按A(n1,n2)=M形式打印出来。
Option Explicit
Option Base 1
Dim A(5, 5) As Integer
Private Sub Command1_Click()
Dim I As Integer, J As Integer
For I = 1 To 5
For J = 1 To 5
A(I, J) = Int(Rnd * 90) + 10
Picture1.Print A(I, J);
Next J
Picture1.Print
Next I
Text1.Text = ""
End Sub
Private Sub Command2_Click()
Dim I As Integer, J As Integer, n1 As Integer, n2 As Integer, Max As Integer
Text1.Text = ""
n1 = 1: n2 = 1
Max = A(n1, n2)
For I = 1 To 5
For J = 1 To 5
If Max < A(I, J) Then
Max = A(I, J): n1 = I: n2 = J
End If
Next J
Next I
Text1.Text = "A(" & n1 & "," & n2 & ")=" & A(n1, n2)
End Sub
Private Sub Command3_Click()
Text1.Text = "": Picture1.Cls End Sub
Private Sub Command4_Click()
Unload Me
End Sub
11.编写一个求裴波拉契数列的递归过程,并将其前六项显示在文本框中。 Option Explicit
Private Sub Command1_Click()
Dim N As Integer, I As Integer, A() As Integer
Text2.Text = ""
N = Val(Text1.Text)
ReDim A(N)
For I = 1 To N
A(I) = Fab(I)
Text2.Text = Text2.Text + Str(A(I))
Next I
End Sub
Private Function Fab(M As Integer) As Integer
If M = 1 Or M = 2 Then
Fab = 1
Else
Fab = Fab(M - 2) + Fab(M - 1)
End If
End Function
Private Sub Command2_Click()
Unload Me
End Sub