實驗十四 過程(一) 【實驗?zāi)康摹?/p> 1、 理解自定義函數(shù)過程的定義和調(diào)用方法; 2、 掌握自定義子過程的定義和調(diào)用方法; 3、 掌握子過程與函數(shù)過程的使用差別; 4、 掌握形參和實參使用方法; 5、 掌握值傳遞和地址傳遞的使用方法。 【實驗內(nèi)容】 (任選3題) 1、 編寫一子過程ProcMin,求一維數(shù)組a中的最小值,子過程的形參自己確定。主調(diào)程序隨機產(chǎn)生10個100到200之間的整數(shù),調(diào)用ProcMin子過程,顯示最小值。
14.1 用子過程求數(shù)組的最小值 Option Base 1 Private Sub Command1_Click() Dim i%, n% Dim a(10) As Integer Randomize For i = 1 To 10 a(i) = Int(Rnd * 101 + 400) Print "a(" & i & ")=" & a(i) Next i ProcMin a() End Sub Sub ProcMin(b() As Integer) Dim i%, min% min = b(LBound(b)) For i = LBound(b) + 1 To UBound(b) If b(i) < min Then min = b(i) Next i Print "數(shù)組中最小值為:" & min End Sub 2、 編寫一函數(shù)過程Max( a( ) ),求一維數(shù)組a中的最大值。主調(diào)程序隨機產(chǎn)生10個400到500之間的整數(shù),調(diào)用Max函數(shù),顯示最大值。
Option Base 1 Private Sub Command1_Click() Dim i%, n%, da! Dim a(10) As Single Randomize For i = 1 To 10 a(i) = Int(Rnd * 101 + 100) Print "a(" & i & ")=" & a(i) Next i da = max(a()) Print "數(shù)組中最大值為:"; da End Sub
Function max(b() As Single) As Single Dim i% max = b(LBound(b)) For i = LBound(b) + 1 To UBound(b) If b(i) > max Then max = b(i) Next i End Function 3、 編寫一子過程Delestr(s1,s2),將字符串s1中出現(xiàn)s2子字符串刪去,結(jié)果仍舊存放于s1中。 【提示】 (1)在S1字符串中找S2的子字符串,可利用Instr( )函數(shù),要考慮到S1中可能存在多少或不存在S2字符串,用Do while Instr(s1,s2)>0循環(huán)結(jié)構(gòu)來實現(xiàn)。 (2)若在S1中找到S2字符串,首先確定S1 字符串,首先要確定S1字符串的長度,因S1字符串在進行多次刪除時,長度在變化。然后通過Left()、Mid()函數(shù)或Right()函數(shù)的調(diào)用達到刪除S1中存在的S2字符串。
Option Explicit Sub DeleStr(s1$, ByVal s2$) Dim i%, L2% i = InStr(s1, s2) L2 = Len(s2) Do While i > 0 s1 = Left(s1, i - 1) + Mid(s1, i + L2) i = InStr(s1, s2) Loop End Sub
Private Sub Command1_Click() Dim s1$, s2$ s1 = Text1 s2 = Text2 DeleStr s1, s2 Text3 = s1 End Sub 4、 編寫一函數(shù)過程Maxlength(s),在已知的字符串S中,找出最長的單詞。假定字符串s 中只函數(shù)字母和空格,空格是用于分隔不同的單詞。 【提示】 (1)首先求出輸入的字符串長度,然后從字符串中分離出單詞,即對每個字符判斷:若不為空格,將每個字符連接到當(dāng)前單詞的字符串變量,當(dāng)前單詞長度計數(shù)器加1;若為空格,表示一個單詞的結(jié)束,將當(dāng)前單詞長度與最長單詞長度比較,若長,當(dāng)前單詞替代最長單詞。當(dāng)前單詞置空,當(dāng)前單詞長度計數(shù)器清除為0. (2)注意當(dāng)前單詞、當(dāng)前單詞長度、最長單詞、最長單詞長度。
Private Sub Command1_Click() Dim s$ s = Text1.Text Text2.Text = MaxLength(s) End Sub
Function MaxLength(s$) As String Dim w$, maxW$, L%, maxL$, c$, i% w = "": maxW = "": L = 0: maxL = 0 If Right(s, 1) <> " " Then s = s + " " For i = 1 To Len(s) c = Mid(s, i, 1) If c = " " Then If L > maxL Then maxW = w maxL = L End If w = "": L = 0 Else w = w + c L = L + 1 End If Next MaxLength = maxW End Function
5、 編寫一函數(shù)過程IsH(n),對于已知正整數(shù)n,判斷改數(shù)是否為回文數(shù),函數(shù)的返回值類型為布爾型。主調(diào)程序每輸入一個數(shù),調(diào)用IsH函數(shù)過程,然后在圖形框顯示輸入的數(shù),對于回文數(shù)顯示一個“★”,如左下圖所示。
Private Sub Text1_KeyPress(KeyAscii As Integer) Dim s$ If KeyAscii = 13 Then s = Text1.Text If IsH(s) = True Then Picture1.Print s & " ★" Else Picture1.Print s End If End If End Sub
Function IsH(x$) As Boolean Dim i%, L% IsH = True L = Len(x) For i = 1 To Int(L / 2) If Mid(x, i, 1) <> Mid(x, L - i + 1, 1) Then IsH = False Exit For End If Next End Function 6、 編寫一函數(shù)過程IsZ(n),對于已知正整數(shù)n,判斷改數(shù)是否為質(zhì)數(shù)(也稱素數(shù),指除了1和自己外不能被其他數(shù)整除的數(shù),如2, 3, 5, 7, 11, 13...),函數(shù)的返回值類型為布爾型。主調(diào)程序每輸入一個數(shù),調(diào)用IsZ函數(shù)過程,然后在圖形框顯示輸入的數(shù),對于質(zhì)數(shù)顯示一個“★”,如右上圖所示。
Private Sub Text1_KeyPress(KeyAscii As Integer) Dim s% If KeyAscii = 13 Then s = Val(Text1.Text) If IsZ(s) = True Then Picture1.Print s & " ★" Else Picture1.Print Trim(s) End If Text1.SelStart = 0 Text1.SelLength = Len(Text1) End If End Sub
Function IsZ(x%) As Boolean Dim i% IsZ = True For i = 2 To Sqr(x) If x Mod i = 0 Then IsZ = False Exit For End If Next End Function
7、 在文本框Text1中輸入多個英文語句,單擊“轉(zhuǎn)換”按鈕,將文本框Text1中的內(nèi)容做如下轉(zhuǎn)換:遇到句號時,將Text1中的每句的開頭字母大寫,每段的開頭字母也大寫,在文本框Text2中重新顯示。 8 、 編寫一個將N進制轉(zhuǎn)換成十進制的調(diào)用程序。 |
|