第5章 数组和自定义类型_第1页
第5章 数组和自定义类型_第2页
第5章 数组和自定义类型_第3页
第5章 数组和自定义类型_第4页
第5章 数组和自定义类型_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第5章数组和自定义类型

5.1数组的概念5.2数组的基本操作和排序5.3列表框和组合框控件5.4自定义类型及其数组5.5综合应用本章目录1安徽工业大学计算机学院5.1数组的概念1.引例例5.1

求100个学生的平均成绩,并统计高于平均分的人数。用简单变量和循环,求平均成绩程序段如下:

aver=0Fori=1To100mark=InputBox("输入学生成绩")aver=aver+markNextiaver=aver/100由于循环体内变量mark只能放一个学生的成绩,无法统计高于平均分的人数。若用简单变量保存100个学生的成绩,则需定义100个变量和使用100句输入语句。由此引入了数组。本章目录2安徽工业大学计算机学院用数组解决问题的程序如下:

Dimmark(99)AsInteger'声明数组markDimaver!,overn%,i%aver=0Fori=0To99'输入成绩,求分数和

mark(i)=InputBox("输入学生的成绩")aver=aver+mark(i)Nextiaver=aver/100'求100人的平均分

overn=0Fori=0To99'统计高于平均分的人数

Ifmark(i)>averThenovern=overn+1Nexti

MsgBox("平均分:"&aver&"高于平均分人数:"&overn)

本章目录3安徽工业大学计算机学院数组不是一种数据类型,而是一组相同类型的变量的集合。程序中使用数组的最大好处是用一个数组名代表逻辑上相关的一批数据,用下标表示该数组中的各个元素,和循环语句结合使用,使得程序书写简洁。数组必须先声明后使用本章目录4安徽工业大学计算机学院数组不是一种数据类型,而是一组相同类型的变量的集合。程序中使用数组的最大好处是用一个数组名代表逻辑上相关的一批数据,用下标表示该数组中的各个元素,和循环语句结合使用,使得程序书写简洁。数组必须先声明后使用使用Dim语句声明数组名、类型、维数、数组大小声明时下标的个数确定数组的维数,数组声明后在内存可分配一块连续的区域。本章目录5安徽工业大学计算机学院5.1.2数组声明及初始化一维数组

Dim数组名(下标上界)

[As类型]下标上界为常数、已有值的表达式或变量。下标下界为0。一维数组的大小为:下标上界+1。本章目录6安徽工业大学计算机学院Dimmark(99)AsInteger

声明了一维定长整型数组mark,共有100个元素,下标范围为0To99;mark数组的各元素是mark(0),mark(1),…,mark(99);mark(i)表示由下标i的值决定是哪一个元素。mark数组内存分配如下:mark(99)mark(98)…mark(2)mark(1)mark(0)每个数组元素有一个唯一的顺序号,下标不能超出数组声明时的上、下界范围,否则会产生“索引超出了数组界限”错误

。数组元素的使用规则与同类型的简单变量相同本章目录7安徽工业大学计算机学院多维数组声明

Dim数组名(下标1,下标2…)

[As类型]下标数决定了数组的维数,每一维的大小=上界+1;数组的大小为每一维大小的乘积。例Dimx(2,4)AsLong声明了一个长整型的二维数组

x;共占据3×5个长整型变量的空间

x(1,4)x(1,3)x(1,2)x(1,1)x(1,0)x(2,4)x(2,3)x(2,2)x(2,1)x(2,0)x(0,4)x(0,3)x(0,2)x(0,1)x(0,0)本章目录8安徽工业大学计算机学院5.1.3动态数组及声明

建立动态数组要分两步:用Dim语句声明数组,但不能指定数组大小Dim

数组名()As数据类型用ReDim语句动态地分配元素个数ReDim

数组名

(下标[,下标2…])例:Dims()AsSingleSubForm_Load()

ReDims(4,8)

