实训十    子 过 程
This presentation is the property of its rightful owner.
Sponsored Links
1 / 15

实训十 子 过 程 PowerPoint PPT Presentation


  • 83 Views
  • Uploaded on
  • Presentation posted in: General

实训十 子 过 程. 一、实训目的 1 、掌握通用过程的定义和调用方法。 2 、了解形参和实参的对应关系及参数传递的方式。 二、实训内容 1 、通用过程 【 实训要求 】 随机产生两个数组并按由小到大的顺序排序, 然后将它们合并到第三个数组中(合并后的数组 仍然有序)。要求: sx10_1.vbp. 下一页. ( 1 )编写一个 CreatArr 子过程,产生有 n 个元素的. 数组,其元素是随机产生的 1 到 100 之间的数; ( 2 )编写一个 Sort 子程序,对数组按递增次序排列;

Download Presentation

实训十 子 过 程

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


5689327

实训十 子 过 程

一、实训目的

1、掌握通用过程的定义和调用方法。

2、了解形参和实参的对应关系及参数传递的方式。

二、实训内容

1、通用过程

【实训要求】

随机产生两个数组并按由小到大的顺序排序,

然后将它们合并到第三个数组中(合并后的数组

仍然有序)。要求: sx10_1.vbp

下一页


1 creatarr n

(1)编写一个CreatArr子过程,产生有n个元素的

数组,其元素是随机产生的1 到100之间的数;

(2)编写一个Sort子程序,对数组按递增次序排列;

(3)编写一个Merge子程序,将两个数组进行合并;

(4)编写一个PrintArr子程序,将数组显示在窗体上。

(5)编写一个按钮的Click 事件过程,分别调用上述过程。

其运行效果见图:

上一页

下一页


5689327

【实训步骤】

  • 第1步:启动VB,打开一个新的标准工程。

  • 第2步:在窗体上添加一个命令按钮Command1。

  • 第3步:编写代码:

    (1)编写如下四个过程:

    Option Base 1 ‘ 数组的下标从1开始

    Public Sub creatarr(a%(), n%) ‘产生数组的过程

    Dim i%

    For i = 1 To n

    a(i) = Int(Rnd * 100 + 1)

    Next

    End Sub

上一页

下一页


5689327

Public Sub Sort(a%(), n%) ‘ 排序过程(选择法递增排序)

Dim i%, j%, t%

For i = 1 To

imin = i

For j = i + 1 To n

If a(j) < a(imin) Then imin = j

Next

t = a(i)

a(imin) = t

Next

End Sub

上一页

下一页


5689327

Public Sub PrintArr( a%( ) ) ‘ 输出数组过程

Dim i%

For i = LBound(a) To

If Then ‘ 每行输出10个数

Print a(i)

Else

Print a(i);

End If

Next

Print

End Sub

上一页

下一页


5689327

Public Sub Merge(a%(), b%(), c%() ) ‘ 合并数组过程

Dim ia%, ib%, ic%, ina%, inb%, inc%

ina = UBound(a) ‘ 数组a 的元素个数

inb = UBound(b) ‘ 数组b 的元素个数

inc = ina + inb ‘ 合并后的数组的元素个数

ia = 1: ib = 1: ic = 1

Do While ia <= ina And ib <= inb '当两个数组没有都读完

If a(ia) < b(ib) Then

c(ic) = a(ia): ia = ia + 1

Else

End If

Loop

上一页

下一页


5689327

Do While ia <= ina ‘ 如果数组 a 没有读完

ic = ic + 1

Loop

Do While ib <= inb ‘ 如果数组 b 没有读完

ic = ic + 1

Loop

End Sub

上一页

下一页


5689327

Print "打印bb数组"

Merge aa(), bb(), cc()

Print

Print "打印cc数组"

End Sub

Private Sub Command1_Click( )

Cls

Dim aa%(10), bb%(8), cc%(18)

Call creatarr(aa(), 10)

Sort aa(), 10

Print

Print "打印aa数组"

Call creatarr(bb(), 8)

Print

运行程序,单击按钮即可显示如上图所示的结果

上一页

下一页


5689327

2、做一做 sx10_2.vbp

【实训要求】编写一子过程 MoveStr( )

Public Sub MoveStr(a$(),m%,Tag As Boolean)

其功能是把字符数组移动m个位置,当Tag 为 True时左移,将前m个字符移到字符数组尾,例如:“abcdefghij”左移3个位置后,结果为“defghijabc”;当Tag 为 False时右移,将后m个字符移到字符数组前,例如:“abcdefghij”

右移3个位置后,结果为

“hijabcdefg”。

  • 试编写一主调程序调用之。

上一页

下一页


5689327

3、做一做

【实训要求】从数组a 中删除数组 b 中已有的数后形成新的数组 x。

要求:单击窗体自动产生数组a和数组 b(随机产生40 — 70之间的整数);

单击“删除”按钮,删除相同的元素,并将剩余元素打印出来。结果如图:sx10_3.vbp

上一页

下一页


5689327

4、做一做

【实训要求】编写一个子程序DeleStr(s1,s2),将字符串s1中出现的s2 子字符串删去,结果还是存放在s1中。

界面如图:sx10_4.vbp

上一页

下一页


5689327

5、做一做 sx10_5.vbp

【实验要求】统计输入的文章中的单词数,并将出现的定冠词The 全部去除,同时统计删除的定冠词个数。(假定单词间以一个空格分隔)

与数组有关的函数:

Array LBound UBound

Split函数:从一个字符串中,

以某个指定的符号为分隔符,

分离若干个子字符串,建立一个下标从0开始的一维数组。格式:Split(<字符串表达式>[,<分隔符>])

Filter函数:去处定冠词 Filter(a, “ The ”,False)

Join函数:合并字符数组 Join(字符数组)

上一页

下一页


5689327

6、用不同的参数传递方式调用过程

【实训要求】

通过调用过程,显示如图所示的结果:

【实训步骤】

  • 第1步:启动VB,打开一个

    新的标准工程。

  • 第2步:在窗体上添加二个

    命令按钮Command1 和Command1 。

  • 第3步:编写代码:

    (1)编写如下二个Sub 过程:

上一页

下一页


5689327

Sub tryout1(ByVal x as integer, ByVal y as integer)

x=x+100

y=y*6

print “x=“ ; x,”y=“ ; y

End Sub

Sub tryout2( x as integer, y as integer)

x=x+100

y=y*6

print “x=“ ; x,”y=“ ; y

End Sub

上一页

下一页


5689327

Private Sub Command2_Click()

Dim a%, b%

Print

Print "传址调用:"

a = 10: b = 20

Print "a="; a, "b="; b

End Sub

(2)编写命令按钮的事件如下:

Private Sub Command1_Click()

Dim a%, b%

Print

Print "传值调用:"

a = 10: b = 20

Print "a="; a, "b="; b

End Sub

本实验主要用来说明传值调用与传址调用的区别。传值调用只是把实参值的拷贝传递给形参,本身没有任何变化,调用前与调用后的值相同。而传址调用传送的是使参的地址,调用过程后实参的值也随之变化。

上一页


  • Login