2022年vb第章全部教案 .pdf

上传人:Che****ry 文档编号:34881366 上传时间:2022-08-19 格式:PDF 页数:22 大小:270.39KB
返回 下载 相关 举报
2022年vb第章全部教案 .pdf_第1页
第1页 / 共22页
2022年vb第章全部教案 .pdf_第2页
第2页 / 共22页
点击查看更多>>
资源描述

《2022年vb第章全部教案 .pdf》由会员分享,可在线阅读,更多相关《2022年vb第章全部教案 .pdf(22页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第八章数组一、引入课题例输入100 个学生的成绩,一起正序输出显示,换行后再一起反序输出。思路:为了将输入的100 个学生的成绩,先一起正序输出显示,换行后再一起反序输出显示。就必须将这100 个成绩一个一个保存起来,显示完一次后,才能再显示一次。不保存起来,就无法再显示。问题:如何将这100 个成绩一个一个保存起来?基本方法:可以设立一个一个的变量,将这些成绩按顺序赋值给这些变量,就等于保存起来了。只要保存起来,就可以随意正序、反序输出显示了。问题: 要设立几个变量才够呢?100 个成绩就需要100 个变量, 如何设立100 个变量呢?容易想到:用x1, x2, x3, , x100?但是如

2、何对x1, x2, x3, , x100输入、输出呢?输入 100 个变量,重复输入100 次,必须用循环!循环体如何写呢?是否可以写成:For i=1 To 100 xi=InputBox( 请输入成绩X ) Next i 不可以!xi 只能代表一个变量,它不会随着I 的变化,自动变成x1, x2, x3, , x100,即 xi 不可能代表100 个变量。即使输入100 个成绩,最后xi 只留下一个。那么应该怎么办呢?能不能将x 与 i 分离,而且实现x 不动,但 i 确实会随着For i 的变化而变化呢?可以!方法: VB 的分离方法是x ( i ) 象 x ( i ) 这样的变量称为“

3、数组”(即一组数)。当 i = 1 100 变化时, x ( i ) 也跟着一起变化为x(1)、x(2)、x(3)、 、x(100),产生 100 个变量。于是,输入100 个成绩可以这样解决:For i=1 To 100 X ( i ) = InputBox( 请输入成绩X ) Next i VB 中象 x ( i ) 这样的变量称为“数组”。前面学的Integer、Long、Single、 Double、String、Date、Boolean 等都是 VB 的基本数据类型,可以处理少量的单个数据,称为简单变量。但无法处理大批量的数据。为了处理大批量的数据,VB 提供了数组。1. 数组的作用

4、数组通常和循环一起使用可以大大减少编程的复杂性,有些算法不用数组就无法实现。例 1:输入 10 名学生的成绩,并将它们的成绩打印到窗体上。Private Sub Form_click() For i=1 To 10 x(i) = InputBox( 请输入成绩X ) Next i For i=1 To 10 print x(i) ; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 22 页 - - - - - - - - - Next i End Sub 2. 数组的概念

5、数组是一批数据或控件的集合。数组:由一定数目的同类元素按一定顺序排列而成的结构类型数据,是一组具有同一名字、不同下标的下标变量。一般格式:s(n)其中: s 称为数组名, n 是下标一个数组可以含有若干个下标变量(或称数组元素),下标用来指出某个数组元素在数组中的位置。如s(3)代表 s 数组中的下标为3 的元素。例如,定义一个integer 型数组 a(10),它包含 11 个同类型的变量:a(0),a(1), ,a(10) Variant 型数组则可以存放不同类型的数据3.数组元素和数组的维数数组的成员称为数组元素,其名称与数组名相同,其下标表示该元素在数组中的位置。因此,数组元素也称下标

6、变量。数组的维数表示数组元素需要几个下标才能正确表示其在数组中的位置,它代表数组的逻辑结构,最多60 维。一维数组的逻辑结构是线性的,只用一个下标表示各个元素在数组中的位置例a(10):含 11 个元素的一维数组a(0),a(1),a(2),a(3),a(4),a(5),a(6),a(7),a(8),a(9),a(10) 二维数组的逻辑结构是一个二维表,用两个下标表示各个元素在数组中的位置:第一个下标表示行,第二个下标表示列。例b(2,3):含三行四列共12 个元素的二维数组b(0,0) b(0,1) b(0,2) b(0,3) b(1,0) b(1,1) b(1,2) b(1,3) b(2,

7、0) b(2,1) b(2,2) b(2,3) 4.数组的存储结构数组在内存中占用一片连续的存储单元。一维数组的存储结构与逻辑结构相同,即各个元素按下标顺序依次存放;二维数组的存储结构是按行的顺序存储各个元素。例如,数组b(2,3)的存储形式为:b(0,0) b(0,1) b(0,2) b(0,3) b(1,0) b(1,1) b(1,2) b(1,3) b(2,0) b(2,1) b(2,2) b(2,3) 三维数组是由若干个二维数组组成的,其存储结构是按顺序存储各个二维数组。例如,数组 c(1,2,1)的存储形式为:c(0,0,0) c(0,1,0) c(0,2,0) c(1,0,0) c

8、(1,1,0) c(1,2,0) c(0,0,1) c(0,1,1) c(0,2,1) c(1,0, 1) c(1,1,1) c(1,2,1) 说明:(1) 数组是一些具有相同类型的数据的有序集合。所谓“有序”是指数组中的每个元素按照一定的顺序排列在一起。如: x(1)、x(2)、x(3)、 、x(100) 就是数组 x 的 100 个元素,按1 100 的编号顺序排列。(2) 同一数组中的每个元素有统一的名称(变量名)。同一数组中的元素一般都是同一类型的数据。VB 允许同一数组中的元素包含不同类型的数据。如: x(1)、x(2)、x(3)、 、x(100) 都是 Single 型,它们统一的

9、变量名是x,x 也叫数组名。(3) 数组用不同的序号来区别各个不同的元素。数组的序号称为“下标”。下标用来指出某个元素在数组中的排列位置。如: x(8) 中的 8 就是下标,x(8) 代表数组 x 中的第 8 个元素。x(8) 不能写成x8 或 x8 。(4) 下标的形式可以是常量、变量、计算式。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 22 页 - - - - - - - - - 如: x(99)、y(i) 、Sum (a+b)。(5) 数组可以拥有多个下标。具有

10、一个下标的数组叫一维数组,具有两个下标的数组叫二维数组。如: x ( I ) 是一维数组,s ( x , y ) 是二维数组。(6) 数组的操作一般与循环同时使用。如上例。(7) 数组必须先定义,后使用。如上例。一、引入要使用数组,应当先定义数组。定义数组的作用:通知计算机为数组留出所需的内存空间,准备存放数据。数组的定义方式;Dim :用在窗体模块或标准模块及过程中,定义窗体或标准模块级数组;ReDim :用来重新定义动态数组;Static :用来说明该数组为静态数组;Global(Public) :用在全局模块中(标准模块 )中,说明数组为全局的;在这里我们可以和前面第4 章的变量的作用域

11、进行比较学习。名称作用域声明位置使用语句局部变量过程过程中Dim 或 Static 模块变量窗体模块或标准模块模块的声明部分Dim 或 Pravite 全局变量整个应用程序标准模块的声明部分Public 或 Global 二、新课这里先介绍最常用的Dim 方法。有 2 种格式:1格式一一维数组Dim 数组名 (下标上界 ) As 类型 下标上界为常数、已有值的表达式或变量。下标下界为0。一维数组的大小为:下标上界+1。例:Dim mark(99) As Integer 声明了一维定长整型数组mark ,共有 100 个元素,下标范围为0 To 99 ;mark 数组的各元素是mark(0) ,

12、mark(1) , mark(99) ;mark(i) 表示由下标i 的值决定是哪一个元素。 mark 数组内存分配如下:每个数组元素有一个唯一的顺序号,下标不能超出数组声明时的上、下界范围,否则会产生“索引超出了数组界限”错误。数组元素的使用规则与同类型的简单变量相同二维数组声明Dim 数组名 (下标 1,下标 2) As 类型 下标数决定了数组的维数,每一维的大小 =上界 +1;数组的大小为每一维大小的乘积。例Dim x(2,4) As Long 声明了一个长整型的二维数组x;共占据 35 个长整型变量的空间例如:Dim Age(20) As Integer 定义一维数组Age ,最大下标

13、20 Dim Test(2, 3) As Double 定义二维数组Test, 2 个下标最大分别为2、3 注意:(1) 问题:数组定义后下标是从什么开始的?如Age(20) 的元素有几个:Age(?), mark(i) mark(1) mark(2) mark(99) mark(100) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 22 页 - - - - - - - - - Age(?), Age(?) 。问题:能不能使用元素Age(-1) 、Age(21) ?

14、Test(2, 3) 的元素有几个?是哪几个?(2)定义数组时As 后可以是任何的基本类型。(初值:数值 0;字符空串;布尔False )问题:能不能省略“As 类型” 。如:Dim Sum(50) 此时定义的数组Sum(50) 是什么类型?(3)演示程序Private Sub Form_click() Dim s(10) As Integer For i = 0 To 10 S(i)=2*i Print s(; i ;)= ; s(i) Next i End Sub 问题:程序中的Dim s(10) ,它有哪几个元素?下标能否改成从1 开始(以符合使用习惯)?要改怎么改?这个语句放在哪里?(

15、用 Option base 语句设置,且只能出现在窗体层或模块层,不能出现在过程中,并且必须放在数组定义之前。)改成从 1 开始后 Dim s(10) 的元素有哪几个?还有没有s(0) 这个元素?不改行不行?比如Dim s(10) ,不改下标从1 开始,仍然从0 开始,直接使用 s(1) s(10) ,会不会有问题?数组 S(10) 的下标能不能改成从2 开始?用第一种定义格式不行,第二种定义格式可以:2格式二一维数组一个数组若只有一个下标就能确定一个数组元素的数组中的位置,则称为一维数组;定义形式:Dim 数组名 (下标下界To 下标上界) As 类型名称如: Dim a(1 to10) a

16、s integer Dim s(2 To 10) 下标从 2 开始到 10 Dim x(-2 To 3) 此时有哪几个元素?Dim P(1990 To 2002) 此时有哪几个元素?二维数组由具有两个或多个下标变量所组成的数组称为二维或多维数组。定义形式:Dim 数组名 (第一维下标下界To 第一维下标上界,第二维下标下界To 第二维下标界) As 类型名称如:Dim a(1 to10 ,3 To 20 ) as String 第二种格式比较灵活。定义数组的讨论:(1)定义数组Dim x(10) 时,括号内一般是常数,能不能是变量?不行!即使变量是有数值的也不行。即: x(n) 、Sum(a

17、To b) 这样定义对不对?问题:数组定义后,使用时下标可否用变量?演示:上面的程序改为:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 22 页 - - - - - - - - - n=10 Dim s(n) As Integer 运行后提示s(n) “要求常数表达式” ,即使改为s(5+5) 都可以,就是不能用变量。注意:数组定义后,程序后面可以使用s(i)=2*I 。讨论:定义数组时Dim s(10) 非要用变量Dim s(n) 行不行?可以!但 Dim 必须改成

18、ReDim (重定义)或将数组定义成“动态数组”。演示:上面的程序改为:n=10 ReDim s(n) As Integer 运行后是正常的。(2)Dim x(10) 后省略 As Integer ,但又要把x(10)定义为整数,能不能用类型符号代替?类型符号应该放在Dim x(10) 的什么位置?A) Dim x(10)% B) Dim x(10%) C) Dim x%(10) D) Dim% x(10) 说明:格式中的数组名的命名与简单变量名相同,可以是任意合法的变量名 类型名称可以是任何VB 所定义的合法类型,包括基本类型和用户自定义类型;格式 中部分为可选部分,若省略,则下标下界默认为

