实验名称: 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 1
Option Explicit
Dim a(11) As Integer ' 定义数组
Private Sub cmdcreat_Click() '产生的一维数组
Dim i As Integer
Picture1.Cls
Picture1.Print "产生的一维数组为:"
Randomize
For i = 1 To 10
a(i) = Int(Rnd * 20 + 10)
Picture1.Print a(i);
Next i
Picture1.Print
End Sub
2
Private Sub cmdmax_Click() '求最大元数及所在的位置
Dim max As Integer, p As Integer, i As Integer
max = a(1) ' 假设第一元素就是最大元素 p = 1
For i = 2 To 10
If a(i) > max Then
max = a(i)
p = i
End If
Next i
Picture1.Print
Picture1.Print "第 " & p; " 个元素 " & a(p) & " 为最大元素" End Sub
Private Sub cmdave_Click() '计算平均值
Dim ave As Single, i As Integer
For i = 1 To 10
ave = ave + a(i)
Next i
ave = ave / 10
Picture1.Print
Picture1.Print "产生的随机数平均值为:" & ave
End Sub
Private Sub cmdsort_Click() '使用选择法排序
Dim i%, j%, p%, t%
For i = 1 To 9
p = i
For j = i + 1 To 10
If a(p) > a(j) Then p = j
Next j
t = a(i): a(i) = a(p): a(p) = t
Next i
Picture1.Print
Picture1.Print "排序后的一维数组为:"
For i = 1 To 10
Picture1.Print a(i);
Next i
Picture1.Print
End Sub
Private Sub cmdinsert_Click() '数据插入
3
Dim x%, p%, i%
x = Val(InputBox("输入要插入的数据:")) p = 1
Do While x > a(p) And p <= 10
p = p + 1
Loop
For i = 10 To p Step -1
a(i + 1) = a(i)
Next i
a(p) = x
Picture1.Print
Picture1.Print "插入后的一维数组为:" For i = 1 To 11
Picture1.Print a(i);
Next i
End Sub
Private Sub Command1_Click()
Dim s() As Integer, i%, j%, n%
Form1.Cls
n = Val(Text1)
ReDim s(n, n)
'第一列和主对角线为1
For i = 1 To n
s(i, 1) = 1
s(i, i) = 1
Next i
For i = 3 To n
For j = 2 To i - 1
s(i, j) = s(i - 1, j - 1) + s(i - 1, j) Next j
Next i
'打印杨辉三角
For i = 1 To n
For j = 1 To i
' 让每个数据占4列输出
Print Spc(4 - Len(Str(s(i, j)))); s(i, j); Next j
4
Next i
End Sub
Dim a() As String, n%
Private Sub Text1_KeyPress(KeyAscii As Integer)
Dim i As Integer, j As Integer, k As Integer, t As String
If KeyAscii = 13 Then
n = n + 1
ReDim Preserve a(n) '动态存储数组a增加1个元素,前n-1个元素值保持不变。
a(n) = Text1.Text
Text2.Text = Text2.Text + Text1.Text + Chr(13) + Chr(10)
Text1.Text = ""
Text3.Text = ""
For i = 1 To n - 1
p = i
For j = i + 1 To n
If a(p) > a(j) Then p = j
Next j
t = a(i)
a(i) = a(p)
a(p) = t
Next i
For i = 1 To n
Text3.Text = Text3.Text & a(i) & Chr(13) + Chr(10)
Next i
End If
End Sub
五、 结果
(1)随机产生10个任意的二位正整数存放在一维数组中,求数组的最大值,平均值,能实现将数据按升序排列,并且使用InputBox函数插入一个新数据,使数组仍然按升序排列,结果显示在图片框中。
(2)打印杨辉三角形(杨辉三角形为一个下三角矩阵,每一行第一个元素和主对角线上元素都为1,其余每一个数正好等于它上面一行的同一列与前一列数之和)。
(3)输入系列字符串,按升序排列输出,要求:
1:每输入一个字符串,按回车键后即把该字符串存放到数组中,并输出在 5
排序前的文本框Text2中;
2:单击“排序”命令按钮,字符数组“升序”排序,并在排序后的文本框Text3中输出。
六、 总结
本次实验让我学会了定义和使用数组解决排序,统计等问题。
6
第二篇:VB数组实验报告
实 验 报 告
( 2011 —2012 学年第 2 学期)
课程名称:计算机程序设计(VB)
姓 名:
学 院:
专 业:
年 级: 2011 级
学 号:
实 验 报 告
2012 年 4 月 17 日 第 9.10 节 综合 楼 525 号室