1 / 15

实训十 子 过 程

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

sulwyn
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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. (1)编写一个CreatArr子过程,产生有n个元素的(1)编写一个CreatArr子过程,产生有n个元素的 数组,其元素是随机产生的1 到100之间的数; (2)编写一个Sort子程序,对数组按递增次序排列; (3)编写一个Merge子程序,将两个数组进行合并; (4)编写一个PrintArr子程序,将数组显示在窗体上。 (5)编写一个按钮的Click 事件过程,分别调用上述过程。 其运行效果见图: 上一页 下一页

  3. 【实训步骤】 • 第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 上一页 下一页

  4. 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 上一页 下一页

  5. 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 上一页 下一页

  6. 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 上一页 下一页

  7. Do While ia <= ina ‘ 如果数组 a 没有读完 ic = ic + 1 Loop Do While ib <= inb ‘ 如果数组 b 没有读完 ic = ic + 1 Loop End Sub 上一页 下一页

  8. 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 运行程序,单击按钮即可显示如上图所示的结果 上一页 下一页

  9. 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”。 • 试编写一主调程序调用之。 上一页 下一页

  10. 3、做一做 【实训要求】从数组a 中删除数组 b 中已有的数后形成新的数组 x。 要求:单击窗体自动产生数组a和数组 b(随机产生40 — 70之间的整数); 单击“删除”按钮,删除相同的元素,并将剩余元素打印出来。结果如图:sx10_3.vbp 上一页 下一页

  11. 4、做一做 【实训要求】编写一个子程序DeleStr(s1,s2),将字符串s1中出现的s2 子字符串删去,结果还是存放在s1中。 界面如图:sx10_4.vbp 上一页 下一页

  12. 5、做一做 sx10_5.vbp 【实验要求】统计输入的文章中的单词数,并将出现的定冠词The 全部去除,同时统计删除的定冠词个数。(假定单词间以一个空格分隔) 与数组有关的函数: Array LBound UBound Split函数:从一个字符串中, 以某个指定的符号为分隔符, 分离若干个子字符串,建立一个下标从0开始的一维数组。格式:Split(<字符串表达式>[,<分隔符>]) Filter函数:去处定冠词 Filter(a, “ The ”,False) Join函数:合并字符数组 Join(字符数组) 上一页 下一页

  13. 6、用不同的参数传递方式调用过程 【实训要求】 通过调用过程,显示如图所示的结果: 【实训步骤】 • 第1步:启动VB,打开一个 新的标准工程。 • 第2步:在窗体上添加二个 命令按钮Command1 和Command1 。 • 第3步:编写代码: (1)编写如下二个Sub 过程: 上一页 下一页

  14. 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 上一页 下一页

  15. 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 本实验主要用来说明传值调用与传址调用的区别。传值调用只是把实参值的拷贝传递给形参,本身没有任何变化,调用前与调用后的值相同。而传址调用传送的是使参的地址,调用过程后实参的值也随之变化。 上一页

More Related