19、0,或通过下面方式定义下标下界的默认值:Option Base n 其中: n 只能为 0 或 1;Option 只能出现在窗体层或模块层,且该定义必须在数组定义之前完成,若是多维数组则对每一维都有效。例如:Option Base 1 设置下标默认为1 Dim a(5) as integer a 数组的各元素下标取值为:15 Dim x(3,2) as single x 数组的第一维下标取值:13,第二维下标取值: 1 2 数组必须先定义后使用,未定义不能使用,下标为整型常量;当用 Dim 语句定义数组时,该语句把数组元素初始化为0 或空字符串;同一过程中,数组名不能与其他数组名或变量名相同;

20、数组声明中的下标不能是变量,只能是常量;确定数组的上下界值的函数:LBound 函数和 UBound 函数LBound 函数返回数组某维的下界(最小下标)。用法: LBound( 数组名, 维值 ) UBound 函数返回数组某维的上界(最大下标)。用法: UBound( 数组名, 维值 ) (1)对于一维数组,在使用这两个函数时,可以省略维值。例如:Dim r(10) As Integer Print LBound(r), Ubound(r) 运行的结果会输出0 和 10 两个数(2)对于多维数组,在使用这两个函数时,要指定维值从而说明是要获取哪一维的下界或上界。例如:Option Base

