VB程序设计-利用随机函数产生80个10~99之间的随机整数

(一)实验目的
学会综合运用选择结构、循环结构、数组和过程进行程序设计的方法。
(二)实验内容
利用随机函数产生80个10~99之间的随机整数,将其中的偶数按由小到大的顺序排列并输出,将奇数按由大到小的顺序排列并输出;在产生的80个随机整数中,找出其中的素数,并将这些素数求和。
(三)实验要求
1.将随机产生的80个整数存入数组,按每行10个数输出到窗体或文本框中。
2.偶数和奇数也分别存入数组,将排好序的偶数和奇数分别输出到窗体或两个文本框中。
3.用Sub子过程或Function函数过程判断随机整数是否为素数。
4.将素数按每行10个数在窗体或文本框中输出。
5.将素数的个数及求和结果输出到窗体或文本框中。
6.界面由学生自行设计。

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-24
Private Sub Command1_Click()
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim OddCount As Integer
Dim EvenCount As Integer
Dim PrimeCount As Integer
Dim Temp As Integer
Dim SumPrime As Long
Dim ArrRnd(80) As Integer
Dim ArrOdd(80) As Integer
Dim ArrEven(80) As Integer
Dim ArrPrime(80) As Integer

Randomize
For i = 0 To 79
ReCreate:
ArrRnd(i) = Int((Rnd * 90) + 10)
For k = 0 To i - 1
If ArrRnd(k) = ArrRnd(i) Then
GoTo ReCreate
End If
Next k

If Prime(ArrRnd(i)) = True Then
ArrPrime(PrimeCount) = ArrRnd(i)
SumPrime = SumPrime + ArrRnd(i)
PrimeCount = PrimeCount + 1
End If

If ArrRnd(i) Mod 2 <> 0 Then
ArrOdd(OddCount) = ArrRnd(i)
For j = OddCount To 1 Step -1
If ArrOdd(j) > ArrOdd(j - 1) Then
Temp = ArrOdd(j)
ArrOdd(j) = ArrOdd(j - 1)
ArrOdd(j - 1) = Temp
End If
Next j
OddCount = OddCount + 1
Else
ArrEven(EvenCount) = ArrRnd(i)
For j = EvenCount To 1 Step -1
If ArrEven(j) < ArrEven(j - 1) Then
Temp = ArrEven(j)
ArrEven(j) = ArrEven(j - 1)
ArrEven(j - 1) = Temp
End If
Next j
EvenCount = EvenCount + 1
End If
Next i

Print "随机数:"
For i = 0 To 79
If i Mod 10 <> 9 Then
Print ArrRnd(i);
Else
Print ArrRnd(i)
End If
Next i

Print
Print "奇数(从大到小):"
For i = 0 To OddCount - 1
If i Mod 10 <> 9 Then
Print ArrOdd(i);
Else
Print ArrOdd(i)
End If
Next i

Print
Print "偶数(从小到大):"
For i = 0 To EvenCount - 1
If i Mod 10 <> 9 Then
Print ArrEven(i);
Else
Print ArrEven(i)
End If
Next i

Print
Print "素数:"
For i = 0 To PrimeCount - 1
If i Mod 10 <> 9 Then
Print ArrPrime(i);
Else
Print ArrPrime(i)
End If
Next i

Print
Print "素数个数:" & PrimeCount & " 素数和:" & SumPrime
End Sub

Private Function Prime(ByVal Number As Integer) As Boolean
If Number Mod 2 = 0 Then
Prime = False
Exit Function
Else
For i = 3 To Int(Sqr(Number)) Step 1
If Number Mod i = 0 Then
Prime = False
Exit Function
End If
Next i
End If
Prime = True
End Function
相似回答