《计算机VB简单编程题目实训十.ppt》由会员分享,可在线阅读,更多相关《计算机VB简单编程题目实训十.ppt(15页珍藏版)》请在人人文库网上搜索。
1、实训十 子 过 程,一、实训目的 1、掌握通用过程的定义和调用方法。 2、了解形参和实参的对应关系及参数传递的方式。 二、实训内容 1、通用过程 【实训要求】 随机产生两个数组并按由小到大的顺序排序, 然后将它们合并到第三个数组中(合并后的数组 仍然有序)。要求: sx10_1.vbp,下一页,(1)编写一个CreatArr子过程,产生有n个元素的,数组,其元素是随机产生的1 到100之间的数; (2)编写一个Sort子程序,对数组按递增次序排列; (3)编写一个Merge子程序,将两个数组进行合并; (4)编写一个PrintArr子程序,将数组显示在窗体上。 (5)编写一个按钮的Click 。
2、事件过程,分别调用上述过程。 其运行效果见图:,上一页,下一页,【实训步骤】,第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,上一页,下一页,Public Sub Sort(a%(), n%) 排序过程(选择法递增排序) Dim i%, j%, t% For i。
3、 = 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,上一页,下一页,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,上一页,下一页,Public Sub Merge(a%(), b%(), c%() ) 合并数组过程 D。
4、im 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,上一页,下一页,Do While ia = ina 如果数组 a 没有读完 ic = ic + 1 Loop D。
5、o While ib = inb 如果数组 b 没有读完 ic = ic + 1 Loop 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 运行程序,单击按钮即可显示如上图所示的结果,Print 打印bb数组 Merge aa(), bb(), cc() Print Print 打印cc数组 End Sub,上一页,。
6、下一页,【实训要求】编写一子过程 MoveStr( ) Public Sub MoveStr(a$(),m%,Tag As Boolean) 其功能是把字符数组移动m个位置,当Tag 为 True时左移,将前m个字符移到字符数组尾,例如:“abcdefghij”左移3个位置后,结果为“defghijabc”;当Tag 为 False时右移,将后m个字符移到字符数组前,例如:“abcdefghij” 右移3个位置后,结果为 “hijabcdefg”。 试编写一主调程序调用之。,2、做一做 sx10_2.vbp,上一页,下一页,【实训要求】从数组a 中删除数组 b 中已有的数后形成新的数组 x。 。
7、要求:单击窗体自动产生数组a和数组 b(随机产生40 70之间的整数); 单击“删除”按钮,删除相同的元素,并将剩余元素打印出来。结果如图: sx10_3.vbp,3、做一做,上一页,下一页,【实训要求】编写一个子程序DeleStr(s1,s2),将字符串s1中出现的s2 子字符串删去,结果还是存放在s1中。 界面如图: sx10_4.vbp,4、做一做,上一页,下一页,【实验要求】统计输入的文章中的单词数,并将出现的定冠词The 全部去除,同时统计删除的定冠词个数。(假定单词间以一个空格分隔) 与数组有关的函数: Array LBound UBound Split函数:从一个字符串中, 以某。
8、个指定的符号为分隔符, 分离若干个子字符串,建立一个下标从0开始的一维数组。格式:Split(,) Filter函数:去处定冠词 Filter(a, “ The ”,False) Join函数:合并字符数组 Join(字符数组),5、做一做 sx10_5.vbp,上一页,下一页,【实训要求】 通过调用过程,显示如图所示的结果: 【实训步骤】 第1步:启动VB,打开一个 新的标准工程。 第2步:在窗体上添加二个 命令按钮Command1 和Command1 。 第3步:编写代码: (1)编写如下二个Sub 过程:,6、用不同的参数传递方式调用过程,上一页,下一页,Sub tryout1(ByVa。
9、l 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,上一页,下一页,(2)编写命令按钮的事件如下: Private Sub Command1_Click() Dim a%, b% Print Print 传值调用: a = 10: b = 20 Print a=; a, b=; b End Sub,Private Sub Command2_Click() Dim a%, b% Print Print 传址调用: a = 10: b = 20 Print a=; a, b=; b End Sub,本实验主要用来说明传值调用与传址调用的区别。传值调用只是把实参值的拷贝传递给形参,本身没有任何变化,调用前与调用后的值相同。而传址调用传送的是使参的地址,调用过程后实参的值也随之变化。,上一页。