21、 1 Dim a(0 To 9,5) Private Sub Form_Click() Print UBound(a,2) 打印第二维的上界,5 Print LBound(a,1) 打印第一维的下界,0 Print LBound(a,2) 打印第二维的下界,1 End Sub (3)也可以通过使用这两个函数获得数组某一维的大小。例如:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 22 页 - - - - - - - - - Dim b(9,1 To 5) m = UBo

22、und(b,1) Lbound(b,1) + 1 获得第一维的大小:10 n = UBound(b,2) Lbound(b,2) + 1 获得第二维的大小:5 s = m * n 计算数组的大小:50 例:随机产生20 个 10100 之间的整数,求它们的积。Dim a(1 to 20) as Integer sum=1 For i=1 to 20 a(i)=int(RND*(100-10+1)+10) next i For i=1 to 20 sum=sum*a(i) next I print “sum= ”;sum一、引入若我们用 Dim x(10000) 定义数组以后, 即使程序不运行,

23、 计算机也要为数组x(10000) 保留 10000 个元素的内存空间。这会造成内存资源的极大浪费。讨论 :能不能实现程序不运行,数组x(10000) 就不占用内存?程序运行时才为数组开辟内存空间?可以!但需把数组定义成“动态数组”!什么是“动态数组”?一般数组又叫什么?这就是我们这一次所要学习的内容。二、新课1、静态数组与动态数组的区别在 VB 中,根据数组元素的个数能否变化,数组分为静态数组和动态数组。静态数组:数组元素的个数固定不变。动态数组:数组元素的个数在运行时可以改变。使用动态数组就可以在任何时候改变其大小,并且可以在不需要时清除动态数组所占的存储空间。因此,使用动态数组更加灵活、

