我的VB作业怎么做啊 高手救命啊

内容 利用随机函数产生80个10—99之间的随机整数,将其中的偶数按有小到大的顺序排列并输出,将奇数由小到大的顺序排列并输出,在产生的80个随机整数中,找出其中的素数,并将这些素数求和
要求 随机产生80个整数存入数组,按每行十个数输出到窗体或文本框;偶数和奇数也分别存入数组,将排好数的偶数奇数分别输出到窗体或两个文本框中;用sub子过程或function函数过程判断随机整数是否为素数;将素数按每行十个数在窗体或文本框输出;将素数的个数及求和结果输出到窗体或文本框;界面自行设计

Private Sub Command1_Click()
Dim j%, k%, m%, n%, mArr(1 To 80), OArr(), EArr(), ZArr(), Q%, E%, tmP%, Z%, mSum%
Q = 1
E = 1
Z = 1

Print "80个随机整数:"
For j = 1 To 80
Randomize
mArr(j) = Int(90 * Rnd + 10)
Print CStr(mArr(j)); Spc(2);
If j Mod 10 = 0 Then Print
Next j
Print

For m = 1 To 79 '排序
For n = 80 To m + 1 Step -1
If mArr(n) < mArr(n - 1) Then tmP = mArr(n): mArr(n) = mArr(n - 1): mArr(n - 1) = tmP
Next n
Next m

For m = 1 To 80 '奇偶分组
If mArr(m) Mod 2 = 1 Then
ReDim Preserve OArr(1 To Q)
OArr(Q) = mArr(m)
Q = Q + 1
Else
ReDim Preserve EArr(1 To E)
EArr(E) = mArr(m)
E = E + 1
End If

If zs(CInt(mArr(m))) = True Then '素数分组
ReDim Preserve ZArr(1 To Z)
ZArr(Z) = mArr(m)
mSum = mSum + ZArr(Z)
Z = Z + 1
End If
Next m

Print
Print "偶数:" '在窗体输出
For m = 1 To UBound(EArr)
Print CStr(EArr(m)); Spc(2);
If m Mod 10 = 0 Then Print
Next m

Print
Print
Print "奇数:"
For m = 1 To UBound(OArr)
Print CStr(OArr(m)); Spc(2);
If m Mod 10 = 0 Then Print
Next m

Print
Print
Print "素数:"
For m = 1 To UBound(ZArr)
Print CStr(ZArr(m)); Spc(2);
If m Mod 10 = 0 Then Print
Next m
Print
Print "素数个数:"; UBound(ZArr)
Print "素数之和:"; mSum

End Sub
Private Function zs(x As Integer) As Boolean '素数判断子过程
Dim d%
If x = 2 Then zs = True: Exit Function
For d = 2 To Int(Sqr(x))
If x Mod d = 0 Then Exit For: zs = False
If d = Int(Sqr(x)) Then zs = True
Next
End Function
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-05-17
Option Explicit

Function fc(a) As Boolean
Dim i As Long
For i = 2 To Int(a / 2)
If a Mod i = 0 Then
fc = False
Exit For
Else
fc = True
End If
Next i
End Function

