电竞比分网-中国电竞赛事及体育赛事平台

分享

VB實驗(第14周)

 W_hy 2012-05-08

實驗十四 過程(一)

【實驗?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ù)顯示一個“★”,如左下圖所示。

 VB實驗(第14周) - albee160 - albee160的博客

 

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)用程序。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多