VB实验任务11答案
实验任务11
课程名称:程序设计基础VB
实验名称——实验十一数组(1)
一、实验目的:
1.掌握数组的声明和数组元素的引用
2.掌握定长数组使用
3.掌握一维数组的基本操作算法
二、实验内容(包括实验要求(题目)、实验步骤、程序清单、运行情况):
注意:其中每个同学
....实验1自行写结果验证,实验2-实验6发老师邮箱,尽量课上发。
实验1人工写出如下程序的运行结果,并利用单步调试工具验证执行流程和运行结果,进一步深入弄清和理解数组的访问。
(1)在窗体上画一个命令按钮(其Name属性为Command1),然后编写如下代码:
Private Sub Command1_Click()
Dim a(5) As Integer, i As Integer, t As Integer
For i = 0 To 4
a(i) = i + 1
t = i + 1
If t = 3 Then
Print a(i);
a(t - 1) = a(i - 2)
Else
a(t) = a(i)
End If
If i = 3 Then a(i + 1) = a(t - 4) : Exit For
a(4) = 1
Print a(i);
Next I
End Sub
运行程序,单击命令按钮,输出结果是。
(2)下面的事件过程执行结束后,K的值是,A(2)的值是,A(7)的值是,程序中第二个循环被执行了次,程序中第三个循环被执行了次。
Option Explicit
Option Base 1 ‘将数组的下界的默认值设为1
Private Sub Command1_Click()
Dim A(10) As Integer, i As Integer, K As Integer
For i = 1 To 10
A(i) = 1
Next i
K = 1
For K = 1 To K Step K
A(K) = 0
K = K + 2
Next K
For K = K To 10 Step -1
A(K) = K
K = K + 2
Next K
End Sub
(3)执行下面程序,单击命令按钮Command1后,数组元素A(1, 2)的值是,数组元素A(2, 2)的值是,数组元素A(3, 3)的值是。
Private Sub Command1_Click()
Dim A(3, 3) As Integer, i As Integer, j As Integer, k As Integer
Dim B
i = 3: j = 1
A(i, j) = 1
For k = 2 To 9
If i + 1 > 3 Or j + 1 > 3 Then
If j = 1 Then
i = i - 1
ElseIf A(i - 1, j - 1) = 0 Then
i = i - 1: j = j - 1
ElseIf j = 3 Then
i = i - 1
Else
j = j + 1
End If
ElseIf j = 1 Or i = 1 Then
If A(i + 1, j + 1) = 0 Then
i = i + 1: j = j + 1
Else
j = j + 1
End If
Else
If A(i - 1, j - 1) = 0 Then
i = i - 1: j = j - 1
End If
End If
A(i, j) = k
Next k
For Each B In A
Print B
Next
End Sub
实验2实验7-1随机生成12个二位正整数,分别赋值给一个3×4的数组,找出每一行中的最大元素,运行后界面如图7-6所示。(参看例7-10)
部分程序代码如下请填空。
Option Explicit
Option Base 1 ‘将数组的下界的默认值设为1
Dim a(3, 4) As Integer
Private Sub Form_Click()
Dim i As Integer, j As Integer, mmax As Integer
Randomize
Print "数组:"
For i = 1 To 3
For j = 1 To 4
a(i, j) = Int(Rnd*(99-10+1)+10)
Print a(I,j);
Next j
Next i
Print "其中:"
For i = 1 To 3
mmax = a(I,1)
For j = 2 To 4
If mmax < a(i, j) Then mmax=a(I,j)
Next j
Print "第" + Str(i) + "行中的最大元素为:"; mmax
Next i
End Sub
实验3利用数组存放Fibonacci数列的前20项,并显示输出(每4个一行)。说明:Fibonacci数列的前两项为1,从第三项开始,每项数据都等于前两项数据之和,即数列为:1,1,2,3,5,8,13,……
?图实验3运行效果
分析:像Fibonacci数列一般采用一维数组存放,根据题意可知数列中的每项数据是通过前两项数据之和推导而出,因此可依据上述规律给数组赋值,完成数组的生成。注意:输出采用标准格式,每4个一行。
实验步骤:
(1)填写程序代码,完成下列代码:
Option Explicit
Private Sub Form_Click()
Dim i As Integer, Fibo(1 to 20) As Integer
Fibo(1) = 1
Fibo(2)=1
For i = 3 To 20
Fibo(i)= Fibo(i-1)+Fibo(i-2)
Next i
Print "Fibonacci数列的前20项:"
For i = 1 To 20
Print Fibo(i),
If I mod 4=0 then print
Next i
End Sub
(2)调试程序,并保存文件。
实验4 如图所示由用户输入生成10个自然数,分别显示其中的偶数、奇数以及它们的和。
?图按下“单击输入一组自然数”按钮弹出输入对话框
?图实验9-3 运行结果
分析:采用一维数组存放用户输入的10个数据,并结合累加求和算法完成。
注意:①数组声明的位置;②文本框中单行和多行显示数据的方法
实验步骤:
(1)界面设计
在窗体上按照图所示界面排放好各个控件。
(2)属性设置
请根据程序代码,设置好各个控件对象的名称属性;请根据图设置多行文本框的MultiLine和ScrollBars属性。(3)填写程序代码,完成下列代码:
Option Explicit
Const n = 10
Dim a(1 to n) As integer‘定义数组
Private Sub CmdCreate_Click()
Dim i As Integer
Text1 = ""
For i = 1 To n
a(i) = val(Inputbox(“请输入第”, & I & “个数”,”project1”))
Text1.Text = Text1.text & a(i) & ””
Next i
End Sub
Private Sub CmdDisp_Click()
Dim I As Integer, odd As Integer, even As Integer
Txteven = "" : Txtodd = ""
even = 0 : odd = 0
For i=1 to n
If a(i) mod 2=0 Then
Txteven= Txteven & a(i) & vbcrlf
even = even + a(i)
Else
Txtodd= Txtddd & a(i) & vbcrlf
Odd=odd+a(i)
End If
Next i
Txteven = Txteven & "偶数和为" & even
Txtodd = Txtodd & "奇数和为" & odd
End Sub
(4)调试程序,并保存文件。
课外实验
实验5教材p177练习7
Option Base 1
Dim a(5, 5) As Integer, UpSum As Integer, DownSum As Integer
Private Sub CmdCal_Click()
TxtUpDown = Abs(UpSum - DownSum)
End Sub
Private Sub CmdCreate_Click()
Dim i As Integer, j As Integer
Picture1.Cls
For i = 1 To 5
For j = 1 To 5
a(i, j) = Int(Rnd * 9 + 1)
Picture1.Print a(i, j);
Next j
Picture1.Print
Next i
End Sub
Private Sub CmdDownSum_Click()
Dim i As Integer, j As Integer
DownSum = 0
For i = 1 To 5
For j = 1 To i - 1
DownSum = DownSum + a(i, j)
Next j
Next i
TxtDownSum = DownSum
End Sub
Private Sub CmdUpSum_Click()
Dim i As Integer, j As Integer
UpSum = 0
For i = 1 To 5
For j = i + 1 To 5
UpSum = UpSum + a(i, j)
Next j
Next i
TxtUpSum = UpSum
End Sub
实验6教材p177练习8
Option Base 1
Private Sub Form_Click()
Dim a() As Integer, i As Integer, j As Integer
Dim col() As Integer, max As Integer, n As Integer
n = InputBox("请输入方阵的大小:")
ReDim a(n, n), col(n)
Print n & "阶方阵:"
For i = 1 To n
For j = 1 To n
a(i, j) = Int(Rnd * 101) - 50 '产生[-50,50]闭区间内的随机整数
Print a(i, j),
Next j
Next i
For j = 1 To n
col(j) = 0 '累加器清零
For i = 1 To n
col(j) = col(j) + Abs(a(i, j)) '第j列元素绝对值求和
Next i
Next j
max = col(1): maxcol = 1 '求出各列和的最大值和所在列
For j = 2 To n
If col(j) > max Then
max = col(j): maxcol = j
End If
Next j
Print "方阵的范数(各列元素的绝对值之和中的最大值)为" & max & ",第("; maxcol & ")列"
End Sub
三、实验体会(包括对于本次实验的小结,实验过程中碰到的问题等)