24、方便,并有助于高效管理内存。动态数组:程序在运行时才为它开辟内存空间的数组就叫“动态数组”。静态数组:程序在编译时(未运行)就为它开辟内存空间的数组就叫“静态数组”。前面定义的都是“静态数组”。2、动态数组的定义(1)静态数组:在声明时就确定其大小的数组。静态数组是用数值常量或符号常量作为下标定维的。静态数组在计算机内存中运行:静态数组在编译阶段给数组分配内存空间,即静态数组没有运行时已有了相应的内存区间,故在定义静态数组时要求在编译阶段就知道该数组的元素个数。静态数组元素的值在定义该数组的运行后,该数组所拥有的内存空间不释放,变量的值仍在内存中,再次运行时,将上次运行的结果作为该变量的初始值

25、,只有当整个应用程序退出后,所占内存才会被释放。静态数组定义方法:在全局模块中使用Global语句定义;在窗体或模块级用Dim 定义;静态定义: 在过程中用Static语句定义;或用Static 定义过程,而在过程中使用Dim 语句定义数组。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 22 页 - - - - - - - - - 例1 静态数组与非静态数组的对比Static a(4) As Integer 定义静态数组a Static start As Integer

26、 定义静态变量Dim b(4) As Integer 定义非静态数组b Dim i As Integer If start = 0 Then Print 静态数组: , , 非静态数组: End If For i = 0 To 4 a(i) = a(i) + i 赋值给静态数组a b(i) = b(i) + i 赋值给非静态数组b Next For i = 0 To 4 Print a(i); Next Print , For i = 0 To 4 Print b(i); Next Print start = 1 (2)动态数组动态数组在定义时并不知道数组的大小,要在运行期确定,并根据需要在运

27、行期可改变数组的大小。动态数组的定义过程:在窗体、标准模块和过程中用Dim 或 Public 声明一个没有下标的数组(括号不能省略 );如: dim a( ) as integer 数组重定义。在过程中需要使用该数组前,用Redim 语句定义数组的大小(数组元素个数 ),下标可为常量、变量或表达式,但变量或表达式此时必须有值。如: Redim a(4) 动态数组定义格式:Dim 数组名 ( ) As 类型名定义数组名Redim Preserve 变量名(下标 ) 重定义数组大小在重定义时,按下标说明的上、下界重新分配内存存储单元。当重新定义动态数组时,数组的内容将被清除;若在 Redim 语句

