Vb实验五数组的应用

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《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 冒泡排序过程示意图

相关文档
最新文档