分享

VB实验(第14周)

 W_hy 2012-05-08

实验十四 过程(一)

【实验目的】

1、    理解自定义函数过程的定义和调用方法;

2、   掌握自定义子过程的定义和调用方法;

3、   掌握子过程与函数过程的使用差别;

4、   掌握形参和实参使用方法;

5、   掌握值传递和地址传递的使用方法。

【实验内容】   (任选3题)

1、      编写一子过程ProcMin,求一维数组a中的最小值,子过程的形参自己确定。主调程序随机产生10个100到200之间的整数,调用ProcMin子过程,显示最小值。

 

14.1   用子过程求数组的最小值

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 "数组中最小值为:" & min

End Sub

 2、      编写一函数过程Max( a( ) ),求一维数组a中的最大值。主调程序随机产生10个400到500之间的整数,调用Max函数,显示最大值。

  

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 "数组中最大值为:"; 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中出现s2子字符串删去,结果仍旧存放于s1中。

【提示】

     (1)在S1字符串中找S2的子字符串,可利用Instr( )函数,要考虑到S1中可能存在多少或不存在S2字符串,用Do while Instr(s1,s2)>0循环结构来实现。

     (2)若在S1中找到S2字符串,首先确定S1 字符串,首先要确定S1字符串的长度,因S1字符串在进行多次删除时,长度在变化。然后通过Left()、Mid()函数或Right()函数的调用达到删除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、      编写一函数过程Maxlength(s),在已知的字符串S中,找出最长的单词。假定字符串s 中只函数字母和空格,空格是用于分隔不同的单词。

【提示】

(1)首先求出输入的字符串长度,然后从字符串中分离出单词,即对每个字符判断:若不为空格,将每个字符连接到当前单词的字符串变量,当前单词长度计数器加1;若为空格,表示一个单词的结束,将当前单词长度与最长单词长度比较,若长,当前单词替代最长单词。当前单词置空,当前单词长度计数器清除为0.

(2)注意当前单词、当前单词长度、最长单词、最长单词长度。

 

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、      编写一函数过程IsH(n),对于已知正整数n,判断改数是否为回文数,函数的返回值类型为布尔型。主调程序每输入一个数,调用IsH函数过程,然后在图形框显示输入的数,对于回文数显示一个“★”,如左下图所示。

 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、      编写一函数过程IsZ(n),对于已知正整数n,判断改数是否为质数(也称素数,指除了1和自己外不能被其他数整除的数,如2, 3, 5, 7, 11, 13...),函数的返回值类型为布尔型。主调程序每输入一个数,调用IsZ函数过程,然后在图形框显示输入的数,对于质数显示一个“★”,如右上图所示。

 

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中输入多个英文语句,单击“转换”按钮,将文本框Text1中的内容做如下转换:遇到句号时,将Text1中的每句的开头字母大写,每段的开头字母也大写,在文本框Text2中重新显示。

8 、     编写一个将N进制转换成十进制的调用程序。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多