《第6章 数组.pptx》由会员分享,可在线阅读,更多相关《第6章 数组.pptx(44页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、课程主讲人:第6章 数组第6章 数组3案例引入4【例6-1】评分系统。讨论课实行小组互评,录入10个小组评分,统计最后得分情况,程序运行界面如图6-1所示。分析:根据题目要求,输入分数,分别统计最高分、最低分、总分和平均分。(1)使用数组存储10个小组打分,由于模块中多个事件都会用到该数组,需要在模块的声明部分加以声明。(2)使用InputBox函数逐个输入各数据,一般放在循环体内。(3)设首元素为最大值、最小值,然后再逐一和其他元素比较,直到找出最高分和最低分。(4)累加求总分,计算平均分,使用数学函数Round四舍五入取整。6.1 数组的概述5为什么要使用数组?6.1.1 数组的概念61.
2、1.数组数组数组是一组相同类型的变量的集合。数组声明语法格式:Dim 数组名(下标上界1,下标上界2.) As 数据类型例如Dim score(9) As Integer6.1.2 数组的分类7(1)按数组的大小是否可变分类,静态(定长)数组、动态(变长)数组。(2)按数据类型分类,数值型数组、字符串数组、逻辑型数组、日期型数组等基本数据类型的数字;当数组类型是Object时,各元素类型可以不同。(3)按维数分类,一维数组、二维数组、三维数组、多维数组。(4)按作用域分类,全局数组、模块级数组、过程级数组。6.2 一维数组8一维数组是指只有一个下标的数组。6.2.1 一维数组的声明9Dim 数
3、组名(下标上界) As 数据类型例如Dim a(9) As Integera(0)a(1)a(2)a(3)a(4)a(5)a(6)a(7)a(8)a(9)6.2.2 一维数组的引用10Dim a(9) As Integer,i As Integera(1)=2 下标是整型常量a(2*2)=2 下标是表达式a(i)=a(i-1)+10 下标是变量a(10)=5 错误,下标越界6.2.3 初始化数组11Dim 数组名() As 数据类型 = 值1,值2,.,值n例如Dim a() As Integer=1,2,3,4,5 6.2.4 一维数组的常用操作121.1.数组元素的赋值数组元素的赋值(1)
4、数组整体赋值。例如Dim s(2) As Strings=语文,数学,英语 (2)数组元素逐个赋值。例如Dim a(9),i As IntegerFor i=0 to 9a(i)=i*2Next132.2.数组元素的输出数组元素的输出例如Dim a(9),i As IntegerFor i = 0 To 9TextBox1.Text &= a(i) & vbCrLfNext14【例6-2】抛硬币。假设抛硬币100次,统计正反面出现的次数分析:根据题目要求,抛硬币结果有两种,一是正面,二是反面。(1)使用随机函数Rnd模拟投币过程,取值范围1-2,结果保存在数组a中。(2)统计数组a各元素的值出
5、现的次数,1表示正面,2表示正面。6.3 二维数组156.3.1 6.3.1 二维数组的声明二维数组的声明Dim 数组名(下标1上界,下标2上界) As 数据类型例如Dim b(2,3) As Integerb(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)6.3.2 二维数组的引用16数组名(下标1,下标2)例如b(0,0) = 98b(i,j) = b(i-1,j-1) + b(i-1,j)6.3.3 初始化数组17Dim 数组名(,)As 数据类型=第1行初值列表,第2行初值列表,.,第n行初值
6、列表例如Dim b(,) As Integer=1,2,3,4,5,6,7,8,9,10,11,126.3.4 二维数组的常用操作181.1.数组元素的赋值数组元素的赋值(1)数组整体赋值,例如Dim b(2,3) As Integerb=1,2,3,4,5,6,7,8,9,10,11,12(2)数组元素逐个赋值。例如Dim b(2,3) As Integer,i,j As IntegerFor i=0 to 2For i=0 to 3b(i,j)=i*jNextNext192.2.数组元素的输出数组元素的输出例如Dim b(2,3) As Integer,i,j As IntegerFor
7、i=0 to 2i对应行下标1For j=0 to 3j对应列下标2TextBox1.Text &= b(i,j) & “ ”NextNext20【例6-3】杨辉三角形。6.4 多维数组21Dim 数组名(下标1上界,下标2上界,.) As 数据类型下标的个数决定数组的维数,每一维的大小是各维大小的成绩。例如Dim a(1,2,3) As Integer数组a是三维数组,包含24个元素Dim b(2,2,3,4) As Integer数组b是四维数组,包含180个元素6.5 数组重定义22ReDim Preserve 数组名(下标1上界,下标2上界.)例如Dim a(1,4) As Integ
8、erReDim a(2,5)6.6 与数组有关的函数236.6.1 UBound6.6.1 UBound函数函数UBound函数用于确定数组下标上界,函数格式如下:UBound(数组名,第n维)例如Dim a() As Integer=1,2,3,4,5 For i=0 to UBound(a).Next246.6.2 Join6.6.2 Join函数函数Join函数用于将多个字符串连接起来,函数格式如下:Join(一维字符串数组名,分隔符)例如Dim s(2) As Strings=语文,数学,英语Label1.Text = Join(s, +)256.6.3 Split6.6.3 Spli
9、t函数函数Split函数用于返回字符串数组,函数格式如下:Split(字符串表达式,分隔符)例如Dim s(3) As Strings = Split(, .)26【例6-4】配餐。输入多种食材,给出所有可能的组合套餐情况6.7 数组常用算法276.7.1 6.7.1 求最值求最值【例6-5】求最值。随机产生30个成绩,求最高分、最低分和平均分分析:根据题目要求,使用一维数组存放随机产生的30个数。(1)数组元素a(1)a(30)存放随机产生的30个成绩,每5个数为一行在文本框显示输出。(2)变量min,max分别用来存放最低分和最高分。(3)设第1个元素为最值,即min = a(1),max
10、 =a(1)。(4)依次将其余的数与最低分和最高分分别比较,如果某个数a(i)小于最低分min,则用该数替换min;如果某个数a(i)大于最高分max,则用该数替换max。直到所有数组元素比较完毕,min和max就是数组中的最低分和最高分。286.7.2 6.7.2 数组排序数组排序【例6-6】选择法排序。随机产生10个两位数,按照从小到大顺序排列分析:根据题目要求,选择法排序在数列找最小值,将最小值替换为数列中左端的数字,重复相同操作,直到所有数字都被排序。10个数按照从小到大顺序排列,采用二重循环。(1)第1轮,10个数中找出最小值和第1个数交换;(2)第2轮,在剩下的9个数中找出最小值和
11、第2个数交换;(3)以此类推,第9轮,最后两个数比较并交换,完成排序。29【例6-7】冒泡法排序。随机产生10个两位数,按照从小到大顺序排列分析:根据题目要求,冒泡法排序是将大数下沉。每一轮排序时将相邻两数比较,小数在前大数在后。排序过程中,如果某一轮没有发生交换,则表示数组已经有序,利用逻辑变量提前结束,提高排序效率。6.8列表框与组合框30列表框和组合框控件实质是一维字符数组,能为用户提供若干个选项进行选择。6.8.1 列表框(ListBox)311.1.主要属性主要属性属性说明Items控件所有元素的集合Items.Count列表框中项目总数SelectedIndex当前被选中项目的索引
12、值,第1项索引值为0SelectedIndices集合,所有被选中项目的索引值SelectedItem被选定的内容SelectionMode列表框同时选择多个选项或不选:None,表示不允许选择One,表示只能选择一项MultiSimple,表示多项选择MultiExtended,表示扩展式多项选择,可以使用Ctrl键进行不连续选择,使用Shift键进行连续选择Sorted列表框中的项目是否按字母顺序排序Text当前被选中的项目的内容32事件事件事件说明Click鼠标单击项目时发生DoubleClick鼠标双击项目时发生SelectIndexChanged用户选择的索引发生改变时触发33方法方
13、法(1)Add方法,把一个字符串加入列表框中,语法格式为:列表框对象.Items.Add(字符串)例如:ListBox1.Items.Add(武汉)(2)Insert方法,在列表框指定位置插入新字符串,原位置的项目依次后移,语法格式为:列表框对象.Items.Insert(索引值,字符串)例如:ListBox1.Items. Insert (2,上海)(3)Remove方法,从列表框删除某个项目,语法格式为:列表框对象.Items. Remove(字符串)例如:ListBox1.Items. Remove(武汉)(4)RemoveAt方法,从列表框删除指定索引值的项目,语法格式为:列表框对象.
14、Items. RemoveAt(索引值)例如:ListBox1.Items. RemoveAt (1)(5)Clear方法,清除列表框中所有的项目内容,语法格式为:列表框对象.Items. Clear()例如:ListBox1.Items. Clear ()34【例6-8】专家库。建立评审委员会专家库,根据需要添加评审专家分析:根据题目要求,左侧列表框存放可供选择的名单,右侧列表框为被抽中的名单。(1)使用Add方法实现列表框添加新项目。(2)左侧列表框选中的项目添加到右侧列表框。(3)使用RemoveAt方法删除选定的项目,被选定的项目索引值为SelectedIndex。6.8.2 组合框(
15、ComboBox)351.1.主要属性主要属性属性说明DropDownStyle控件的显示样式:Simple简单组合框,由一个文本框和一个列表框的组合DropDown下拉组合框,默认值,可以单击下拉箭头进行选择,也可以在文本框中输入内容DropDownList下拉列表框,只能通过单击下拉箭头进行选择,不能输入Text当前被选定的内容或在组合框的文本框输入的内容36组合框的三种样式37事件事件事件说明Click鼠标单击项目时发生SelectIndexChanged用户选择的索引发生改变时触发38【例6-9】房贷计算器。等额本息还款法,计算每月月供和总利息分析:根据题目要求,等额本息还款法,每月以
16、相同的额度偿还贷款本息,其中利息逐月递减,本金逐月增加,计算公式如下,每月还款额=(贷款本金(年利率12)(1+年利率12)还款月数)(1+年利率12)还款月数-1)(1)组合框ComboBox1,设置样式属性DropDownStyle.DropDown,为下拉组合框。还款年数1-30,可以通过循环自动添加,也可以由用户在组合框的文本框输入。(2)组合框ComboBox2,显示年利率,设置样式属性DropDownStyle.DropDownList,为下拉列表框,用户不能输入。6.9 结构类型及其数组39如果需要将多个不同类型的数据,作为一个整体处理,例如学员信息表、成绩单、销售单等,可以通过
17、Structure结构数据类型解决。6.9.1 结构类型401.1.结构类型的定义结构类型的定义结构类型使用Structure语句定义,语法格式如下:Structure 结构类型名Dim 成员名1 As 数据类型Dim 成员名2 As 数据类型.End Structure例如:Structure CustType结构类型名为CustTypeDim no As String编号Dim name As String姓名Dim sex As Char性别Dim lv As String级别Dim tel as Long电话End Structure412.2.结构变量的声明结构变量的声明定义了结构类
18、型后,可以声明结构变量,格式如下:Dim 变量名 As 结构类型名例如:Dim cust As CustType423.3.结构变量成员的引用结构变量成员的引用声明了结构变量后要引用某个成员,格式如下:结构类型变量名.成员名例如,要使用结构变量cust中的编号和姓名:cust.no,cust.name6.9.2 结构数组43声明结构数组格式如下:Dim 数组名(下标上界) As 结构类型名44【例6-10】客户信息表。输入一些客户信息,并显示全部客户情况分析:根据题目要求,定义一个结构类型,声明结构数组存放客户信息。(1)在窗体模块定义结构类型CustType,声明结构数组cust(2)输入客户资料的各项信息,存放到数组cust中。2个单选按钮表示性别,设置RadioButton1的Checked属性为True,为默认值。(3)显示结构数组中的全部客户信息。