' 找出30个数中数值大于平均值的数据,并统计出这些数据的个数 Dim x(30) As Integer
Dim sum As Integer, ave As Integer '平均值取整数 Dim i As Integer
Dim count As Integer '在平均值之上的数据个数 Randomize
For i = 1 To 30
x(i) = Int(Rnd * 100) + 1 Next i sum = 0
For i = 1 To 30
sum = ---------1--------- Next i
ave = --------2---------
'5个一行打印出原始数据,打印平均值 For i = 1 To 30
Form1.Print x(i); Space(2); If i Mod 5 = 0 Then Form1.Print Next i
Form1.Print \平均值:\
'找出并5个一行打印在平均值之上的数据,打印统计的个数 Form1.Print \在平均值之上的数据是:\ For i = 1 To 30
If x(i) > ave Then
---------3---------
Form1.Print x(i); Space(2);
If ------4-------- Then Form1.Print End If Next i
Form1.Print
Form1.Print \共有\个在平均值之上.\End Sub
程序调试22
Option Explicit Public Sub Del()
'该过程从一个含有10个数组元素的数组中删除一个指定的数据,若该数据不存在,则给出提示。 '先产生10个[1,100]的随机整数
'从键盘上输入一个数,将该数从数组中删除 Randomize
Dim x As Integer Dim a() As Integer
Dim i As Integer, pos As Integer ReDim a(10) As Integer For i = 1 To 10
a(i) = Int(Rnd * 100) + 1
38
Next i
Form1.Print \原始数据:\ For i = 1 To 10
Form1.Print a(i); \ Next i
Form1.Print
x = Val(InputBox(\输入删除的数x=\ pos = 0
For i = 1 To 10
If x = a(i) Then ------1----- Exit For End If Next i
If pos <> 0 Then
For i = -----2------ To 9 -------3------- Next i
ReDim Preserve a(9) '保留原数组中的9个数 Form1.Print \删除后数据:\ For i = 1 To 9
Form1.Print a(i); \ Next i
Form1.Print Else
MsgBox \数组中未找到\删除不成功\ End If End Sub
程序调试23
Option Explicit
Public Sub countEven()
'该过程是用于统计在随机产生的10个两位整数中的偶数的个数并用消息框输出。 Dim a(10) As Integer '存放10个随机数第一个为a(0) Dim count As Integer
Dim I As Integer, n As Integer Randomize
'******错误1****** For I = 1 To 10 '*****错误2***** n = Int(Rnd * 90) a(I) = n
Form1.Print a(I)
If a(I) Mod 2 = 0 Then count = count + 1 End If
39
Next I
'*****错误3*****
msgbox(\偶数个数:\End Sub
程序调试24
Option Explicit
Public Sub sortchar()
'该过程是对字符串进行整理,
'首先从键盘上输入一个任意的字符串,将该字符串的所有组成字符拆分开, '再按照字符ASCII码从小到大的顺序将这些字符重新组成新的字符串。 '例如输入a4fkze5,重新组合的字符串为45aefkz。 Dim x As String '原始字符串
Dim y As String '重新组合的字符串 Dim c() As String '拆分出的字符 Dim k As Integer '字符串长度 Dim i As Integer, j As Integer Dim temp As String
x = InputBox(\输入一个字符串\ k = ------1------- ReDim c(k) As String '字符串拆分 For i = 1 To k
c(i) = ------2------- Next i '字符排序
For i = 1 To k - 1
For j = -------3------- If c(i) > c(j) Then temp = c(i) c(i) = c(j) c(j) = temp End If Next j Next i
'排序后的字符组成新字符串 y = \
For i = 1 To k y = y & c(i) Next i
Form1.Print \原始字符串\
Form1.Print \重新组合的字符串\End Sub
程序调试25
Option Explicit
40
Public Sub compositor()
'该过程是用于产生20个不大于1000的自然数,
'并使用选择分类法按从大到小的顺序输出,相同数不输出。 Const n = 20
Dim a(n), i, p, j, t For i = 1 To n a(i) = ----1---- Next i
For i = 1 To n - 1 p = i
For j = i To n
If a(p) < a(j) Then ----2---- Next j
If ----3---- Then t = a(i): a(i) = a(p): a(p) = t Next i
Form1.Print a(1) For i = 2 To n
If a(i) <> a(i - 1) Then Form1.Print ----4---- Next i
Form1.Print End Sub
程序调试26
Option Explicit Public Sub prt()
'该过程是输出由数字组成的如下所示杨辉三角形图案 ' 1 ' 1 1 ' 1 2 1 ' 1 3 3 1 ' 1 4 6 4 1 ' 1 5 10 10 5 1 ' 1 6 15 20 15 6 1 Const n = 8
Dim a(n + 1) As Byte, i As Integer, j As Integer Dim s As String '给数组a赋初值 For i = 1 To n + 1 a(i) = 0 Next i
'计算并打印第一个数 a(1) = 1
Form1.Print Space(2 * n + 2); '计算数字前的空格数 Form1.Print a(1)
'计算其余行的数并打印 For i = 2 To ----1----
41
a(i) = a(i - 1)
For j = ----2---- To 2 Step -1 ----3---- Next j
Form1.Print Space((n - i + 1) * 2); For j = 1 To i
s = Trim(Str(----4----))
Form1.Print Space(Int((4 - Len(s)) / 2 + 0.5)) + s + Space(Int((4 - Len(s)) / 2 + 0.5));
Next j
Form1.Print Next i End Sub
五、多维数组
程序调试27
Public Sub Transpose()
'该过程用于产生一个6×6的转置矩阵,将二维数组中所有行和对应列的元素进行交换。 Dim a(1 To 6, 1 To 6) As Integer Dim i As Integer, j As Integer Form1.Print \原始数据\ For i = 1 To 6 For j = 1 To 6
a(i, j) = Int(Rnd * 10) Form1.Print a(i, j); Next j
Form1.Print Next i
For i = 2 To 6
For j = 1 To ----- 1 ----- ------ 2 ----- Next j Next i
Form1.Print \转置后数据\ For i = 1 To 6 For j = 1 To 6 ----- 3 ----- Next j
Form1.Print Next i End Sub
Public Sub Swap(a As Integer, b As Integer) Dim temp As Integer temp = a a = b
42