当前位置:编程学习 > VB >>

VB编程-数组排序问题

产生30个两位随机整数,并按从小到大的顺序存入数组A中,再将其中的奇数按从大到小的顺序在窗体中用紧凑格式输出
答案:
Option Base 1
Dim a(30) As Integer
Dim b()

Private Sub Command1_Click()
For i = 1 To 30
a(i) = Int(Rnd * 90 + 10)
Next i
End Sub
Private Sub command2_click()
For i = 1 To 30
For j = i To 29
If a(i) > a(j + 1) Then
t = a(i)
a(i) = a(j + 1)
a(j + 1) = t
End If
Next j
Next i
End Sub
Private Sub command3_click()
For i = 1 To 30
If a(i) Mod 2 = 1 Then
c = c + 1
ReDim Preserve b(c)
b(c) = a(i)
End If
Next i

For i = 1 To UBound(b)
For j = i To UBound(b) - 1
If b(i) < b(j + 1) Then
t = b(i)
b(i) = b(j + 1)
b(j + 1) = t
End If
Next j
Print b(i);
Next i
End Sub
Private Sub Form_Load()
Dim A(29) As Integer
Dim n As Integer, n2 As Integer
Dim A_tem As Integer

Randomize '初始化随机放生器
For n = 0 To 29 Step 1
A(n) = Int((99 - 10 + 1) * Rnd + 10)
Next n

For n = 0 To 29 Step 1 '冒泡法数组排列
A_tem = A(n)
For n2 = 0 To 29 Step 1
If A_tem < A(n2) Then
A(n) = A(n2)
A(n2) = A_tem
A_tem = A(n)
End If
Next n2
Next n

Me.AutoRedraw = True

Dim tem As Integer
For n = 0 To 29 Step 1
tem = 29 - n
If A(tem) Mod 2 <> 0 Then
Me.Print A(tem)
End If
Next n
End Sub
Private Sub Form_Click()
Dim a(1 To 30) As Integer
Randomize Timer
For i = 1 To 30
a(i) = Int(Rnd * 99 + 1)
print a(i);"";
Next i
For i = 1 To 29
For j = i + 1 To 30
If a(i) > a(j) Then
b = a(i)
a(i) = a(j)
a(j) = b
End If
Next j
Next i
For i = 1 To 30
Print a(i); "";
Next i
Print: Print
For i = 30 To 1 Step -1
If a(i) Mod 2 <> 0 Then Print a(i); "";
Next i
End Sub
答案补充

For i = 1 To 30
a(i) = Int(Rnd * 99 + 1)
print a(i);"";
Next i
代码下加上一句
print:print

For i = 1 To 30
a(i) = Int(Rnd * 99 + 1)
print a(i);"";
Next i
代码下加上一句
print:print

上一个:VB编程有什么用?
下一个:VB编程 要结果和步骤

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,