28、中使用了Preserve 选项,则不清除数组中的内容,但使用“ Preserve ”只能改变最后一维的大小,前面几维的大小不能改变。使用动态数组时应注意 以下几点:使用动态数组可重新定义数组的大小和维数,但不能改变数组的类型:Dim a( ) as integer Redim a(4) Redim a(3,2) Redim a(6) a(1)= “Visual Basic ”此句有错误,试图改变数组的类型建立局部动态数组时,可省略Dim 语句,由 Redim 语句直接定义数组。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师

29、精心整理 - - - - - - - 第 7 页,共 22 页 - - - - - - - - - 使用 Dim 时,所定义数组的维数不超过8 维,直接使用Redim 定义数组,维数可达到60 维。在同一过程中,可多次使用Redim 语句定义同一个数组,以改变数组的大小和维数;3、数组的清除和重定义要清除数组的内容或对数组重新定义,这可以用Erase 语句来实现。其格式如下:Erase ,,注意,在 Erase 语句中, 只给出要刷新的数组名,不带括号和下标。 例如:Erase Test 几点说明:(1)当把 Erase 语句用于静态数组时,则清空数组元素的值(2)当把 Erase 语句用于动

30、态数组时,则删除数组(3)当把 Erase 语句用于变体数组时,则每个元素重置为空(4) Erase释放动态数组所使用的内存。例 2:ReDim 语句应用示例Private Sub Form_Load() Dim a() As Integer 声明一个整型动态数组Show ReDim a(800) 用 ReDim 语句重新定义k = 0 For x = 100 To 600 Step 7 If x Mod 8 = 0 Then k = k + 1 a(k) = x End If Next x ReDim Preserve a(k) Preserve 能保留数组中原有的数据For i = 1 T

31、o k Print a(i) Next i End Sub 例 3:请编程,输出杨辉三角形,其一般形式如下:1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 为了输出杨辉三角形,首先找到形成上述矩阵的规律:对角线和每行的第1 列均为 1,其余各项是它的上一行中前一个元素和上一行的同一列元素之和;从而可以得出形成矩阵数据的一般规律:a(i,j)=a(i-1,j-1)+a(i-1,j)。1. 控件及属性表表 8-2 控件及属性表控件名称 (Name) 属性文本框Label1 Caption= ” 杨辉三角形 ”图片框Picture1 按钮Command1 Ca