Private Sub Form_Click()
Dim i, j, k, m, s, g, f As Integer
j = 0
k = 0
f = 0
Dim a(1 To 80) As Integer
Dim b(1 To 80) As Integer
Dim c(1 To 80) As Integer
Dim d(1 To 80) As Integer
For i = 1 To 80
a(i) = Int(Rnd() * 100)
if a(i)<10 then a(i)=a(i)+10
If a(i) Mod 2 = 0 Then
j = j + 1
b(j) = a(i)
Else
k = k + 1
c(k) = a(i)
End If
Next i
For i = 1 To j
For m = i + 1 To j
If b(i) < b(m) Then
s = b(m)
b(m) = b(i)
b(i) = s
End If
Next m
Next i
For i = 1 To k
For m = i + 1 To k
If b(i) < b(m) Then
s = c(m)
c(m) = c(i)
c(i) = s
End If
Next m
Next i
For i = 1 To 80
If fc(a(i)) = True Then
g = g + 1
d(g) = a(i)
End If
Next i
Print "随机数:"
For i = 1 To 80
f = f + 1
If f < 11 Then
Print " " & a(i);
Else
f = 1
Print
Print " " & a(i);
End If
Next i
Print
Print "偶数:"
f = 0
For i = 1 To j
f = f + 1
If f < 11 Then
Print " " & b(i);
Else
f = 1
Print
Print " " & b(i);
End If
Next i
Print
Print "奇数:"
f = 0
For i = 1 To k
f = f + 1
If f < 11 Then
Print " " & c(i);
Else
f = 1
Print
Print " " & c(i);
End If
Next i
Print
Print "素数:"
f = 0
For i = 1 To g
f = f + 1
If f < 11 Then
Print " " & d(i);
Else
f = 1
Print
Print " " & d(i);
End If
Next i
s = 0
Print
Print "素数个数:" & g
For i = 1 To g
s = s + d(i)
Next i
Print "素数总和:" & s

End Sub
'我没找到产生10—99之间的随机整数的方法,但是基本满足要求
第2个回答  2010-05-17

Private Sub Command1_Click()

Form_Load

End Sub

Private Sub Form_Load()

Dim ary(80) As Variant

Dim arye() As Variant

Dim aryg() As Variant

Dim arys() As Variant

Creatary ary, arye, aryg, arys

Text1.Text = DisplayAry(ary)

Text2.Text = DisplayAry(arye)

Text3.Text = DisplayAry(aryg)

Text4.Text = ArySum(ary)

Text5.Text = ArySum(arye)

Text6.Text = ArySum(aryg)

Text7.Text = DisplayAry(arys)

Text8.Text = UBound(arys) - 1 & "个素数的和为" & ArySum(arys)

End Sub

Sub Creatary(ary() As Variant, arye() As Variant, aryg() As Variant, arys() As Variant)

Randomize

Dim temp As Integer

Dim arylen As Integer

ReDim arye(1)

ReDim aryg(1)

ReDim arys(1)

For i = 1 To 80

 temp = Int(Rnd() * 89 + 10)

 ary(i - 1) = temp

 If zs(temp) Then

   arylen = UBound(arys)

   ReDim Preserve arys(arylen + 1)

   arys(arylen - 1) = temp

   End If

 If adj(temp) Then

   arylen = UBound(arye)

   ReDim Preserve arye(arylen + 1)

   arye(arylen - 1) = temp

 Else

  arylen = UBound(aryg)

   ReDim Preserve aryg(arylen + 1)

   aryg(arylen - 1) = temp

End If

Next i

End Sub

Function ArySum(ary() As Variant) As Integer

Dim temp As Integer

For i = 0 To UBound(ary)

temp = temp + ary(i)

Next i

ArySum = temp

End Function

Function DisplayAry(ary() As Variant) As String

Dim temp, temp2 As String

Dim ilen As Integer

Dim ilen2 As Integer

Dim ilen3, m As Integer

ilen = UBound(ary)

If ilen Mod 10 = 0 Then

 ilen2 = ilen \ 10

 Else: ilen2 = ilen \ 10 + 1

End If

m = 0

temp = ""

For i = 1 To ilen2

  ilen3 = 10

  If i = ilen2 Then ilen3 = ilen - (ilen2 - 1) * 10

  temp = ""

  For j = 1 To ilen3

    temp = temp & ary(m) & IIf(j < ilen3, ",", "")

    m = m + 1

  Next j

  temp2 = temp2 & temp & Chr(10)

Next i

DisplayAry = temp2

End Function

Function adj(a As Integer) As Boolean '判断奇偶,偶数为TRUE

adj = IIf(a Mod 2 = 0, True, False)

End Function

Private Function zs(x As Integer) As Boolean '素数判断子过程

Dim d%

If x = 2 Then zs = True: Exit Function

For d = 2 To Int(Sqr(x))

If x Mod d = 0 Then Exit For: zs = False

If d = Int(Sqr(x)) Then zs = True

Next

End Function