EndSub

本章目录9安徽工业大学计算机学院定义动态数组大小注意:

Dim

是说明语句,可出现在程序的任何地方,而ReDim

是执行语句,只能在过程中在过程中可多次使用ReDim语句来改变数组的大小,但不能改变维数和类型可在ReDim

后加Preserve参数用来保留数组中的数据,若使用Preserve参数后,只能改变最后一维的大小。例5.2编一个程序,显示有n个数的非波那契数序列本章目录10安徽工业大学计算机学院5.2数组的基本操作数组的输入

通过TextBox控件或InputBox函数输入Dims(3,4)ASIntegerFori=0To3Forj=0To4

s(I,j)=

InputBox("输入"&i&“,"&j&"元素")NextjNexti本章目录11安徽工业大学计算机学院数组的输出例5.3

形成5×5的方阵,分别输出方阵中各元素、上三角和下三角元素

本章目录方阵规律:第一行的元素为0~4,以后每一行是前一行对应元素增加5上三角规律:每一行的起始列与行号相同,只要控制内循环的初值

用Tab函数或Space定位控制输出的空格,12安徽工业大学计算机学院求数组和、最值、位置例5.4

求一维数组中各元素之和、最小数组元素,并将最小值数组元素与数组中第一个元素交换求元素和通过循环将每个元素进行累加求数组中最小元素假设第一个元素为最小,然后将该数与其他元素逐一比较,若发现小于最小值,就用新值替换最小值,同时记录下标值。求最大值的方法与求最小值相似本章目录13安徽工业大学计算机学院交换元素下标0123456789初值26436187331937597669下标0123456789初值19436187332637597669本章目录14安徽工业大学计算机学院数组排序排序是将一组数按递增或递减的次序排列,例如按学生的成绩、球赛积分等排序。排序的算法有许多,常用的有选择法、冒泡法、插入法、合并排序等。

选择法排序基本思想:每次在若干个无序数中找最小(大)数,并放在相应的位置。本章目录15安徽工业大学计算机学院数组排序n个数的序列,用选择法按递增次序排序的步骤:1)从n个数中找出最小数的下标,出了内循环,最小数与第1个数交换位置;通过这一轮排序,第1个数已确定好。2)除已排序的数外,其余数再按步骤1)的方法选出最小的数,与未排序数中的第1个数交换位置。3)重复步骤2),最后构成递增序列。选择法演示本章目录16安徽工业大学计算机学院选择法排序例5.5

对已知存放在数组中的6个数,用选择法按递增顺序排序。

原始数据869327a(1)a(2)a(3)a(4)a(5)a(6)第1轮比较269387

a(2)a(3)a(4)a(5)a(6)第2轮比较239687

a(3)a(4)a(5)a(6)第3轮比较236

987

a(4)a(5)a(6)第4轮比较236789

a(5)a(6)第5轮比较236789选择法排序过程示意

本章目录17安徽工业大学计算机学院冒泡法排序基本思想是:从第一个元素开始,对数组中两两相邻的元素比较,将值较小的元素放在前面,值较大的元素放在后面,一轮比较比较完毕,一个最大的数沉底成为数组中的最后一个元素,一些较小的数如同气泡一样上浮一个位置。n个数,经过n-1轮比较后完成排序。冒泡法演示本章目录18安徽工业大学计算机学院冒泡法排序

原始数据869327a(1)a(2)a(3)a(4)a(5)a(6)第1轮比较683279a(1)a(2)a(3)a(4)a(5)

第2轮比较632789a(1)a(2)a(3)a(4)

第3轮比较326789a(1)a(2)a(3)

第4轮比较236789a(1)a(2)

第5轮比较236789例5.6用冒泡排序法实现例5.5的问题。本章目录19安徽工业大学计算机学院插入数据

