Vb实验五数组的应用
- 格式:doc
- 大小:104.50 KB
- 文档页数:3
实验八数组的应用(一)1、验证实验一。
假定学生的成绩在数组XS_CJ(1 to 10)中,对应的姓名在数组XS_XM(1 To 10)中,单击按钮“排序”时,能按分数从高到低的排列,即排序后XS_CJ(1)和XS_XM(1)为第一名的成绩、姓名。
题目分析:本实验是完成一个对数组元素从大到小的排序。
可以采用教材中中介绍的冒泡法完成排序,在此介绍另一种简单的排序方法——比较交换法。
假设对A(N)数组中的数据从大到小排序,比较交换法的排序步骤如下:(1)将第一个数与第2个到第10个数依次比较,如果A(1)<A(J)(J=2,3,…,10),则交换A(1)和A(J);(2)将第2个数与第3个到第10个依次比较,如果A(2)<A(J)(J=3,…,10),则交换A(2)和A(J);(3)重复以上方法,将第I个数与第I+1个数到第10个数依次比较,如果A(I)<A(J)(J=3,…,10),则交换A(I)和A(J);共重复N-1轮。
换的不仅XS_CJ数组中的元素,而且对应的XS_XM数组中对应的元素也要进行交换。
(1)设计界面可参考如下图8.1所示。
用列表框LstOldMark和LstNewMark分别来显示排序前后学生的姓名和成绩。
(2)编写代码在窗体模块的声明段声明Option Base 1Dim XS_XM(10) As stringDim XS_CJ(10) As Single图8.1 设计界面在窗体的Load事件过程中完成对数据的输入。
For I = 1 To 10XS_XM(I) = InputBox("请输入第" & Str(I) & "个学生的姓名", "成绩排序")XS_CJ(I)=val(InputBox("请输入第" & Str(I) & "个学生的成绩", "成绩排序")) LstOldMark.AddItem XS_XM(I) & " " &XS_CJ(I)Next I在“排序”按钮的Click事件过程中完成排序,部分代码如下:‘用比较交换法进行排序For I=1 To 9For J=I+1 To 10If XS_CJ(I)<XS_CJ(J) Then‘交换学生成绩T=XS_CJ(I) :XS_CJ(I)=XS_CJ(J): XS_CJ(J)=T‘交换学生姓名T=XS_XM(I) : XS_XM (I)= XS_XM (J): XS_XM (J)=TEnd IfNext JNext I‘排序的结果显示于列表框LstNewMark 中,请自行补充完成。
华北科技学院计算机学院综合性实验实验报告课程名称程序设计语言(VB)实验学期 2015 至 2016 学年第二学期学生所在系部安全工程学院年级 2015级班级安卓B151 学生姓名徐艳强学号 201510044218 任课教师李冬艳实验成绩计算机学院制《程序设计语言(VB)》课程综合性实验报告题目描述如下:在“数学运算”窗体上有一个名称为cmd1、标题为“计算”的命令按钮;两个水平滚动条,名称为hs1和hs2,其max属性均为100,min属性为1;四个标签,名称为lab1、lab2、lab3和lab4,标题分别为“运算数1”、“运算数2”、“运算结果”和空白;此外包含四个单选按钮,标题为“+”、“-”、“*”和“/”。
程序运行后,移动两个滚动条中的滚动框,用滚动条的当前值作为运算数,如果选中一个单选按钮,然后单击命令按钮,相应的计算结果将显示在label4中。
6.单击“退出”菜单,退出程序运行。
四.实验结果及分析1.菜单(1)功能主要功能就是把每个小程序串联起来,使其连续、具有整体性。
分为数组应用、控件应用、过程应用、和退出四个一级菜单。
在数组应用一级菜单下有数组操作二级菜单、控件应用一级菜单下有选择器和数学运算两个二级菜单、过程应用一级菜单下有字符转换二级菜单。
其中一级菜单中,单击退出后实现结束程序的目的,二级菜单对应每个程序,单击二级菜单会实现出现对相应的程序窗体。
(2)界面抓取(3)实现代码Private Sub 数学运算_Click()数学运算窗体.ShowEnd SubPrivate Sub 数组操作_Click()数组操作窗体.ShowEnd SubPrivate Sub 退出_Click()EndEnd SubPrivate Sub 选择器_Click()选择器窗体.ShowEnd SubPrivate Sub 字符转换_Click()字符转换窗体.ShowEnd Sub2.初始界面(1)功能人员分工介绍。
解析VBA中常用的数组函数及其实际应用VBA(Visual Basic for Applications)是一种非常流行的编程语言,广泛应用于Microsoft Office套件中的各种应用程序,如Excel、Word和Access等。
VBA的强大之处在于其丰富的函数库,其中包括很多用于处理数据的数组函数。
本文将解析VBA中常用的数组函数及其实际应用,帮助读者更好地理解和应用这些函数。
在VBA中,数组是一种特殊的变量类型,可容纳多个值,并按照特定的顺序组织。
使用数组函数可以对这些数组进行各种操作和计算,从而实现数据的处理和分析。
一、数组的声明与初始化在开始学习VBA的数组函数之前,我们首先需要了解如何声明和初始化一个数组。
在VBA中,可以使用Dim语句来声明一个数组变量,并使用Array函数或直接将值赋给数组变量来初始化数组。
例如:Dim myArray(5) As IntegermyArray = Array(1, 2, 3, 4, 5)上述代码段声明并初始化了一个包含5个元素的整型数组myArray,其中的元素依次是1、2、3、4、5。
二、数组函数的基本使用1. LBound和UBound函数在处理数组时,经常需要知道数组的下界(Lower Bound)和上界(Upper Bound)。
VBA提供了LBound和UBound函数来获取数组的边界值。
例如:Dim myArray(1 To 5) As IntegerMsgBox LBound(myArray) '输出1MsgBox UBound(myArray) '输出5上述代码中,通过指定数组的下界和上界,我们可以使用LBound和UBound 函数来获取数组的边界值。
2. Split函数Split函数用于将一个字符串分割成一个数组。
它接受两个参数:要分割的字符串和分割字符。
例如:Dim str As StringDim myArray() As Stringstr = "apple,banana,orange"myArray = Split(str, ",")上述代码中,我们将字符串str按照逗号分割,并将分割后的每个值存储到myArray数组中。
解读VBA中常用的数组操作函数及其实际应用VBA是一种用于编写宏的编程语言,它在Excel等Office应用程序中得到广泛应用。
数组是在VBA中常用的数据结构,它能够存储多个数据项,并以索引进行访问。
在实际应用中,我们经常需要对数组进行各种操作,以达到我们的需求。
在本文中,我们将解读VBA中常用的数组操作函数及其实际应用。
一、初始化数组在使用数组之前,我们需要先进行初始化操作,以确定数组的大小和类型。
VBA提供了多种初始化数组的方式。
1. 静态初始化静态初始化是通过在声明数组时同时指定初始值的方式来初始化数组。
例如,我们可以使用以下方式初始化一个包含5个整数的数组:Dim arr1(4) As Integerarr1 = Array(1, 2, 3, 4, 5)2. 动态初始化动态初始化是在声明数组时只指定数组的类型和大小,而不指定初始值,然后在后续步骤中为数组赋值。
例如,我们可以使用以下方式初始化一个包含5个整数的数组:Dim arr2(4) As Integerarr2(0) = 1arr2(1) = 2arr2(2) = 3arr2(3) = 4arr2(4) = 5二、访问数组元素在VBA中,我们可以使用索引来访问数组元素。
数组索引从0开始,表示数组中的第一个元素。
以下是一些常用的数组访问操作:1. 获取数组元素要获取数组中的特定元素,我们可以使用以下格式的代码:arr(index)其中,arr 是数组的名称,index 是元素的索引。
例如,要获取上面初始化的 arr1 数组的第三个元素,我们可以使用以下代码:value = arr1(2)2. 修改数组元素要修改数组中的特定元素,我们可以使用以下格式的代码:arr(index) = newValue其中,arr 是数组的名称,index 是元素的索引,newValue 是要设置的新值。
例如,要将上面初始化的 arr2 数组的第三个元素修改为 100,我们可以使用以下代码:arr2(2) = 100三、常用的数组操作函数除了基本的数组访问操作外,VBA还提供了许多有用的数组操作函数,这些函数可以帮助我们对数组进行排序、查找、过滤等操作。
VB上机实验报告详细易懂实验五数组的应用一、实验目的1.掌握一维数组的概念、定义、数组元素的引用和初始化。
2.学会用数组和程序基本控制结构实现数据的求和、求平均、求极值和排序等算法程序的设计3.加深对循环控制结构的理解和使用二、实验环境1.计算机2.Visual Basic 6.0开发环境三、实验说明1.熟练运用Visual Basic 6.0开发环境2.熟悉建立VB应用程序的步骤3.学会使用一维数组实现简单的应用程序四、实验内容和步骤1.实验内容随机产生10个两位整数,找出其中的最大值、最小值和平均值。
2.实验步骤(1)打开计算机,在Visual Basic 6.0系统环境下,选择“文件”菜单中的“新建工程”菜单选项,打开“新建工程”窗口;(2)在“新建工程”窗口按下“确定”按钮打开“工程设计”窗口;(3)在“工程设计”窗口,首先设计窗口的属性,然后打开“工具箱”窗口添加所需控件,设计该实验的界面;(4)选择“视图”菜单中的“代码窗口”菜单选项,打开“代码窗口”窗口,设计命令按钮控件的事件代码;考虑到要在不同的过程中使用数组,所以首先在模块的通用段中声明数组:Dim a(1 To 10) As Integer随机整数的生成由窗体的Load事件代码完成:Private Sub Form_Load( )Dim p As StringRandomizep = ""For i = 1 To 10a(i) = Int(Rnd * 90) + 10p = p & Str(a(i)) & ","NextLabel1.Caption = L Trim(Left(p, Len(p) – 1))End Sub求最大、最小以及平均值由“确定”按钮Command2的Click事件代码完成:Private Sub Command2_Click( )Dim n As Integer, m As Integer, s As Singlemin = 100: max = 10: s = 0For i = 1 To 10If a(i) > n Then max = a(i)If a(i) < m Then min = a(i)s = s + a(i)NextText1.Text = maxText2.Text = minText3.Text = s / 10End Sub“重置”按钮Command1的Click事件代码:Private Sub Command1_Click( )Form_LoadText1.Text = ""Text2.Text = ""Text3.Text = ""End Sub最后是“关闭”按钮Command3的Click事件代码:Private Sub Command3_Click( )Unload MeEnd Sub(5)运行程序,观察结果;(6)保存窗体,保存工程。
实验五数组一、控件属性的设置 (滚动条)1、在名称为Forml的窗体上添加一个名称为H1水平滚动条,请在属性窗口中设置它的属性值,满足下列要求:它的最小刻度值为1,最大刻度值为100,在程序运行时鼠标单击滚动条上滚动框以外的区域(不包括两边按钮),滚动框移动10个刻度。
再在滚动条下面画两个名称分别为L1、L2的标签,并分别显示1、100,运行时的窗体如图5-1所示。
工程文件名保存为sy5-1.vbp,窗体文件名为sy5-1.frm。
2、在名称为Form1的窗体上添加一个名称为HS1的水平滚动条,其刻度值范围为1 -100;添加一个命令按钮,名称为C1,标题为"移动滚动框"。
请编写适当的事件过程,使得在程序运行时,每单击命令按钮一次(假定单击次数不多于10次),滚动框向右移动10个刻度。
程序运行时的窗体如图5-2所示。
要求程序中不得使用变量,事件过程中只能写一条语句。
工程文件名保存为sy5-2.vbp,窗体文件名保存为sy5-2.frm。
3、在名称为Form1的窗体上画一个图片框,其名称为Picture1、一个水平滚动条,名称为HScroll1,和一个命令按钮,名称为Command1,标题为"设置属性",通过属性窗口在图片框中装入一个图形(文件名为pic1.jpg,位于考生目录下),图片框的高度与图形的高度相同,图片框的宽度任意(如图1所示)。
编写适当的事件过程,程序运行后,如果单击命令按钮,则设置水平滚动条的如下属性:Min 100Max 1500LargeChange 100SmallChange 10之后就可以通过移动滚动条上的滚动块来放大或缩小图片框。
程序运行后的窗体如图5-3所示。
要求程序中不得使用任何变量。
工程文件名为sy5-3.vbp,窗体文件名为sy5-3.frm。
4、在控件属性1文件夹下有一个工程文件sy5-4.vbp,窗体上有一个圆和一个矩形,还有水平和垂直滚动条各一个。
台州学院《VB程序设计》实验报告实验五:数组班级:11物理学号:1130010009姓名:廖建旭实验日期:2012.04.13一、实验目的和要求1.掌握数组的声明、数组元素的引用;2.掌握静态数组和动态数组的使用差别;3.应用数组解决与数组有关的常用问题。
二、实验主要仪器和设备计算机一台,Windows XP操作系统,V isual Basic环境。
三、实验内容实验5.1 输入10个数给x数组,找出其中值为最大的元素并将其与第一个元素互换,找出值最小的元素并将其与最后一个元素互换,其他元素不动。
如原来:8,7,9,15,0,3,-8,19,31,5输出:31,7,9,15,0,3,5,19,8,-8实验5.2 编写事件过程Command1_Click,完成下列运算:(1)输入10个数到整型数组a;(2)将a(1)各位数字和赋值到b(1)、a(2)各位数字和赋值到b(2)、...、a(10)各位数字和赋值到b(10);(3)在窗体上以一行输出a数组各元素值(保持原输入值不变);(4)在窗体上以一行输出b数组各元素值。
实验5.3利用随机函数产生30个不同的三位正整数,打印出这30个数,然后将它们按从大到小的次序排序,并打印出排序后的结果。
实验5.4(选做)输入n后,再输入n个数a1,a2,…,an,按照下列公式计算s的值并显示。
四、实验原始纪录实验5.1程序的界面设计。
程序代码。
Private Sub Command1_Click()Dim a(10) As Integer, i As Integer, m As Integer, n As IntegerDim x As Integer, y As Integerx = 1: y = 1Print "原数组:"For i = 1 To 10a(i) = InputBox("请输入第" & i & "个数")m = a(1): n = a(1)If m < a(i) Thenm = a(i): x = iEnd IfIf n > a(i) Thenn = a(i): y = iEnd IfNext iPrintPrint "乾坤大挪移后:"a(x) = a(1): a(1) = mIf y = 1 Then y = xa(y) = a(10): a(10) = nFor i = 1 To 10Print a(i),Next iEnd Sub实验5.2程序的界面设计。
实验五数组的练习一、实验目的:1、掌握数组的声明、赋值和使用方法;2、掌握自定义数据类型的声明和使用方法。
二、实验内容:要求:1、定义一个数组,,包含职工工号、姓名、工资三项内容,职工总人数由键盘输入,工号、姓名、工资由文本框内容读入。
2、单击“添加”按钮,添加一个职工的信息显示在Picture1中,总人数不能超过由键盘输入的职工人数,否则弹出提示框,提示“人数已达要求,不需再次输入”。
3、单击“排序”按钮,将职工信息按工资递减的顺序排列,并输出到Picture2中显示。
提示:1、由于所要表示的职工人数不定,所以需要定义一个动态数组。
2、所定义的动态数组可以是自定义类型。
首先在通用声明段定义一个用户自定义数据类型,然后定义动态数组为该用户自定义类型。
3、按工资递减排列可使用冒泡法,参照课本例题。
二、实验过程:1、设计用户界面并设置属性:打开VB软件,利用左边工具箱上的Label、Command、Text 等控件图标,在中间的窗体上建立相应的控件对象,并进行相关属性的设置:(1)Label1: 在窗体上建立一个新的Label1的标签控件。
属性“Caption”里面设置为“工号”,“Font”里面设置为“宋体,粗体,四号”;(2)Label2: 在窗体上建立一个新的Label2的标签控件。
属性“Caption”里面设置为“姓名”,“Font”里面设置为“宋体,粗体,四号”;(3)Label3:在窗体上建立一个新的Label3的标签控件。
属性“Caption”里面设置为“工资”,“Font”里面设置为“宋体,粗体,四号”。
(4)Text1:在窗体上建立一个新的Text1的文本控件。
属性“Text”里面设置为无;(5)Text2:在窗体上建立一个新的Text2的文本控件。
属性“Text”里面设置为无;(6)Text3:在窗体上建立一个新的Text3的文本控件。
属性“Text”里面设置为无;(7)Label4: 在窗体上建立一个新的Label4的标签控件。
VBA中数组的应用与操作技巧在VBA编程中,数组是一种强大的数据结构,它可以存储多个相关的数据项,并且可以通过索引来访问和操作这些数据项。
了解和掌握VBA中数组的应用与操作技巧,将极大地提高编程效率和代码可读性。
本文将介绍一些常用的VBA数组操作技巧,帮助读者更好地理解和使用数组。
一、声明和初始化数组在VBA中,可以通过以下方式来声明和初始化数组:1. 静态声明:指定数组的大小和类型,如以下示例所示:```Dim myArray(5) As Integer```这个声明创建了一个包含6个元素的整型数组。
2. 动态声明:不指定数组大小,而是在运行时为数组分配空间,如以下示例所示:```Dim myArray() As DoubleReDim myArray(10)```这个声明创建了一个可变大小的双精度数组。
3. 多维数组:可以使用多个维度来表示不同的数组,如以下示例所示:Dim matrix(1 To 3, 1 To 3) As String```这个声明创建了一个3x3的字符串数组。
二、访问和操作数组元素1. 通过索引访问数组元素:可以使用索引来访问数组中的特定元素,如以下示例所示:```MsgBox myArray(0)```这个示例显示了数组myArray中的第一个元素(索引为0)。
2. 修改数组元素的值:可以通过索引来修改数组中特定元素的值,如以下示例所示:```myArray(1) = 10```这个示例将数组myArray中的第二个元素(索引为1)的值修改为10。
三、数组的遍历和操作1. 循环访问数组元素:可以使用For循环或者For Each循环来遍历数组中的所有元素,如以下示例所示:For i = LBound(myArray) To UBound(myArray)MsgBox myArray(i)Next i```这个示例使用For循环遍历数组myArray的所有元素,并在每次循环中显示数组元素的值。
实验名称:VB程序设计实验类别:课程上机适用专业:计算机科学与技术姓名:徐申毅实验报告一、内容数组及应用二、目的(1)掌握一维数组和二维数组的定义及引用方法(2)掌握动态数组的定义和使用(3)能应用数组解决一些常见问题,如复杂统计,平均值,排序和查找等。
三、设计思路(1)首先定义一个一维数组生成10个二位数,假设第一个数为最大数,让第二个数与第一个数比大小,若大于,则交换值,循环至最后一个数,求出最大值,然后求和算出平均值,用选择法进行排序,Private Sub cmdinsert_Click() '数据插入,x = Val(InputBox("输入要插入的数据:")),将新的数组进行排序。
(2)定义二维数组,i为行数,j为列数;n为输出的行数,'第一列和主对角线为1s(i, 1) = 1,s(i, i) = 1;For i = 3 To n For j = 2 To i - 1,s(i, j) = s(i - 1, j - 1) + s(i - 1, j)实现每一个数等于它上面一行的同一列与前一列数之和。
(3)定义动态数组,ReDim Preserve a(n) '动态存储数组a增加1个元素,前n-1个元素值保持不变。
然后用冒泡法对数组中的元素进行排序,输出排序后的结果。
四、源程序Option Base 1Option ExplicitDim a(11) As Integer ' 定义数组Private Sub cmdcreat_Click() '产生的一维数组Dim i As IntegerPicture1.ClsPicture1.Print "产生的一维数组为:"RandomizeFor i = 1 To 10a(i) = Int(Rnd * 20 + 10)Picture1.Print a(i);Next iPicture1.PrintEnd SubPrivate Sub cmdmax_Click() '求最大元数及所在的位置Dim max As Integer, p As Integer, i As Integermax = a(1) ' 假设第一元素就是最大元素p = 1For i = 2 To 10If a(i) > max Thenmax = a(i)p = iEnd IfNext iPicture1.PrintPicture1.Print "第" & p; " 个元素" & a(p) & " 为最大元素" End SubPrivate Sub cmdave_Click() '计算平均值Dim ave As Single, i As IntegerFor i = 1 To 10ave = ave + a(i)Next iave = ave / 10Picture1.PrintPicture1.Print "产生的随机数平均值为:" & aveEnd SubPrivate Sub cmdsort_Click() '使用选择法排序Dim i%, j%, p%, t%For i = 1 To 9p = iFor j = i + 1 To 10If a(p) > a(j) Then p = jNext jt = a(i): a(i) = a(p): a(p) = tNext iPicture1.PrintPicture1.Print "排序后的一维数组为:"For i = 1 To 10Picture1.Print a(i);Next iPicture1.PrintEnd SubPrivate Sub cmdinsert_Click() '数据插入Dim x%, p%, i%x = Val(InputBox("输入要插入的数据:"))p = 1Do While x > a(p) And p <= 10p = p + 1LoopFor i = 10 To p Step -1a(i + 1) = a(i)Next ia(p) = xPicture1.PrintPicture1.Print "插入后的一维数组为:"For i = 1 To 11Picture1.Print a(i);Next iEnd SubPrivate Sub Command1_Click()Dim s() As Integer, i%, j%, n%Form1.Clsn = Val(Text1)ReDim s(n, n)'第一列和主对角线为1For i = 1 To ns(i, 1) = 1s(i, i) = 1Next iFor i = 3 To nFor j = 2 To i - 1s(i, j) = s(i - 1, j - 1) + s(i - 1, j)Next jNext i'打印杨辉三角For i = 1 To nFor j = 1 To i' 让每个数据占4列输出Print Spc(4 - Len(Str(s(i, j)))); s(i, j);Next jPrintNext iEnd SubDim a() As String, n%Private Sub Text1_KeyPress(KeyAscii As Integer)Dim i As Integer, j As Integer, k As Integer, t As StringIf KeyAscii = 13 Thenn = n + 1ReDim Preserve a(n) '动态存储数组a增加1个元素,前n-1个元素值保持不变。
实验4:编写一个程序。
要求在窗体内设置7个标签(Label)及7个文本框(TextBox),将每个标签的Text属性值设置为如下表达式。
在程序运行时,单击窗体空白区,可在对应的文本框中输出这些表达式的值。
1)8*3*6\22)7/6*3.2/2.15*(5.5+3.5)3)34\4+4.0^5/124)65\3 mod 3.4*fix(3.8)5)“abg”+”34” & “erert”6)true or not (8+3>=23)7)7>2 or 4<9实验目的:学习VB运算符的使用。
Public Class Form1Private Sub Form1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.ClickTextBox1.Text = 8 * 3 * 6 \ 2TextBox2.Text = 7 / 6 * 3.2 / 2.15 * (5.5 + 3.5)TextBox3.Text = 34 \ 4 + 4.0 ^ 5 / 12TextBox4.Text = 65 \ 3 Mod 3.4 * Fix(3.8)TextBox5.Text = """abg""" + """34""" & """erert"""TextBox6.Text = True Or Not (8 + 3)>= 23TextBox7.Text = 7 > 2 Or 4 < 9End SubEnd Class实验5:编写一个程序。
设a=2,b=3,c=4,d=5,S="ABCDEFGHI]K",求下列表达式的值:(1) 5+(a+b)2(2) cos(b)(sin(a)+1) (3) 8e3ln2(4) Left(S,4) (5) Mid(S, 3,4) (6) Instr(S, "EFG")(7) Lcase(Right(S, 5)) (8) Len(Mid((S, 3)实验目的:学习VB中函数的使用。
数组应用实验报告
《数组应用实验报告》
在计算机科学领域,数组是一种非常重要的数据结构,它可以存储多个相同类型的数据,方便进行管理和操作。
在本次实验中,我们将探讨数组的应用,并通过实验报告来展示其在不同场景下的使用情况。
实验一:数组的创建和初始化
在本实验中,我们首先学习了如何创建和初始化数组。
通过编写简单的代码,我们成功创建了一个包含整数类型的数组,并对其进行了初始化。
我们发现,数组的索引是从0开始的,这意味着我们可以通过索引来访问数组中的元素。
实验二:数组的遍历和操作
接下来,我们学习了如何遍历数组并对其进行操作。
我们使用循环结构来遍历数组中的每个元素,并进行相应的操作。
我们发现,使用数组可以方便地对一组数据进行统一的处理,比如求和、平均值等操作。
实验三:多维数组的应用
在这个实验中,我们学习了多维数组的应用。
通过创建二维数组,我们可以模拟二维空间中的数据结构,比如矩阵、图像等。
我们发现,多维数组可以方便地表示复杂的数据结构,并且可以通过多重循环来对其进行遍历和操作。
实验四:数组的应用案例
最后,我们通过实际案例来展示数组的应用。
我们使用数组来实现一个简单的学生成绩管理系统,通过输入学生的成绩,然后计算平均分、最高分、最低分等统计数据。
我们发现,数组的使用大大简化了数据的管理和操作,提高了程序的效率和可维护性。
综上所述,本次实验通过实验报告展示了数组在不同场景下的应用情况。
通过学习和实践,我们深刻理解了数组的重要性和灵活性,相信在今后的编程工作中,我们将能够更加熟练地运用数组来解决实际问题。
第五章数组主要内容●数组的概念●静态数组及声明●动态数组及声明●数组的基本操作●控件数组●自定义数据类型●常用算法(二)●常见错误5.1 数组的概念1.引例若我们要求一个班100个学生的平均成绩,然后统计高于平均分的人数。
按以前简单变量的使用和循环结构相结合,求平均成绩程序段如下:aver = 0For i = 1 To 100mark = Val(InputBox("输入第" & i & " 位学生的成绩"))aver = aver + markNext iaver = aver / 100但若要统计高于平均分的人数,则无法实现。
mark是一个简单变量,存放的是最后一个学生的成绩。
从已有知识解决方法:再重复输入成绩,逐一与平均分比较。
这样带来两个问题:(1)输入数据的工作量成倍增加;(2)若本次输入的成绩与上次不同,则统计的结果不正确。
解决此问题的根本方法是:始终保持输入的数据,一次输入,多次使用,为此必须引入有关数组的内容。
2.数组的概念数组并不是一种新的数据类型,而是一组相同类型的变量的集合。
数组必须先声明后使用。
在VB中有两类数组,一类是静态(定长)数组另一类称为动态(可变长)数组。
5.2 静态数组及声明在声明数组时就确定了数组元素的个数的数组称为静态数组。
定义格式: Dim 数组名(下标1[,下标2…]) [As 类型]数组维数:定义数组是用几个下标就表示数组是几维数组,最多60维。
定义数组是下标的形式为[下界 To ] 上界省略下界则系统默认下界为0,下界上界的值必须为数值常数或常数表达式(也可含逻辑常数或数值字符串)。
数组每一维大小:上界-下界+1。
数组元素的个数(或称大小):每一维大小的乘积[例]Dim mark(1 to 100) As Integer定义数组mark为一维整型数组,其下界为1,上界为100,大小为100(即mark有100个元素)。
《Visual Basic 6.0程序设计》实验报告(五)
一、实验名称:数组的应用(4学时)
二、实验目的:
1.掌握数组的声明和数组元素的引用;
2.掌握静态数组和动态数组的声明和使用;
3.学会应用数组解决与数组有关的常用算法问题;
4.掌握控件数组的建立和应用。
三、实验环境
多媒体计算机WindowsXP操作系统Visual Basic 6.0
四、实验内容及实验步骤(或记录)
1.输入10名同学的成绩,求平均分、最高分和最低分。
设计步骤如下:
①在窗体上添加3个标签(Label1、Label2和Label3)和3个文本框(Text1、Text2和Text3),设计界面如图7.2所示。
各控件的主要属性和作用如表1所示。
控件的属性和作用
②编写程序代码如下:
Private Sub Command1_Click()
Dim Score(1 To 10) As Integer '声明存放成绩的数组Score
Dim i As Integer,Max As Integer,Min As Integer,Average As Single
For i = 1 To 10 '逐一输入每个同学的成绩
Score (i) = Val (InputBox ("输入第" & Str(i)& "个学生的成绩","成绩统计",""))
Next i
End Sub
Private Sub Command2_Click()
Dim i As Integer
Dim sum As Single, aver As Single
sum = Score (1) ' sum 用于存放总成绩,初值为数组中的第一个元素
Max = Score (1) ' 设变量Max的初值为数组中的第一个元素
Min = Score (1) ' 设变量Min的初值为数组中的第一个元素
For i = 2 To 10 ' 通过循环依次比较,求最大、最小值;求总和
If Score(i) > Max Then Max = Score(i)
If Score(i) < Min Then Min = Score(i)
sum = sum + Score(i)
Next i
aver = sum / 10 ' 求平均值
Text1.Text = Format (Average, "0.00 " ) ' 以两位小数显示平均值
Text2.Text = Max
Text3.Text = Min
End Sub
2.生成20个0到100之间的随机整数存于数组A,然后将这20个数按递增顺序排序。
方法1:选择法排序。
第l趟:找出A(1)~A(n)中最小数的位置p,将A(p)与A(1)交换,于是数组A的最小数交换到了A(1);
第2趟:找出A(2)~A(n)中最小数的位置p,将A(p)与A(2)交换,于是当前最小数即数组A的次小数交换到了A(2);
第i趟:找出A(i)~A(n)中最小数的位置p,将A(p)与A(i)交换,于是当前最小数即数组A的第i小的数交换到了A(i);
第n-1趟:找出A(n-1)~A(n)中最小数的位置p,将A(p)与A(n-1)交换,于是当前最小数即数组A的第n-1小的数交换到了A(n-1),A(n)则存放数组的最大数。
共经过了n-l趟,完成了n个数的递增排序。
图1以5个数为例,给出选择法排序过程。
A(1) A(2) A(3) A(4) A(5)
交换最小数到A(1) 1√15 11 7 8
交换最小数到A(2) 7√11 15
8
交换最小数到A(3) 8√15 11
交换最小数到A(4) 11√15√
选择法排序的实现:程序界面同例7.2,只需将第二个命令按钮(Command2)的Caption属性值改为“排序”,其Click过程改为:
Private Sub Command2_Click()
Dim A(1 To 20) As Integer,i As Integer, j As Integer, p As Integer, t As Integer
For i = 1 To 19 '外循环控制19趟比较
p = i '第i趟时,初始假定第i个元素最小
For j = i + 1 To 20 '内循环在第i~20个元素中选最小数的下标并存于p
If A(j) < A(p) Then p = j
Next j
t = A(i) '最小数A(p)与第i个元素A(i)交换A(i) = A(p)
A(p) = t
Next i
For i = 1 To 20
'数组各元素显示于Text2中Text2.Text = Text2.Text & A(i) & " "
Next i
End Sub
运行效果如图所示。
图1 选择法排序过程示意图
方法2:冒泡法排序。
第l趟:依次将A(1)~A(n)中每对相邻元素进行比较,使两数中的小数上冒、大数下沉,于是本趟结束时数组A的最大数“沉底”到了A(n);
第2趟:依次将A(1)~A(n-1)中每对相邻元素进行比较,使两数中的小数上冒、大数下沉,于是本趟结束时当前最大数即数组A的次大数“沉底”到了A(n-1);
第i趟:依次将A(1)~A(n-i+1)中每对相邻元素进行比较,使两数中的小数上冒、大数下沉,于是本趟结束时当前最大数即数组A的第i大的数“沉底”到了A(n-i+1);
第n-1趟:将A(1)~A(2)中两个元素进行比较,使两数中的小数上冒、大数下沉,于是本趟结束时当前最大数即数组A的第n-1大的数“沉底”到了A(2),A(1)则存放数组的最小数。
共经过了n-l趟,完成了n个数的递增排序。
图3以5个数为例,给出冒泡法排序过程。
图中用“√”标记的数为每一趟后的最大数,它是从其他位置交换过来的。
使用冒泡法排序只需将Command2的Click过程改为:
Private Sub Command2_Click()
Dim A(1 To 20) As Integer, i As Integer, j As Integer, p As Integer, t As Integer
For i = 1 To 19 '外循环控制19趟比较
For j = 1 To 20 - i '内循环控制A(1)~A(20-i+1)中每对相邻元素之间的比较
If A(j) > A(j + 1) Then
t = A(j) 'A(j)与A(j+1)交换
A(j) = A(j + 1)
A(j + 1) = t
End If
Next j
Next i
Text2.Text = ""
For i = 1 To 20 '数组各元素显示于Text2中
Text2.Text = Text2.Text & A(i) & " "
Next i
End Sub
A(1) A(2) A(3) A(4) A(5)
结果7 11 1 8 15√
结果7 1 8 11√
结果 1 7 8√
结果 1 7√
图3 冒泡排序过程示意图。