32、ption= ” 显示”2设计界面名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 22 页 - - - - - - - - - 3代码Option Base 1 Dim a%() 显示按钮代码Private Sub Command1_Click() Dim m% m = Val(InputBox(请输入要显示杨辉三角形的级数m(小于等于 14 的正整数 ), 获取显示级数, 6) If (m 14) Then MsgBox 请输入大于等于3 小于等于14 的整数 ,64,

33、 ”杨辉三角形 ”Exit Sub End If ReDim a(m, m) Picture1.Cls For i = 1 To m a(i, 1) = 1: a(i, i) = 1 Next i For i = 3 To m For j = 2 To i - 1 a(i, j) = a(i - 1, j - 1) + a(i - 1, j) Next j Next i Dim n%, k% n = 42 For i = 1 To m Picture1.Print Tab(n); k = n For j = 1 To i Picture1.Print Tab(k); Picture1.Prin

34、t a(i, j); k = k + 6 Next j Picture1.Print n = n - 3 Next i End Sub 一、引入建立一个数组之后,可以对数组或数组元素进行操作。数组的基本操作包括输入、输出及复制,这些操作都是对数组元素进行的。二、新课1.数组的引用数组的引用通常是指对数组元素的引用,其方法是, 在数组后面的括号中指定下标,例如:x(8) ,y(2,3) ,z%(3) 要注意区分数组定义和数组元素!在引用数组时,应注意以下几点:(1)在引用数组元素时,数组名、类型和维数必须与定义数组时一致。名师资料总结 - - -精品资料欢迎下载 - - - - - - - -

35、- - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 22 页 - - - - - - - - - (2)如果建立的是二维或多维数组,则在引用时必须给出两个或多个下标。(3)引用数组元素时,其下标值应在建立数组时所指定的范围内。2、数组元素的赋值(1)静态数组只能对数组元素逐一赋值,不能用数组名整体赋值Dim a(4) As Integer For i = 0 To 4 a(i)=10 a 数组的每个元素值为10 Next I 是允许的。a=(1,2,3,4,5) 是不允许的。(2)变体型动态数组可以用Array 函数定界和整体赋值Dim a As

36、Variant, b() As variant, i% a=Array(1,2,3,4,5) b=Array( “abc ”,”derf ”,67, True) For i=Lbound(a) To Ubound(a) Picture1.Print a(i) Next i For i=Lbound(b) To Ubound(b) Picture1.Print b(i) Next I 其中, Lbound() 和 Ubound() 用来确定数组的下界和上界(3)动态数组也可以用同类型的静态数组整体赋值Dim a(4) As Integer, b() As Integer a(0)=1:a(1)=

37、3:a(2)=5:a(3)=-8:a(4)=7 b=a 将数组a 整体赋给数组b,b 为动态数组其中,b=a 相当于For i=Lbound(a) To Ubound(a) b(i)=a(i) Next i 3.数组元素的输入a) 对于数组元素较少的数组,可通过单个赋值语句进行输入操作;b) 对于数组元素较多的数组,一般通过For 语句和 InputBox 函数输入。Option Base 1 默认下标下界为1 dim b(2,3) as single for i=1 to 2 for i=1 to 3 b(i,j)=inputbox(“输入 b(”& i & “,” & j & ”)的值”

38、) next next c) 对数组元素的的赋值和使用,可将数组看作简单变量,任何简单变量能使用和出现的地方,数组元素均可出现。使用数组时要注意下标不能出界;使用多维数组时,下标之间用逗号隔开;Dim a(10) as integer,b(2,4) as long a(16)=100 错误,下标出界名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 22 页 - - - - - - - - - b(1,4)=a(6)*5 使用 b 数组的一个元素4、数组元素的输出数组的输出

39、同样是以数组元素为操作对象,可通过Print 方法来实现。例 1:从键盘上输入10 个整数,并放入一个一维数组中,然后将其前5 个元素与后5 个元素对换,即:第1 个元素与第10 个元素互换,第2 个元素与第9 个元素互换 第 5个元素与第6 个元素互换。分别输出数组原来各元素的值和对换后各元素的值。Option Base 1 Private Sub Form_Click() arr = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) Print 原来数组: For i = 1 To 10 Print arr(i); Next i Print For i = 1 To

40、 5 For j = 6 To 10 t = arr(i) : arr(i) = arr(j) : arr(j) = t Next j Next i Print 对换后数组: For i = 1 To 10 Print arr(i); Next i End Sub 5、数组元素的复制单个数组可以像简单变量一样,从一个数组复制到另一个数组。Dim b(4,8),a(6,5) 数组定义b(2,3)=a(3,2) 数组复制二维数组中的元素也可以复制给另一个二维数组中的某个元素,也可以复制给一个一维数组中的某个元素,并且反之亦然。Dim a(8),b(3,2) a(3)=b(1,2): b(3,2)=

41、a(7) 为了复制整个数组,仍要使用For 循环语句。option base 1 dim name1( ),name2( ) redim name1(10),name2(10) for i=1 to10 给 name1 的 10 个元素赋值name1(i)=inputbox(“请输入姓名: ”) next for i=1 to 10 利用 For 循环将 name1 的数据复制给name2 name2(i)=name1(i) next 例 2: 设有如下两组数据。(1) 2,8,7,6,4,28 ,70,25 (2) 79,27,32 ,41,57 ,66,78, 80 名师资料总结 - -

42、-精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 22 页 - - - - - - - - - 编写一个程序,把上面两组数据分别读入两个数组中,然后把两个数组中对应下标的元素相加,即 2+79 ,8+27 , 25 80,并把相应的结果放入第三个数组中,最后输出第三个数组的值。程序如下:Option Base 1 Private Sub Form_Click() Dim A, B, C(8) As Integer A = Array(2, 8, 7, 6, 4, 28, 70, 25) B =

