绍兴鲁迅中学程序阅读编辑:沈云良
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
数组