绍兴鲁迅中学程序阅读编辑:沈云良
1
/
2
经典算法程序实现
2018
(
综合练习
)
班级?/p>
__________
姓名?/p>
__________
1.
用随机函数产?/p>
100
?/p>
[0
?/p>
99]
范围内的随机整数,统计个?/p>
上的数字分别?/p>
1
?/p>
2
?/p>
3
?/p>
4
?/p>
5
?/p>
6
?/p>
7
?/p>
8
?/p>
9
?/p>
0
的数的个数并
打印出来?/p>
Public Sub GetTJput()
Dim a(1 To 100) As Integer
Dim x(1 To 10) As Integer
Dim i As Integer, p As Integer
'
产生
100
?/p>
[0
?/p>
99]
范围内的随机整数
For i = 1 To 100
a(i) = Int(Rnd * 100)
If a(i) < 10 Then
Lab1.Caption= Lab1.Caption& " " & Str(a(i))
Else
Lab1.Caption= Lab1.Caption& Str(a(i))
End If
'
每行
10
个在标签
Lab1
显示出来
If ______________ Then
'
字符串常?/p>
VbCrLf
的作用:换行
Lab1.Caption= Lab1.Caption& VbCrLf
End If
Next i
'
统计个位上的数字分别?/p>
1
?/p>
2
?/p>
3
?/p>
4
?/p>
5
?/p>
6
?/p>
7
?/p>
8
?/p>
9
?/p>
0
'
的数的个数,并将统计结果保存在数?/p>
x(1),x(2),...,x(10)
'
中,将统计结果在标签
Lab2
显示出来
For i = 1 To 100
p =______________ '
求个位上的数?/p>
If p = 0 Then p = 10
x(p) =______________
Next i
Lab2.Caption="
统计结果
"
For i = 1 To 10
p = i
If i = 10 Then _____________
Lab2.Caption= Lab2.Caption & "
个位数为
"+ _
Str(p) + "
?/p>
" + Str(x(i)) + "
?/p>
"
Next i
End Sub
2.
哥德巴赫猜想
:
任意一个大于等?/p>
6
的偶数都可以分解为两?/p>
素数之和?/p>
基本思想?/p>
n
为大于等?/p>
6
的任一偶数,可分解?/p>
n1
?/p>
n2
两个
数,分别检?/p>
n1
?/p>
n2
是否为素数,如都是,则为一组解。如
n1
不是素数?/p>
就不必再检?/p>
n2
是否素数?/p>
先从
n1=3
开始,检?/p>
n1
?/p>
n2
?/p>
n2=N-n1
)是否素数。然后使
n1+2
再检?/p>
n1
?/p>
n2
是否
素数,?/p>
直到
n1=n/2
为止?/p>
?/p>
Prime
函数功能:若为素数返?/p>
True
,不是则返回
False
Function Prime( m as Integer) As _____________
Dim i As Integer
_____________
For i=2 To int(sqr(m))
If m Mod i = 0 Then Prime=False: Exit For
Next i
End Function
’利用上面的
Prime
函数,验证哥德巴赫猜?/p>
Dim n As Integer,n1 As Integer,n2 As Integer
n=Val(InputBox("
输入大于
6
的正整数
"))
For n1=3 to n\2 step 2
n2=n-n1
If prime(n1) Then
If _____________ then
Print n & "=" & n1 & "+" & n2
Exit For '
结束循环
End if
End if
Next n1
3
.合并法排序(将两个有序数组
A
?/p>
B
合并成另一个有序的数组
C
,升序)
基本思想?/p>
1
)先?/p>
A
?/p>
B
数组中各取第一个元素进行比较,将小的元素放?/p>
C
数组?/p>
2
)取小的元素所在数组的下一个元素与另一数组中上次比较后
较大的元素比较,重复上述比较过程,直到某个数组被先排完;
3
)将另一个数组剩余元素抄?/p>
C
数组,合并排序完成?/p>
程序段如下:
'
?/p>
A
?/p>
B
数组均未比较?/p>
Private Sub Cmd_Click()
Dim A(1 To 200) As Integer
Dim B(1 To 200) As Integer
Dim ia As Integer,ib As Integer
Dim na As Integer,nb As Integer
'A
?/p>
B
数组数据从外部文件读入,分别存储?/p>
A(1)
?/p>
B(1)
开始的
元素中,数据个数存储?/p>
na
?/p>
nb
?/p>
ia=1: ib=1: ic=_______
Do While _______________________
If A(ia) < B(ib) Then
C(ic) = A(ia)
?/p>
ia = ia + 1
Else
C(ic) = B(ib)
?/p>
ib = ib + 1
End If
_____________
Loop
'A
数组中的剩余元素抄入
C
数组