实验十、十一 数组程序设计最终版

更新时间:2024-06-01 04:45:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验十 一维数组程序设计

1

实验十 一维数组程序设计

【实验目的】

(1)掌握一维数组的定义及初始化 (2)掌握一维数组的赋值及引用

(3)掌握一维数组的输入及输出方法及有关的算法 (4)掌握动态数组的定义和使用

(5)掌握利用赋值函数Array()为数组赋值 (6)了解掌握自定义类型的使用

【实验内容】 1、尝试编写下列程序

【10-1】求一个班10个学生的平均成绩,然后统计高于平均分的人数。程序运行界面如图10-1所示:

图 10-1 运行结果界面

源代码:

Private Sub Command1_Click() Dim score(1 To 10) As Integer Dim average!, count%, i% average = 0

For i = 1 To 10

score(i) = InputBox(\请输入第\位学生的成绩:\ average = average + score(i) Next i

average = average / 10 count = 0 For i = 1 To 10

实验十 一维数组程序设计

If score(i) > average Then count = count + 1 Next i

Print \平均分=\高于平均分的人数\End Sub

2

?举一反三

【10-1】利用InputBox函数输入十个数,求其中偶数的平均值,并求小于平均值的偶数个数。

【10-2】打印斐波那契数列的前20项(斐波那契数列是这样的一个数列:1、1、2、3、5、8、13,……,这个数列从第三项开始,每一项都等于前两项之和)。程序运行界面如图10-2所示:

图 10-2 运行结果界面

源代码: Option Base 1

Private Sub Command1_Click() Dim f(20) As Integer

Dim i As Integer

Text1.text= \ f(1) = 1 f(2) =1 For i = 3 To 20 f(i) = f(i - 1) + f(i - 2) Next i For i = 1 To 20

Text1.Text = Text1.Text + Str(f(i)) If i Mod 5 = 0 Then

实验十 一维数组程序设计

Text1.Text = Text1.Text + vbCrLf ?vbCrLf相当于chr(13)+chr(10) End If Next i End Sub

3

?举一反三

【10-2】打印斐波那契数列前20项中的奇数,每5个数占一行。已知前两项的值都为1。 【10-3】利用InputBox函数输入10个整数,求出这10个整数中的最大值以及它的下标。程序运行界面如图10-3所示:

图 10-3 运行结果界面

源代码:

Private Sub Command1_Click() Dim a(1 To 10) As Integer Dim i%, max%, imax%

For i = 1 To 10

a(i) = InputBox(\请输入第\个数\Next i max = a(1) imax = 1

For i = 2 To 10 If a(i) > max Then max = a(i) imax = i

End If Next i

Print \最大的数是\,下标为\End Sub

?举一反三

【10-3】随机产生10个1~10之间的整数,求出这10个整数中的最小值以及它出现的次

实验十 一维数组程序设计

数。

4

【10-4】利用inputbox函数输入10个数,对这10个数用冒泡法进行降序排序。程序运行界面如图10-4所示:

图 10-4 运行结果界面

源代码:

Private Sub Command1_Click()

Dim a(9) As Integer

Dim i As Integer, j As Integer, t As Integer Print “排序前:”

For i = 0 To 9 a(i) = Val(inputbox(“输入”)) print a(i); Next i print

For i = 0 To 8

For j = 0 To 8 - i If a(j) < a(j + 1) Then

t = a(j): a(j) = a(j + 1): a(j + 1) = t End If Next j Next i

Print “排序后:” For i = 0 To 9 Print a(i); Next i End Sub

?举一反三

实验十 一维数组程序设计

【10-4】随机产生10个100以内的正数,对这10个数用冒泡法进行升序排序。

5

【10-5】利用inputBox函数输入10个数,对这10个数用选择法进行升序排序。程序运行界面如图10-5所示:

图 10-5 运行结果界面

源代码:

Private Sub Command1_Click()

Dim a(9) As Integer

Dim i As Integer, j As Integer, t As Integer, p As Integer Print \排序前:\

For i = 0 To 9 a(i) = Val(InputBox(\输入\Print a(i); Next i Print

For i = 0 To 8 p = i

For j = i + 1 To 9 If a(p) > a(j) Then p = j End If

Next j

t = a(i): a(i) = a(p): a(p) = t Next i

Print \排序后:\For i = 0 To 9 Print a(i); Next i End Sub

实验十 一维数组程序设计

6

?举一反三

【10-5】随机产生10个100以内的正数,对这10个数用选择法进行降序排序。

2、程序填空

(1)随机产生10个两位数的随机数,赋给数组a,然后求各元素之和、平均值,将比平均值大的各元素的值打印出来,最后找出数组中的最大值及其元素下标并打印。运行结果界面如图10-6所示。

10-6运行结果界面

源代码:

Private Sub Command1_Click()

Dim sum, average, max, p, a(10) As Integer Randomize

For i = 0 To 9

a(i) = 【1】 Print a(i); Next i Print sum = 0

For i = 0 To 9

【2】

Next i

average = sum / 10

Print \各元素累加和=\平均值=\Print \比平均值大的各元素的值依次为:\For i = 0 To 9

If a(i) > average Then Print a(i); Next i Print

【3】 p = 0

For i = 0 To 9

实验十 一维数组程序设计

If a(i) > max Then

【4】 p = i End If

Next i

Print \最大值为:\其元素下标为:\

7

End Sub

(2)利用InputBox函数输入十个数,然后输入要查找的数,如果找到了,输出该数的位置,如果没有找到给出提示。运行结果界面如图10-7所示。

10-7 运行结果界面

源代码:

Private Sub Form_Click() Dim x, a(1 To 10) As Single

Dim i As Integer For i = 1 To 10

a(i) = InputBox(\请输入第\个数\ print a(i);

Next i

x = InputBox(\请输入要查找的数\Print \要查找的数是\

For i = 1 To 10

If 【1】 Then

MsgBox \要查找的数是第\个数\ 【2】 End If Next i

If 【3】 Then MsgBox \没有找到\End If End Sub

实验十 一维数组程序设计

所示:

8

(3)随机输入包含10个元素的一维数组,首尾互换,然后输出。程序运行界面如图10-8

图 10-8 运行结果界面

源代码:

Option Base 1

Dim a(10) As Integer

Private Sub Command1_Click() Dim i As Integer

For i = 1 To 10

a(i) = InputBox(\请依次输入数组元素:\Next i

For i = 1 To 10

Text1.Text = Text1.Text + Str(a(i)) + \Next i End Sub

Private Sub Command2_Click() Dim i, t As Integer,n% n=Ubound(a) For i = 1 To n\\2 t = a(i) a(i) = ________ _________ = t Next i For i = 1 To 10

Text2.Text = Text2.Text + Str(a(i)) + \

Next i End Sub

(4)用Array函数建立一个含有8个元素的数组,然后查找并输出该数组中各元素的最

小值。填空:

实验十 一维数组程序设计

源代码:

Option Base 1

Private Sub Command1_Click() Dim arr1

Dim Min As Integer, i As Integer

arr1 = Array(12, 435, 76, -24, 78, 54, 866, 43) Min =【1】

For i = 2 To 8

If arr1(i) < Min Then 【2】 Next i

Print \最小值是:\

End Sub

(5)随机产生n个[5,17]之间的数,输出它们的平均值运行结果如图10-9所示。

9

10-9 运行结果界面

原代码:

Option Base 1

Private Sub Command1_Click() Dim f() As Integer, ave As Single Dim i As Integer, n As Integer ave = 0 n = Val(InputBox(\ 【1】f(n) For i = 1 To n

f(i) = Int(Rnd * 13 + 5) Print f(i); ave = ave + f(i) Next i

Print

Print \平均值=\/n

End Sub

(6)写出下面程序的运行结果________

实验十 一维数组程序设计

源代码:

Private Sub Command1_Click() Dim a(5) As String For i = 1 To 5

a(i) = Chr(Asc(\ Next i For Each b In a Print b; Next

10

End Sub

(7)窗体上有一个名称为Text1的文本框,一个名称为Command1的命令按钮。程序运行时,在键盘上输入4,结果为_______ 源代码: Private Type x a As Integer b As Integer End Type

Private Sub Command1_Click() Dim y As x

y.a = InputBox(\ If y.a \\ 2 = y.a / 2 Then

y.b = y.a * y.a Else

y.b = Fix(y.a / 2) '去掉小数部分取整 End If

Text1.Text = y.b End Sub

实验十 一维数组程序设计

11

实验十一 二维数组程序设计

【实验目的】

(1)掌握动态数组的定义和使用方法

(2)掌握二维数组的定义、赋值和输入输出方法 (3)掌握有关二维数组的一些常用算法 (4)掌握控件数组建立的方法及应用

【实验内容】 1、尝试编写下列程序

【11-1】找出m×n矩阵中最大的那个元素所在的行和列,输出其值及行号和列号。程序运行结果界面如图11-1所示:

11-1 运行结果界面

源代码:

Private Sub Form_Click() Dim a() As Integer

Dim m, n, col, max, row As Integer Dim i, j As Integer m = Val(InputBox(\请输入矩阵的行数\n = Val(InputBox(\请输入矩阵的列数\ReDim a(m, n) For i = 1 To m

For j = 1 To n a(i, j) = Val(InputBox(\请输入数组第\行第\列元素值\ Next j

Next i

Print \所建立的矩阵为:\For i = 1 To m For j = 1 To n Print a(i, j); Next j Print Next i

max = a(1, 1) col=1 row=1

实验十 一维数组程序设计

For i = 1 To m

For j = 1 To n

If a(i, j) > max Then max = a(i, j) col = j row = i End If Next j Next i

Print

Print \矩阵最大的元素的值为:\Print \他所在的行号为:\列号为:\End Sub

12

?举一反三

【11-1】随机生成一个3×4矩阵,元素值为[80,100]之间的数,求所有元素的平均值并输出。 【11-2】随机生成一个5行4列的矩阵,元素值为[1,10]之间的数,求每一行的和值并输出。运行结果如图11-2所示。

11-2运行结果界面

源代码:

Private Sub Command1_Click()

Dim a(1 To 5, 1 To 4) As Integer, i As Integer, j As Integer Dim sum As Integer For i = 1 To 5 For j = 1 To 4

a(i, j) = Int(Rnd * 10 + 1) Print a(i, j); Next j Print Next i Print For i = 1 To 5

实验十 一维数组程序设计

sum = 0

For j = 1 To 4

sum = sum + a(i, j) Next j

Print \第\行的和值是:\Next i End Sub

13

?举一反三

【11-2】随机生成一个5行4列的矩阵,元素值为[1,10]之间的数,输出每一列的和值。 【11-3】随机生成一个4行5列的矩阵,元素值为[10,99]之间的数,交换矩阵第1列和第5列的数据后,输出该矩阵。

11-3 运行结果界面

源代码:

Private Sub Command1_Click()

Dim a(1 To 4, 1 To 5) As Integer, i As Integer, j As Integer Dim t As Integer

Print \输出初始数组:\ For i = 1 To 4 For j = 1 To 5

a(i, j) = Int(Rnd * 90 + 10) Print a(i, j); Next j Print Next i

For i = 1 To 4 t = a(i, 1) a(i, 1) = a(i, 5) a(i, 5) = t

Next i

Print \输出交换后的数组:\ For i = 1 To 4

实验十 一维数组程序设计

For j = 1 To 5 Print a(i, j); Next j Print Next i End Sub

14

?举一反三

【11-3】随机生成两个4行5列的矩阵,元素值为[10,99]之间的数,交换矩阵第1行和第4行的数据。

【11-4】求3×3矩阵中主对角线元素之和。元素值为行、列下标之和,行、列下标都从1开始。程序运行结果界面如图11-4所示:

11-4 运行结果界面

源代码:

Private Sub Command1_Click() Dim a(1 to 3, 1 to 3) As Integer s = 0

For i = 1 To 3 For j = 1 To 3 a(i, j) = i + j Next j Next i

For i = 1 To 3 For j = 1 To 3 Print a(i, j); Print Space(5); Next j Print Next i

For i = 1 To 3

s = s + a(i, i) Next i

Print \矩阵主对角线元素之和=\End Sub

?举一反三

【11-4】求3×3矩阵中辅对角线元素之和。元素值为行、列下标之和,行、列下标都从1

实验十 一维数组程序设计

开始。。

15

【11-5】生成一个随机的5×5矩阵,元素值为[0,10)之间的数,将该矩阵位于主对角线下方的所有元素都赋值为1。程序运行结果界面如图11-5所示:

11-5 运行结果界面

源代码:

Private Sub form_Click() Dim a(1 To 5, 1 To 5) As Integer Print \输出初始数组:\ For i = 1 To 5 For j = 1 To 5

a(i, j) = Int(Rnd() * 10) Print a(i, j); Next j Print Next i For i = 1 To 5 For j = 1 To i

a(i, j) = 1 Next j Next i

Print \输出变化后的数组:\ For i = 1 To 5 For j = 1 To 5 Print a(i, j); Next j Print Next i End Sub

?举一反三

【11-5】生成一个随机的5×5矩阵,元素值为[0,10)之间的数,将该矩阵的位于辅对角线上方的所有元素赋值为0。

【11-6】利用文本框控件数组生成如图所示图形。程序运行结果界面如图11-6所示:

实验十 一维数组程序设计

16

11-6 运行结果界面

源代码:

Private Sub Form_Click() Dim i As Integer For i = 1 To 5 Load Text1(i) Text1(i).Visible = True

Text1(i).Left = Text1(0).Left + Text1(0).Width * i Text1(i).Top = Text1(0).Top + Text1(0).Height * i Next i End Sub

【11-7】按图设计窗体,其中一组(共六个)单选框构成控件数组,要求当单击某个单选框时,能改变文本框中文字的大小。程序运行结果界面如图11-7所示:

11-7 运行结果界面

源代码:

Private Sub Form_Load() Option1(0).Value = True Text1.FontSize = 10 End Sub

Private Sub Option1_Click(Index As Integer) Select Case Index Case 0

Text1.FontSize = 10 Case 1

Text1.FontSize = 12 Case 2

实验十 一维数组程序设计

Text1.FontSize = 14 Case 3

Text1.FontSize = 16 Case 4

Text1.FontSize = 20 Case 5

Text1.FontSize = 30 End Select End Sub

17

2、程序填空

(1)编写程序,输出杨辉三角形的前n行。运行结果界面如图11-8所示。

11-8 运行结果界面

源代码:

Option Base 1

Private Sub Form_Click() Dim a(20, 20) As Integer Dim i%, j%, k%, n% n = Val(Text1.Text) For i = 1 To n a(i, 1) = 1

【1】 Next i

For i = 3 To n

For j = 2 To i - 1

【2】 Next j Next i

For i = 1 To n

For j = 1 To i

【3】 Next j Print Next i End Sub

(2)随机生成一个3行3列的矩阵,生成的值在[0,50)之间,将生成的矩阵转置。程序运行结果界面如图11-9所示:

实验十 一维数组程序设计

18

11-9 运行结果界面

源代码:

Private Sub Command1_Click() Randomize

Dim a(1 To 3, 1 To 3) As Integer,b(1 To 3, 1 To 3) As Integer Dim i, j, t As Integer Print \转置前矩阵:\For i = 1 To 3 For j = 1 To 3

a(i, j) = Int(Rnd() * 50) + 10 Print a(i, j); Next j Print Next i For i = 1 To 3

For j = 1 To 3

_____【1】______ Next j Next i

Print \转置后矩阵:\For i = 1 To 3 For j = 1 To 3 Print b(i, j); Next j Print

Next i End Sub

(3)求4×5矩阵中周边元素之和,元素值是行、列之和,行、列下标都从1开始。运行结果如图11-10所示。

11-10 运行结果界面

源代码:

Option Base 1

实验十 一维数组程序设计

Private Sub Form_Click() Dim a(4, 5) As Integer s = 0

Print \输出数组:\For i = 1 To 4 For j = 1 To 5 a(i, j) = i + j Print a(i, j); Next j Print Next i

For i = 1 To 4

For j = 1 To 5

________【1】____________ Then s = s + a(i, j) End If

Next j Next i

Print \矩阵外侧元素之和=\

19

End Sub

(4)编写一程序,建立并输出一个5×5的矩阵,该矩阵两条对角线上元素均为1,其余均为2,并打印该矩阵。程序运行结果界面如图11-11所示:

11-11 运行结果界面

源代码:

Private Sub Form_Click() Dim a(5, 5) As Integer Dim i, j As Integer

For i = 1 To 5 For j = 1 To 5

If________【1】_________Then a(i, j) = 1 Else a(i, j) = 2 End If Print a(i, j); Next j Print

实验十 一维数组程序设计

Next i End Sub

20

本文来源:https://www.bwwdw.com/article/g0k6.html

Top