收藏 分享(赏)

VB程序设计的常用算法.doc

上传人:cjc2202537 文档编号:6227689 上传时间:2019-04-03 格式:DOC 页数:12 大小:117KB
下载 相关 举报
VB程序设计的常用算法.doc_第1页
第1页 / 共12页
VB程序设计的常用算法.doc_第2页
第2页 / 共12页
VB程序设计的常用算法.doc_第3页
第3页 / 共12页
VB程序设计的常用算法.doc_第4页
第4页 / 共12页
VB程序设计的常用算法.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

1、VB 程序设计的常用算法算法(Algorithm):计算机解题的基本思想方法和步骤。算法的描述:是对要解决一个问题或要完成一项任务所采取的方法和步骤的描述,包括需要什么数据(输入什么数据、输出什么结果) 、采用什么结构、使用什么语句以及如何安排这些语句等。通常使用自然语言、结构化流程图、伪代码等来描述算法。一、计数、求和、求阶乘等简单算法此类问题都要使用循环,要注意根据问题确定循环变量的初值、终值或结束条件,更要注意用来表示计数、和、阶乘的变量的初值。例:用随机函数产生 100 个0,99范围内的随机整数,统计个位上的数字分别为 1,2,3,4,5,6,7,8,9,0的数的个数并打印出来。本题

2、使用数组来处理,用数组 a(1 to 100)存放产生的确100 个随机整数,数组 x(1 to 10)来存放个位上的数字分别为1,2,3,4,5,6,7,8,9,0 的数的个数。即个位是 1的个数存放在 x(1)中,个位是 2 的个数存放在 x(2)中,个位是 0 的个数存放在 x(10)。将程序编写在一个 GetTJput 过程中,代码如下:Public Sub GetTJput() Dim a(1 To 100) As IntegerDim x(1 To 10) As IntegerDim i As Integer, p As Integer产生 100 个0,99范围内的随机整数,每行

3、 10 个打印出来For i = 1 To 100a(i) = Int(Rnd * 100)If a(i) n;(2) m 除以 n 得余数 r;(3) 若 r=0,则 n 为求得的最大公约数,算法结束;否则执行(4);(4) m n,n r,再重复执行(2)。例如: 求 m=14 ,n=6 的最大公约数 . m n r14 6 26 2 0m=inputBox(“m=“)n=inputBox(“n=“)nm=n*mIf m 0) m=nn=rr= m mod nLoopPrint “最大公约数 =“, n Print “最小公倍数 =“, nm/n三、判断素数只能被 1 或本身整除的数称为素

4、数 基本思想:把 m 作为被除数,将 2INT( )作为除数,如果都除不尽,m就是素数,否则就不是。 (可用以下程序段实现)m =val( InputBox(“请输入一个数 “)For i=2 To int(sqr(m)If m Mod i = 0 Then Exit ForNext iIf i int(sqr(m) ThenPrint “该数是素数“ElsePrint “该数不是素数“End If将其写成一函数,若为素数返回 True,不是则返回FalsePrivate Function Prime( m as Integer) As BooleanDim i% Prime=TrueFor

5、i=2 To int(sqr(m)If m Mod i = 0 Then Prime=False: Exit ForNext iEnd Function四、排序问题1选择法排序(升序)基本思想:1)对有 n 个数的序列(存放在数组 a(n)中) ,从中选出最小的数,与第 1 个数交换位置;2)除第 1 个数外,其余 n-1 个数中选最小的数,与第 2 个数交换位置;3)依次类推,选择了 n-1 次后,这个数列已按升序排列。程序代码如下:For i = 1 To n - 1imin = iFor j = i + 1 To nIf a(imin) a(j) Then imin = jNext jt

6、 = a(i)a(i) = a(imin)a(imin) = tNext I五、查找问题1顺序查找法(在一列数中查找某数 x)基本思想:一列数放在数组 a(1)-a(n)中,待查找的数放在 x 中,把 x 与 a 数组中的元素从头到尾一一进行比较查找。用变量 p 表示 a 数组元素下标, p 初值为 1,使 x 与a(p)比较,如果 x 不等于 a(p),则使 p=p+1,不断重复这个过程;一旦 x 等于 a(p)则退出循环;另外,如果 p 大于数组长度,循环也应该停止。 (这个过程可由下语句实现)p = 1Do While x a(p) And p a(p) And p n then p=0

7、Find=pEnd Function 基本思想:一列数放在数组 a(1)-a(n)中,待查找的关键值为 key,把 key 与 a 数组中的元素从头到尾一一进行比较查找,若相同,查找成功,若找不到,则查找失败。(查找子过程如下。index:存放找到元素的下标。)Public Sub Search(a() As Variant, key As Variant, index%)Dim i%For i = LBound(a) To UBound(a)If key = a(i) Thenindex = iExit SubEnd IfNext iindex = -1End Sub2折半查找法(只能对有序

8、数列进行查找)基本思想:设 n 个有序数(从小到大)存放在数组 a(1)-a(n)中,要查找的数为 x。用变量 bot、top、mid 分别表示查找数据范围的底部(数组下界) 、顶部(数组的上界)和中间,mid=(top+bot)/2,折半查找的算法如下:(1)x=a(mid),则已找到退出循环,否则进行下面的判断;(2)xa(mid),x 必定落在 mid+1 和 top 的范围之内,即bot=mid+1;(4)在确定了新的查找范围后,重复进行以上比较,直到找到或者 bota(p) and p a(p) And p a(row, Column) ThenMax = a(i, j)row =

9、iColumn = jEnd IfNext jNext iPrint “最大元素是 “; MaxPrint “在第 “ “ 第“ (3)若所取字符是“空格” , “逗号”, “分号”或“感叹号” 等单词的分隔符, 则表示字符不是单词内字符,让 WT=False;(4) 再依次取下一个字符,重得(2)(3)直到文本结束。下面程序段是字符串 strI 中包含的单词数Nw = 0: Wt = FalsenL = Len(RTrim(strI)For i = 1 To nLstrT = Mid$(strI, i, 1) 取第 i 个字符Select Case strTCase “ “, “,“, “;

10、“, “!“Wt = FalseCase ElseIf Not Wt ThenNw = Nw + 1Wt = TrueEnd IfEnd SelectNext iPrint “单词数为: “, Nw十、穷举法穷举法(又称“枚举法” )的基本思想是:一一列举各种可能的情况,并判断哪一种可能是符合要求的解,这是一种“在没有其它办法的情况的方法” ,是一种最“笨”的方法,然而对一些无法用解析法求解的问题往往能奏效,通常采用循环来处理穷举问题。例: 将一张面值为 100 元的人民币等值换成 100 张 5元、1 元和 0.5 元的零钞,要求每种零钞不少于 1 张,问有哪几种组合?Dim i%, j%, k%Print “5 元 1 元 0.5 元“For i = 1 To 20For j = 1 To 100 - ik = 100 - i - jIf 5.0 * i + 1.0 * j + 0.5 * k = 100 ThenPrint i, j, kEnd IfNext jNext i

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 网络科技 > 开发文档

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报