totalten = totalten + ten totalfive = totalfive + five totalone = totalone + one totalsalary = ----4---- Next i
Form1.Print \共需100元\张\ Form1.Print \共需50元\张\ Form1.Print \共需10元\张\ Form1.Print \共需5元\张\ Form1.Print \共需1元\张\ Form1.Print \合计\元\End Sub
Public Sub SalaryData() salary(1) = 1398 salary(2) = 1765 salary(3) = 689 salary(4) = 1500 salary(5) = 832 salary(6) = 590 salary(7) = 1200 End Sub
9.已有一模块文件Modify.Bas。该模块中的 MaxLine 过程用于查找一个5行4列的二维数组中行平均值最大的行,并将该行所有数据调整到第一行的位置。
Modify.Bas模块中的DataProduce 过程用于产生原始数据;Average 过程用于计算各行的平均值;PrintArray过程用于打印二维数组和行平均值。 程序如下:
Dim a(1 To 5, 1 To 4) As Integer Dim ave(1 To 5) As Integer Public Sub MaxLine() Dim i As Integer Dim j As Integer Dim temp As Integer
Dim Line_no As Integer '最大平均值的行号 '找出最大平均值所在行 Line_no = 1 For i = 2 To 5
'****** 错误1 *******
If ave(Line_no) >= ave(i) Then
'****** 错误2 ******* Line_no = ave(i) End If Next i
'交换第一行与最大平均值所在行 For j = 1 To 4 temp = a(1, j)
'****** 错误3 ****** a (Line_no, j) = a(1, j) a (Line_no, j) = temp Next j
'交换对应行的平均值 temp = ave(1) ave(1) = ave(Line_no) ave(Line_no) = temp '打印交换后的数据
Form1.Print \交换后的数据和平均值\ PrintArray End Sub
Public Sub DataProduce() Dim i As Integer Dim j As Integer '产生5*4数组 For i = 1 To 5 For j = 1 To 4
a(i, j) = Int(100 * Rnd) Next j Next i End Sub
Public Sub Average() Dim i As Integer Dim j As Integer Dim sum As Integer '计算各行平均值 For i = 1 To 5 sum = 0 For j = 1 To 4
'****** 错误4 ****** sum = a(i, j) Next j ave(i) = sum / 4 Next i
'将数组和平均值打印出来 Form1.Print \原始数据和平均值\ PrintArray End Sub
Public Sub PrintArray() Dim i As Integer Dim j As Integer For i = 1 To 5 For j = 1 To 4
Form1.Print a(i, j); Spc(3); Next j
Form1.Print \平均值=\ Next i End Sub
10.已有一模块文件Modify.Bas。该模块中的 Wrap 过程用于判断一个字符串是否“回文”。所谓“回文”是指字符串顺读与倒读都是一样的,如“潮起潮落,落潮起潮”。 程序如下: Public Sub Wrap() Dim length As Integer Dim str1 As String Dim strleft As String Dim strright As String Dim k As Integer
str1 = InputBox(\请输入任意的字符串\输入任意字符串 '****错误1***** length = Val(str1) k = 1 Do
'****错误2*****
strleft = Left(str1, k) '从左边起逐个取出一个字符 '****错误3*****
strright = Right(str1, k) '从右边起逐个取出一个字符 '****错误4**** If strleft = strright Then Exit Do End If k = k + 1
Loop While k <= length / 2 If k > length / 2 Then
Form1.Print str1 & \是回文\ Else
Form1.Print str1 & \不是回文\ End If End Sub
11.已有一模块文件Modify.Bas。该模块中的BubbleSort过程是冒泡排序法;GenerateData过程产
生10个[1,20]之间互不相同的随机整数;Swap过程交换两个变量的数值。 程序如下: Private Const n = 10 Private a(1 To n) As Integer 'BubbleSort过程是冒泡排序 'Swap过程交换两个变量数值
'GenerateData过程产生10个[1,20]之间互不相同的随机整数
Public Sub BubbleSort() Dim i As Integer, j As Integer i = 1 Do
For j = i + 1 To n If a(j) > a(i) Then '******* 1 ********* Swap (a(j), a(i)) End If Next j i = i + 1 '******* 2 ******* Loop While i = n Form1.Print \排序结果\ For i = 1 To n Form1.Print a(i); Next i End Sub
Public Sub GenerateData() Dim i As Integer Dim j As Integer Dim b As Boolean For i = 1 To n b = False Do While Not b
a(i) = Int(20 * Rnd + 1) b = True '****** 3 ****** For j = 1 To i If a(i) = a(j) Then b = False Exit For End If Next j Loop
Form1.Print a(i)
Next i End Sub
'******** 4 ********
Public Sub Swap(ByVal a As Integer, ByVal b As Integer) Dim temp As Integer temp = a a = b b = temp End Sub
12.已有一模块文件Modify.Bas。该模块中的 Transfer 过程用于将一个十六进制整数转换为十进制整数;number 函数过程用于将一个十六进制符号转换为数值。 程序如下: Public Sub Transfer()
Dim Hex As String '十六进制数 Dim Dec As Double '十进制数 Dim temp As String Dim i As Integer Dim n As Integer
Hex = InputBox(\输入一个十六进制整数\ '****** 错误1 ******* n = Val(Hex) i = 0 Do
'****** 错误2 ******* temp = Mid(Hex, i, 1) '****** 错误3 ******* Dec = Dec + number * 16 ^ i i = i + 1 Loop While i < n '****** 错误4 ******
Form1.Print str(Hex) & \转换为十进制数为\End Sub
Public Function number(str As String) As Integer Select Case str Case \ number = 10 Case \ number = 11 Case \ number = 12 Case \ number = 13