计算机等级考试二级VB常用算法(9):排序

文章作者 100test 发表时间 2007:06:26 11:47:57
来源 100Test.Com百考试题网


1、算法说明
1) 初等数学
递推法
又称为“迭代法”,其基本思想是把一个复杂的计算过程转化为简单过程的多次重复。每次重复都在旧值的基础上递推出新值,并由新值代替旧值。
问题:猴子吃桃子
小猴子有若干桃子,第一天吃掉一半多一个;第二天吃掉剩下的一半多一个…..;如此,到第七天早上要吃时,只剩下一个桃子。问小猴子一开始共有多少桃子?
分析:可以最后一天桃子数推出倒数第二天的桃子数;再从倒数第二天推出倒数第三天桃子数………..
设第n天桃子数为xn,前一天桃子数是:xn-1,则有关系:
xn=xn-1/2-1
程序如下:
Private Sub Command1_Click()
Dim n%, i%
x = 1 第七天桃子数
Print "第七天桃子数: 1只"
For i = 6 To 1 Step -1
x = (x 1) * 2
Print "第" &. i &. "天桃子数:" &. x &. "只"
Next i
End Sub
穷举法
又称枚举法,即将所有可能情况一一测试,判断是否满足条件,一般用循环实现。
问题:百元买鸡问题。
假定小鸡每只5角;公鸡每只2元;母鸡每只3元。现在有100元,要求买100只鸡,编程列出所有可能的购鸡方案。
分析:
设母鸡、公鸡、小鸡分别x、y、z只,则有:
x+y+z=100
3x+2y+0.5z=100
程序一:
Private Sub Command1_Click()
Dim x%, y%, z%
For x = 0 To 100
For y = 0 To 100
For z = 0 To 100
If x y z = 100 And 3 * x 2 * y 0.5 * z = 100 Then
Print x, y, z
End If
Next z
Next y
Next x
End Sub
程序二(优化)
Private Sub Command1_Click()
Dim x%, y%
For x = 0 To 33
For y = 0 To 50
If 3 * x 2 * y 0.5 * (100 - x - y) = 100 Then
Print x, y, 100 - x - y
End If
Next y
Next x
End Sub

2) 高等数学
求积分
近似计算积分:s=∫13(x3 2x 5)dx
代码如下:
Public Function f(ByVal x!) 被积函数
f = x * (x * x 2) 5
End Function
Public Function trapez(ByVal a!, ByVal b!, ByVal n%) As Single
b、a分别为积分上下限,n为等分数
Dim sum!, h!, x!
h = (b - a) / n
sum = (f(a) f(b)) / 2
For i = 1 To n - 1
x = a i * h
sum = sum f(x)
Next i
trapez = sum * h
End Function
调用:
Private Sub Command1_Click()
Print trapez(1, 3, 30)
End Sub
数论综合题
此类题目比较广泛,必须给以足够重视。
历年题目有:平方数、零巧数、拟互满数、回文数、酉完数、完数、幸运数、逆序数以及无暇素数、超级素数、因子和等。


src="/ncre2/js/wxgg.js">

相关文章


计算机等级考试二级VisualBasic常用算法汇总
计算机等级考试二级VB10个编程技巧
计算机等级考试二级VB常用算法(9):排序
计算机等级考试二级VB常用算法(10):字符处理
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