43、 Array(79, 27, 32, 41, 57, 66, 78, 80) For i = 1 To 8 C(i) = A(i) + B(i) Next i Print 第一个数组为:; For i = 1 To 8 Print A(i); Next i Print Print 第二个数组为:; For i = 1 To 8 Print B(i); Next i Print Print 第三个数组为:; For i = 1 To 8 Print C(i); Next i Print End Sub 例 3:随机产生10 个 70-99 之间的整数,输出其中的最大数和最小数。提示: 1、先定义

44、一个有10 数组元素的整型数组。2、运用 for 循环给每一个数组元素赋上70-99 之间的随机数。程序代码:Dim max%,min% Max=a(1) Min=a(1) For i=2 to 10 If maxa(i) then Min=a(I) End if Next I Print “最大数” ;max , ”最小数” ;min 例 4:用随机函数产生100 个0,99范围内的随机整数,统计个位上的数字分别为1,2,名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共

45、 22 页 - - - - - - - - - 3,4,5,6,7, 8,9,0 的数的个数并打印出来。提示:用数组a(1 to 100) 存放产生的确100 个随机整数,数组x(1 to 10) 来存放个位上的数字分别为1,2,3,4,5,6,7,8,9,0 的数的个数。即个位是1 的个数存放在x(1)中,个位是2 的个数存放在x(2) 中,个位是0 的个数存放在x(10) 。将程序代码如下:Public Sub Form_Click() Dim a(1 To 100) As Integer Dim x(1 To 10) As Integer Dim i As Integer, p As I

46、nteger 产生 100 个0,99 范围内的随机整数,每行10 个打印出来For i = 1 To 100 a(i) = Int(Rnd * 100) If a(i) a(j) Then imin = j Next j temp = a(i) a(i) = a(imin) a(imin) = temp Next I 例 1:随机产生十个10100 的整数,用“选择排序法”按值从小到大顺序排序,最后输出结果。解题方法:(1)利用 Int(91*Rnd+10)产生值为 10 到 100 的随机整数使用 Randomize得到不同的随机数序列(2)按值从小到大进行排序。排序方法:将 10 个数放

47、入数组a 中,对下列下标变量进行排序处理:a(1), a(2), a(3), , a(8) , a(9) , a(10) 从这 10 个下标变量中,选出最小值,通过交换把该值存入a(1) 中 除 a(1) 之外 (a(1) 已存放最小值 ),从其余 9 个下标变量中选出最小值(即 10 个数中的次小值 ),通过交换把该值存入a(2) 中 选出 a(3) a(10) 中的最小值,通过交换,把该值存入a(3) 中 重复上述处理,至a(8) ,可使 a(1) a(8) 按小到大排列 第 9 次处理,选出a(9)及 a(10) 中的最小值,通过交换把该值存入a(9) 中,此时 a(10) 存放的就是最

48、大值程序代码如下:Private Sub Form_click() Randomize Dim a(1 To 10) As Integer Print 原始数据: For i = 1 To 10 产生 10 个随机数a(i) = Int(91 * Rnd + 10) Print a(i); Next i Print: Print For i = 1 To 9 For j = i + 1 To 10 If a(i) a(j) Then t = a(i): a(i) = a(j): a(j) = t 交换位置End If Next j Next i Print 排序结果: For i = 1 To

49、 10 Print a(i); Next i End Sub 改写中间程序段“For i=1 To 9 ”“ Next i ”(共 7 个程序行 ) For i = 1 To 9 k = i k 用来记录每次选择的最小值的下标名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 22 页 - - - - - - - - - For j = i + 1 To 10 If a(k) a(j) Then k = j End If Next j t = a(k): a(k) = a(

50、i): a(i) = t 交换位置Next i 变量 k 记录每一次选出的最小值的下标,在本次比较结束后,使 a(i) 与 a(k) 一次换位即可2、冒泡法排序基本思想: (将相邻两个数比较,小的调到前头) 1)有 n 个数(存放在数组a(n) 中) ,第一趟将每相邻两个数比较,小的调到前头,经n-1次两两相邻比较后,最大的数已“沉底”,放在最后一个位置,小数上升“浮起”;2)第二趟对余下的n-1 个数(最大的数已“沉底”)按上法比较,经n-2 次两两相邻比较后得次大的数;3)依次类推,n 个数共进行n-1 趟比较,在第j 趟中要进行n-j 次两两比较。程序段如下For i = 1 To n

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