当前位置:文档之家› VB课后实验6答案

VB课后实验6答案

实验6 数组6-1Private Sub Command1_Click()Dim i As Integer, j As IntegerDim a(10) As Integer, t As IntegerPrint "交换前数据:"For i = 1 To 10a(i) = ……‘生成20-80之间的随机数Print ……;‘注意这里用分号,表示在一行上紧密输出各数组元素的值,‘如不用分号和逗号,则分行输出各数组元素的值。

Next iPrint ‘输出空行,表示后面的输出换到新的一行。

For i = 1 To 10 \ 2 ‘这里必须是10\2,表示交换5次,即可实现两两数据交换(第一'个和最后一个的交换,第二个和第九个的交换,以此类推)‘以下实现数据交换,必须通过第三个变量实现两两数据交换t = a(i)a(i) = a(10 - i + 1)a(10 - i + 1) = tNext iPrint "交换后数据:" ‘必须单独做循环输出数据,不能放在上面的循环里输出,因为上面循环只有5次,只能输出5个元素。

For i = 1 To 10Print ……;Next iEnd Sub6-2Private Sub Command1_Click()Dim a(10) As Integer, i As Integer, aver As IntegerDim max As Integer, imax As IntegerDim min As Integer, imin As Integer, sum As IntegerPrint "输入评委的评分"‘①输入数组元素For i = 1 To 10a(i) =……if a(i)<5 or a(i)>10 then‘出错信息‘i控制变量作何处理?endifNext i‘②输出数组元素For i=1 to 10Print ……;Next iPrint ‘换行‘③开始对数组元素进行处理imax = 1: imin = 1: sum = a(1): max = a(1) ‘imax表示最大元素的下标值,imin表示最小元素的下标值,max变量表示最大值,sum表示元素和变量。

min = a(1)‘min变量表示最小值,初值一定要在循环体外赋值,不然min=0,输入的数组元素值如果都>0,那min永远都为0.For i = 2 To 10If max < a(i) Then ……‘找最大值及下标If min > a(i) Then ……‘找最小值及下标sum = ……‘求数组元素和Next i‘④输出结果aver = (sum - a(imax) - a(imin)) / 8‘求平均值aver = (sum - max - min) / 8 Print "选手的得分为:"Print averEnd Sub6-3‘通用处定义窗体级变量Option ExplicitOption Base 1Dim a(5, 5) As Integer‘定义窗体级变量,以便在下面的4个命令按钮的click 事件中使用该数组Private Sub Command1_Click()Dim i As Integer, j As Integer ‘不可以再次定义a(5,5),否则a(5,5)只能在command1中有用,在其他命令按钮事件中不起作用。

‘二维数组元素的赋值用二重循环控制For i = 1 To 5For j = 1 To 5a(i, j) = Val(InputBox("输入a(" & i & "," & j & ")的值")) ‘此写法在输入对话框中可显示数组元素的下标值。

Next jNext iEnd SubPrivate Sub Command2_Click()Dim i As Integer, j As Integer‘用二重循环控制二维数组元素的输出……Picture1.Print Mid(Str(a(i, j)) & " ", 1, 3); Spc(4); ’为了在输出时每列元素列对齐……‘用Picture1.Print输出空行……End SubPrivate Sub Command3_Click()Dim imax As Integer, max As Integer, jmax As Integer ‘imax表示最大值元素的下标,imin表示最小值元素的下标,max表示最大元素Dim sum1%, sum2%, sum3%Dim i As Integer, j As IntegerFor i = 1 To 5For j = 1 To 5If 条件 Thenmax =……: imax = ……: jmax =……End IfIf 条件 Then sum1 = ……‘i=j时,主对角线上的元素If 条件 Then sum2 = ……‘i<j时,上三角元素If 条件 Then sum3 = ……‘i>j时,下三角元素Next jNext iLabel1.Caption = "最大元素为a(" & imax & "," & jmax & ")=" & maxLabel2.Caption = "对角线元素之和为" & sum1Label3.Caption = "上三角元素之和为" & sum2Label4.Caption = "下三角元素之和为" & sum3End SubPrivate Sub Command4_Click()Picture1.Cls ‘清屏Label1.Caption = ""Label2.Caption = ""Label3.Caption = ""Label4.Caption = ""End Sub6-4Option Base 1Dim a() As Integer ‘定义动态数组,因为数组元素个数不确定Private Sub Form_Click()Dim i As Integer, j As Integer, p As BooleanDim n As IntegerFor i = 2 To 100p = True ‘注意True的写法,不能写出TureFor j = 2 To CInt(Sqr(i)) ‘j不能从1开始,思考一下为什么?If i Mod j = 0 Thenp = FalseExit For ‘i能被j整出,说明i已不是素数了,没必要继续执行循环,跳出循环。

End IfNext jIf p Then‘可写成if p=True Then,当P为True时说明i不被j整除,是素数。

n = ……‘用n变量累计素数的个数ReDim Preserve ……‘重新声明动态数组a()的大小,……‘将素数i赋给数组元素a(n)。

……‘输出即素数。

End IfNext i‘也可单独做循环输出数族元素a(n),即素数For i = 1 To nPrint Mid(Str(a(i)) & " ", 1, 3); Spc(4); ‘输出时列对齐If i Mod 6 = 0 Then Print ‘每行输出6个元素。

考虑在图像框中如何换行?Next iEnd Sub6-5Dim a(5, 5) As Integer, b(1 To 25) As Integer ‘定义窗体级变量,便于各个命令按钮使用该数组,注意在各命令按钮事件中不可再定义这两个数组a和b。

Private Sub Command1_Click()For i = 1 To 5For j = 1 To 5……‘给数组a各元素赋初值,同时输出各元素值Next jPicture1.Print ‘换行Next iEnd SubPrivate Sub Command2_Click()‘将二维数组转换成一维数组For i = 1 To 5For j = 1 To 5b((i - 1) * 5 + j) = a(i, j)Next jNext i‘用冒泡法或选择法对数组元素进行排序……‘输出排序后的结果For i = 1 To 25Picture2.Print ……‘输出一维数族元素b(i)If i Mod 5 = 0 Then……‘Picture2换行End IfNext iEnd SubPrivate Sub Command3_Click()Picture1.ClsPicture2.ClsEnd Sub6-6Dim a(1 To 10) As Integer‘定义窗体级变量Private Sub Command1_Click()‘给数组a各元素赋初值,同时输出各元素值For i = 1 To 10a(i) = Int((50 - 20 + 1) * Rnd) + 20Picture1.Print a(i);Next iEnd SubPrivate Sub Command2_Click()‘用冒泡法排序Private Sub Command3_Click()‘二分查找6-7Option ExplicitDim s() As String, n As Integer‘定义窗体级变量,其中s为字符数组Private Sub Command1_Click()Dim i As Integer, smax As String, imax As Integer, j As Integer Dim s1 As String‘选择排序,注意:对字符数族元素可直接排序,不必转换成整型数据。

For i = 1 To n - 1imax = iFor j = i + 1 To nIf s(j) > s(imax) Then imax = jNext js1 = s(imax)s(imax) = s(i)s(i) = s1Next iFor i = 1 To nPicture1.Print s(i)Next iEnd Sub‘如用冒泡法排序,如何编程?练习一下。

Private Sub Command2_Click()Picture1.ClsEnd SubPrivate Sub Text1_KeyPress(KeyAscii As Integer)If KeyAscii = 13 Thenn = ……‘n值加1,即数组元素个数增加1个ReDim Preserve s(n) ‘动态数组使用前必须声明s(n) = ……‘用s数组存放字符串Text1.Text = "" ‘清空文本框,便于输入下一个字符串。

相关主题