插入数据基本思想是:1)首先查找待插入数据在数组中的位置k;2)然后从最后一个元素开始往前直到下标为k的元素依次往后移动一个位置;3)第k个元素的位置腾出,将数据插入。例5.7在有序数组a中插入数值x。

本章目录数据插入演示20安徽工业大学计算机学院删除数据删除操作首先也是要找到欲删除的元素的位置k;然后从k+1到n个位置开始向前移动;最后将数组元素减1。

例5.8要将值为13的元素删除。

本章目录数据删除演示21安徽工业大学计算机学院5.3列表框和组合框列表框可显示多个选项供用户选择,不能直接修改其中的内容。组合框组合了文本框和列表框的特性而形成的一种控件。组合框有3种式样。本章目录22安徽工业大学计算机学院列表框和组合框重要属性(1)

ListList是一个集合(2)ListIndex

选项的序号(从0开始)(3)ListCount项目数量

(4)Sorted排序(5)Text被选定的文本内容

本章目录23安徽工业大学计算机学院List1.ListIndex=2List1.ListCount=6List1.Sorted=FalseList1.Text为

"C/C++程序设计"

List1.List(List1.ListIndex)等于List1.Text本章目录24安徽工业大学计算机学院常用方法

AddItem方法把一个项目加入列表对象.AddItem

项目字符串[,索引值]索引值:决定新增项在列表中的位置,如果省略,则新增项目添加在最后。

RemoveItem方法删除列表中指定项目对象.RemoveItem

索引值

Clear

清除列表中所有项目例如:List1.Clear 全部清除本章目录25安徽工业大学计算机学院重要事件列表框:Click、DblClick组合框:Click例5.9编写一个能对列表框进行项目添加、修改和删除的应用程序。修改列表框,先选定项将选项显示在文本框中,更改文本框中内容后,再更新列表框

本章目录26安徽工业大学计算机学院应用例5.10编写一个使用屏幕字体、字号的程序

例5.11使用列表框实现排序、查找、删除例5.12使用组合框对省和直辖市名称管理本章目录27安徽工业大学计算机学院5.4自定义类型及数组数组存放性质相同的数据集合。若不同类型信息作为一个整体来描述,例如姓名、性别、出生年月等,通过Type语句来实现。

Type自定义类型名

元素名1As数据类型名

元素名nAs数据类型名

EndType本章目录28安徽工业大学计算机学院例如,定义一个有关学生信息的类型:TypeStudType

'StudType为自定义类型名

NameAs

String*5

'姓名

SexAs

String*1

'性别

TelephoneAs

Long

'电话

SchoolAs

String*10

'学校EndType自定义类型不能在过程内定义,一般放在标准模块文件,默认为Public;若在窗体模块的通用声明段定义,必须加Private。

本章目录29安徽工业大学计算机学院5.4.2自定义类型变量的使用

定义了自定义类型,就可在变量的声明时使用。Dim变量名As

自定义类型名例如,如下语句:

DimS1AsStudType,S2AsStudType

声明S1、S2为两个同种类型的变量本章目录30安徽工业大学计算机学院注意:不要混淆StudType

和S1,前者如同Integer等的类型名,后者根据该类型分配所需的内存空间,存储各成员数据。(2)类型变量和数组相同之处它们都是由若干个成员组成;不同之处,前者的成员代表不同性质、不同类型的数据,以各个不同的成员名表示;而数组一般存放的是同种性质、同种类型的数据,以下标表示不同的元素。本章目录31安徽工业大学计算机学院自定义类型变量成员的引用

引用自定义类型变量中的某个成员,形式如下:

自定义类型变量名.成员名例如,S1.NameS1变量中的姓名

S1.Sex性别可利用With语句简化成员引用:With结构变量对象名语句块EndWithWithS1.Name="张华".Sex="男".School="同济大学"EndWith本章目录32安徽工业大学计算机学院5.4.3自定义类型数组及应用自定义类型数组就是数组中的每个元素是自定义类型

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论