[工学]复习-第5章-数组及结构类型例题部分隐藏.ppt_第1页
[工学]复习-第5章-数组及结构类型例题部分隐藏.ppt_第2页
[工学]复习-第5章-数组及结构类型例题部分隐藏.ppt_第3页
[工学]复习-第5章-数组及结构类型例题部分隐藏.ppt_第4页
[工学]复习-第5章-数组及结构类型例题部分隐藏.ppt_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

1,大学程序设计技能训练VB.NET 之数组及结构类型,教师:柳强,2,第五章 数 组,5.1 数组的概念 5.2 数组声明及初始化 5.3 重定义数组大小 5.4 数组的基本操作和排序 5.5 结构类型及其数组 5.6 综合应用,本章目录,3,数组: 不是一种数据类型,而是一组相同类型的变量的集合。 作用:用一个数组名代表逻辑上相关的一批数据,用下标表示该数组中的各个元素,和循环语句结合使用,使得程序书写简洁。 使用:必须先声明后使用,本章目录,数组的概念,4,5.2数组声明及初始化,一维数组 Dim 数组名(下标上界) As 类型 下标上界为常数、已有值的表达式或变量。 下标下界为0。一维数组的大小为:下标上界+1。 例 Dim a(10) As Integer,Dim st(5) As String 声明了一维整型数组a、有11个元素;下标的范围010。若在程序中使用a(11),则系统会显示“索引超出了数组界限”。 st是一维字符串类型数组、有6个元素;下标的范围05。,本章目录,5,多维数组声明,Dim 数组名(下标1,下标2) As 类型 下标数决定了数组的维数,每一维的大小=上界+1;数组的大小为每一维大小的乘积。 例 Dim x(2,4) As Long 声明了一个长整型的二维数组 x;共占据35个长整型变量的空间,本章目录,6,数组的初始化,VB.NET提供了对数组的初始化功能,也就是在定义数组的同时,为数组元素赋初值。形式: Dim 数组() As 类型 =常数1,常数n 一维 Dim 数组(,) As 类型 =行1常数,行m常数 例 Dim x(,) As Integer = 1,2,3,4, 5,6,7,8,数组x,本章目录,7,5.3重定义数组大小,对已经存在的数组可用ReDim语句改变数组大小 ReDim 数组名 (下标,下标2) 例 Dim sArray(2,3 ) As Single Sub Form1_Load( ) ReDim sArray(4,8) End Sub 在过程外声明了二维数组sArray,在Form1_Load事件中重新指明二维数组的大小为5行9列。,本章目录,8,重定义数组大小注意:,Dim 是说明语句,可出现在程序的任何地方,而ReDim 是执行语句,只能出现在过程中 在过程中可多次使用ReDim语句来改变数组的大小,但不能改变维数和类型 可在ReDim 后加Preserve参数用来保留数组中的数据,若使用Preserve参数后,只能改变最后一维的大小。 例5.2 对例5.1改进,根据指定人数输入学生的成绩,计算的平均分和高于平均分的人数。,本章目录,9,5.4数组的基本操作和排序,5.4.1 数组的输入 通过TextBox控件或InputBox函数逐一输入 例 Dim sb(3,4) AS Integer For i = 0 To 3 For j = 0 To 4 sb(I,j) = InputBox(“输入“ & i &“,“ & j & “元素“) Next j Next i,本章目录,10,5.4.2数组的输出,例5.3 形成55的方阵,分别输出方阵中各元素和下三角元素 方阵规律:第一行的元素为04,以后每一行是前一行对应元素增加5 上三角规律: 每一行的起始列与行号相同,只要控制内循环的初值 用Space(4-Len(Trim(sc(i,j)控制输出的空格,,本章目录,代码说明,11,5.4.3求数组和、最值、位置,例5.4 求一维数组中各元素之和、最小数组元素,并将最小值数组元素与数组中第一个元素交换 求元素和 通过循环将每个元素进行累加 求数组中最小元素 假设第一个元素为最小,然后将该数与其他元素逐一比较,若发现小于最小值,就用新值替换最小值,同时记录下标值。 求最大值的方法与求最小值相似,本章目录,12,交换元素,本章目录,13,数组的复习,写出VB表达式: 定义数组x,用于存放26个大写字母。 定义数组y,用于存放5个学生的成绩,并初始化。,14,5.4.4数组排序,排序是将一组数按递增或递减的次序排列,例如按学生的成绩、球赛积分等排序。排序的算法有许多,常用的有选择法、冒泡法、插入法、合并排序等。 选择法排序 基本思想:每次在若干个无序数中找最小(大)数,并放在相应的位置。,本章目录,15,5.4.4数组排序,n个数的序列,用选择法按递增次序排序的步骤: 1) 从n个数中找出最小数的下标,出了内循环,最小数与第1个数交换位置;通过这一轮排序,第1个数已确定好。 2) 除已排序的数外,其余数再按步骤1)的方法选出最小的数,与未排序数中的第1个数交换位置。 3) 重复步骤 2),最后构成递增序列。,选择法演示,本章目录,16,选择法排序,例5.5 对已知存放在数组中的6个数,用选择法按递增顺序排序。,选择法排序过程示意,本章目录,代码说明,17,选择法排序,Dim iA() As Integer = 8, 6, 9, 3, 2, 7 Sub Form1_Click() Handles MyBase.Click Dim iMin%, n%, i%, j%, t% n = UBound(iA) 获得数组的下标上界 For i = 0 To n - 1 进行n-1轮比较 iMin = i 对第i轮比较,初始假定第i个元素最小 For j = i + 1 To n 选最小元素的下标 If iA(j) iA(iMin) Then iMin = j Next j t = iA(i) 选出的最小元素与第i个元素交换 iA(i) = iA(iMin) iA(iMin) = t Next i End Sub,18,冒泡法排序,基本思想是: 1)从第一个元素开始,对数组中两两相邻的元素比较,将值较小的元素放在前面,值较大的元素放在后面,一轮比较比较完毕,一个最大的数沉底成为数组中的最后一个元素,一些较小的数如同气泡一样上浮一个位置。 2)n个数,经过n-1轮比较后完成排序。,冒泡法演示,本章目录,19,冒泡法排序,例5.6 用冒泡排序法实现例5.5的问题。,本章目录,代码说明,20,冒泡法排序,Sub Form1_Click() Handles MyBase.Click Dim iA() As Integer = 8, 6, 9, 3, 2, 7 Dim tim%, j%, t% n = UBound(iA) For time =1 To n n+1个数,进行n趟比较 For j = 0 To n - time 在每一趟比较对n-time个元素中两两相邻比较,大数沉底 If iA(j) iA(j + 1) Then t = iA(j) iA(j) = iA(j + 1) iA(j + 1) = t End If Next j Next time End Sub,21,5.4.5插入数据,插入数据基本思想是: 1)首先查找待插入数据在数组中的位置k; 2)然后从最后一个元素开始往前直到下标为k的元素依次往后移动一个位置; 3) 第k个元素的位置腾出,将数据插入。,本章目录,数据插入演示,22,例5.7在有序数组a中插入数值x。,代码说明,23,程序如下: Sub Button1_Click() Handles Button1.Click Dim a%() = 1, 4, 7, 9, 12, 23, 56 Dim i%, k%, x%, n% n = UBound(a) 获得数组的上界 x = 14 For k = 0 To n 查找插入数x在数组中的位置 If x a(k) Then Exit For 找到插入的位置下标为k Next k ReDim Preserve a(n + 1) 数组增加一个元素 For i = n To k Step -1 从最后元素开始往后移 a(i + 1) = a(i) Next i a(k) = x 数插入在对应的位置 TextBox1.Text = “ For i = 0 To n + 1 显示插入后的各数组元素 TextBox1.Text &= a(i) & “ “ Next i End Sub,24,5.4.6删除数据,删除操作首先也是要找到欲删除的元素的位置k; 然后从k+1到n个位置开始向前移动; 最后将数组元素减1。,本章目录,数据删除演示,例5.8要将值为13的元素删除。,25,Sub Button1_Click() Handles Button1.Click Dim a%() = 1, 4, 7, 9, 12, 14, 23, 56 Dim i%, k%, x%, n% n = UBound(a) 获得数组的上界 x = 14 For k = 0 To n 查找欲删除的元素位置 If x = a(k) Then Exit For Next k If k n Then MsgBox(“找不到此数据“) : Exit Sub For i = k + 1 To n 将x后的元素左移 a(i - 1) = a(i) Next i n = n - 1 ReDim Preserve a(n) 数组元素减少一个 TextBox1.Text = “ For i = 0 To n 显示插入后的各数组元素 TextBox1.Text &= a(i) & “ “ Next i End Sub,26,5.5 结构类型及其数组,数组存放性质相同的数据集合。若不同类型信息作为一个整体来描述,例如姓名、性别、出生年月等,通过“Structure”结构类型来解决。 1.结构类型定义: Structure 结构类型名 成员名声明 End Structure,本章目录,27,结构类型,例如,定义一个有关学生信息的结构类型: Structure studType studType为类型名 Dim Name As String 姓名 Dim Sex As Char 性别 Dim Telephone As Long 电话 Dim School As String 学校 End Structure 结构类型不能在过程内部定义。 必须显式声明结构的每一数据成员,用Dim语句声明的成员默认为Public,否则可用Private声明。,本章目录,28,2.结构变量的声明,定义了结构类型,就可在变量的声明时使用。 Dim 变量名 As 结构类型名 例如,如下语句: Dim Student ,MyStud As StudType 声明Student、MyStud为两个同种类型的变量,本章目录,29,2.结构变量的声明,注意: 不要混淆StudType 和Student ,前者如同Integer等的类型名,后者根据该类型分配所需的内存空间,存储各成员数据。 (2) 类型变量和数组相同之处它们都是由若干个成员(元素)组成;不同之处,前者的成员代表不同性质、不同类型的数据,以各个不同的成员名表示;而数组一般存放的是同种性质、同种类型的数据,以下标表示不同的元素。,本章目录,30,结构变量成员的引用,引用结构类型变量中的某个成员,形式如下: 结构类型变量名.成员名 例如, Student.Name Student变量中的姓名 Student.Sex性别 可利用With语句简化成员引用: With 结构变量对象名 语句块 End With,With student .Name = “张华“ .Sex = “男“ .School=“同济大学“ End With,本章目录,31,4.结构数组及应用,例5.9 利用结构类型,声明一个结构数组,输入不超过100个个学生的信息,显示全部信息和查询某学校的学生情况。 分析:自定义一个记录类型,由姓名、组成,声明一个存放最多100个记录的数组,在标准模块自定义类型如下,本章目录,代码说明,32,在窗体模块的声明的结构数组和n变量如下: Dim stud(99) As studType Dim n% 存放当前已输人的学生人数 输入学生的各项信息 Sub Button1_Click() Handles Button1.Click If n = 100 Then 最多可接受100个人数 MsgBox(“输入人数超过数组声明的个数“) Else With stud(n) .Name = Trim(TextBox1.Text) .Sex = CChar(TextBox2.Text) .Telephone = CLng(TextBox3.Text) .School = TextBox4.Text End With TextBox1.Text = “ : TextBox2.Text = “ : TextBox3.Text = “ : TextBox4.Text = “ n = n + 1 End If End Sub,33,显示已输入学生的各项信息 Sub Button2_Click() Handles Button2.Click Dim i% Label5.Text = “ 姓名 性别 电话 学校“ & vbCrLf Label5.Text &= “-“ & vbCrLf For i = 1 To n With stud(i) Label5.Text &= .Name & “ “ & .Sex & “ “ & .Telephone & “ “ & .School & vbCrLf End With Next i End Sub,34,查询某学校的学生 Sub Button3_Click() Handles Button3.Click Dim TSchool As String, i% TSchool = InputBox(“请输入欲查询的学生“) Label6.Text = “姓名 学校“ & vbCrLf For i = 1 To n If stud(i).School = TSchool Then Label6.Text &= stud(i).Name & “ “ & stud(i).School & vbCrLf End If Next i End Sub,35,5.6 综合应用-分类统计,1.分类统计 将一批数据按条件统计每一类中包含的个数。例如,统计学生成绩优、良、中、及格、不及格人数。这类问题要掌握分类条件表达式的书写和使用计数变量保存相应的计数。,本章目录,36,综合应用-分类统计,例5.10 输入一串字符,统计各字母出现的次数 统计26个字母出现的个数,必须声明一个具有26个元素的数组A(25),每个元素的下标表示对应的字母,元素的值表示对应字母出现的次数。 从输入的字符串中逐一取出字符C,转换成大写字符(不区分大小写),再求得其在数组中的下标。 关键表达式:j=Asc(UCase(c)-65 A(j)=A(j)+1,本章目录,37,综合应用-数据输入,2. 大量数据的输入和编辑 在财务、工程计算中,经常需要对大量的数据进行

温馨提示

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

评论

0/150

提交评论