(完整版)vb常用算法介绍.doc

上传人:大米 文档编号:552926500 上传时间:2023-07-26 格式:DOC 页数:13 大小:72.54KB
返回 下载 相关 举报
(完整版)vb常用算法介绍.doc_第1页
第1页 / 共13页
(完整版)vb常用算法介绍.doc_第2页
第2页 / 共13页
(完整版)vb常用算法介绍.doc_第3页
第3页 / 共13页
(完整版)vb常用算法介绍.doc_第4页
第4页 / 共13页
(完整版)vb常用算法介绍.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《(完整版)vb常用算法介绍.doc》由会员分享,可在线阅读,更多相关《(完整版)vb常用算法介绍.doc(13页珍藏版)》请在金锄头文库上搜索。

1、(完整版)vb常用算法介绍一、累加算法 如果在设计过程中遇到求1+2+3+100等连加问题时,就可以用累加算法来解决。 累加算法的一般做法是设一个变量 s,作为累加器使用,初值为0,设一个变量用来保存加数。一般在累加算法中的加数都是有规律可循,可结合循环程序来实现. 一个循环程序的设计,如果以下三方面确定下来:变量的赋初值、循环体的内容、循环结束条件,那么根据循环语句的格式,就很容易写出相应的循环程序。例:求1+2+3+100的累加和,并打印输出分析: 设累加器S,初值为0,加数用变量I表示 当I=1时,累加器S= S+I = 0+1=1 当I=2时,累加器S= S+I =1+2= 3 当I=

2、3时,累加器S=S+I =3+3 =6 当I=4时,累加器S=S+I =6+4 =10 当I=100时,累加器S=S+100=1+2+3+99+100=5050不难看出,I的值从1变化到100的过程中,累加器均执行同一个操作:S=S+I,S=S+I的操作执行了100次,所以该程序段可写成:Dim I As Integer, S As IntegerS = 0 给累加器s赋初值For S = 1 To 100 S= S + I I既作为循环变量,又作为加数Next IPrint 1+2+100=”; S考虑一下:语句Print ”1+2+100=”; S可以放在循环体中吗?延伸一下: 上述算法对

3、数值型数据,执行的是累加操作,如果对字符串型数据,完成的是字符串的连接.例:从键盘上输入一串字符,要求将其加密后显示在文本框Text1中,加密的方法是将每一个字符转变为它的后一位字符,如:A转变为B,1转变为2。分析: 因为涉及对每一个字符做相应处理再连接成一个新串,所以可以用类似累加的算法。定义一个变量str1用来接收输入的原始字符串,变量str2用来接收加密后的字符串,初值为空串。可用Len()函数得出字符串的长度,用循环控制,从左向右逐个取字符,截取字符的功能可用函数Mid()完成,由于要做加密操作,可利用Asc()函数获得字符的Ascii码,用Chr()函数获得Ascii码对应的字符。

4、程序段如下:Dim str1 As String, ch As String 1Dim i As Integer, str2 As Stringstr1 = InputBox(”输入原始字符串:”)For i = 1 To Len(str1) str2 = str2 + Chr(Asc(Mid(str1, i, 1) + 1) 将加密后的字符连接成串Next iText1.Text = str2由此可以看出:对字符串的连接操作,可用累加算法来完成,不过在字符串的操作中,经常要用到字符串处理函数,所以一些常用的函数功能和用法必须掌握.考虑一下:如果要实现字符的逆序连接,该怎么办?二、连乘算法连乘

5、算法的一般做法是定义一个变量t,作为乘法器使用,初值为1,设一个变量用来保存乘数。例:求10!=123*10的结果并打印输出分析:与累加算法类似,只不过加法变成乘法。设乘法器t,初值为1,设变量I存放乘数。当I=1时,T=TI=1*1=1当I=2时,T=TI=1*2=2当I=3时,T=TI=23=6当I=10时,T=T*I=123*910所以当I的值从1变化到10的过程中,乘法器均执行同一个操作:S=SI,程序段可写成: Dim I As Integer, T As long T= 1 For I = 1 To 10 T = T I Next I Print ”12310=;T例:求1!+2!

6、+10!的值分析:这一题总体上是累加题,只不过加数不再是简单的1、2、3等,而是1!、2!到10!,可考虑设一个变量s作累加器,设一个变量t存放每一次的加数,累加的次数是10次,分别加上1!到10!。设循环变量i值从1变化到10,每一次循环执行一次累加操作,每次累加的加数t为i!,所以在每次累加之前,应先用连乘算法计算I!的值,可设循环控制变量j,按如下程序段完成求i!: t = 1 For j = 1 To i t = t * j Next j 结合累加算法,求!+2!+10!的程序段如下: Dim i As Integer, j As Integer Dim s As Long, t As

7、 Long s = 0 For i = 1 To 10 t = 1内循环 For j = 1 To i t = t * j Next j s = s + t Next i Print ”1!+2!+10!=; s程序执行流程是:I=1,计算t=1!,s=0+1!=1! I=2,计算t=2!,s=1!+2! I=3,计算t=3!,s=1!+2!+3! I=10,计算t=10!,s=1!+2!+3!+4!+5!+6!+7!+8!+9!+10!考虑一下:(1):语句t=1是否可以和s=0一样,放在外循环外?(答案:不可以!循环初始化所放置的位置要牢记以下原则:外循环初始化应放在外循环的外面,内循环初

8、始化应放在外循环体内,内循环体外。)(2):变量s和t可以将其类型定义为Integer(整型)吗?(答案:不可以!因为8!的值就已经超过整型所能表示的最大值32767,所以s和t必须定义成长整型(Long),否则会发生溢出.)优化: 由于n!=(n1)!*n,即2!=1!*2,3!=2!3,10!=9!*10,所以上述程序段还可进行以下的优化: Dim i As Integer, j As Integer Dim s As Long, t As Long s = 0 t = 1 这时t=1不可放在循环体内 For i = 1 To 10 t = t i s = s + t Next i Pri

9、nt ”1!+2!+10!=; s执行流程为: I=1,计算t=11=1!,s=0+1!=1! I=2,计算t=1!2=2!,s=1!+2! I=3,计算t=2!3=3!,s=1!+2!+3! I=10,计算t=9!10=10!,s=1!+2!+3!+4!+5!+6!+7!+8!+9!+10!归纳一下: 所有累加次数确定的累加程序都可以采用如下的编程模式: 定义累加器s,初值为0或根据情况赋一个特定值,设变量t存放加数,假设累加次数为n次,则程序段可按如下框架编写: s = 0 For i = 1 To n 将加数赋给t s = s + t Next I统计算法如果在编程时需要计算满足某一条件

10、的量有多少个时,就可以采用统计算法。统计算法的一般做法是定义若干个变量用来作计数器,专门来统计满足相应条件的量,有多少个统计要求,就定义多少个计数器,在程序设计过程中,分别判断是否满足指定条件,若满足条件,则指定的计数器加1。如果计数器太多,而且相互之间有联系时,一般会定义一个计数器数组.例:在文本框中输入一串字符,统计其中的字母、数字和其他字符的个数。基本思路: 要统计满足指定要求的字符个数,应定义相应变量(如n)作为计数器,初值为0,每找到符合条件的字符,将指定计数器的值加1。 本题需要定义3个计数器n1、n2、n3,初值为0,对字符串的字符逐个判断,如果是字母,n1加1,如果是数字,n2

11、加1,否则n3加1Private Sub Command1_Click() Dim str As String, i As Integer, ch As String * 1 Dim n1 As Integer, n2 As Integer, n3 As Integer n1 = 0: n2 = 0: n3 = 0: str = Text1。Text For i = 1 To Len(str) ch = Mid(str, i, 1) If UCase(ch) = Z And UCase(ch) = ”A” Then n1 = n1 + 1 计数器n1加1 ElseIf ch = ”0” And

12、 ch = 9” Then n2 = n2 + 1 计数器n2加1 Else n3 = n3 + 1 计数器n3加1 End IfNext i Text2 = “字母的个数为 n1 Chr(13) & Chr(10)Text2= Text2 & “数字的个数为” & n2 Chr(13) & Chr(10)Text2= Text2 “其他字符的个数为” n3End Sub求最大值和最小值 在N个数中求最大值和最小值的思路是定义一个变量假设为max,用来存放最大值,定义一个变量假设为min,用来存放最小值。一般将第1个数赋给max和min,将剩下的每个数分别和max、min比较,如果比max大,

13、将该数赋给max,如果比min小,将该数赋给min,即让max中总是放当前的最大数,让min中总是放当前的最小值,这样当所有数都比较完时,在max中放的就是最大数,在min中放的就是最小数。 例:随机产生20个1到100之间的整数,打印输出其最大值和最小值。任何一个随机整数 x都可通过随机函数来产生,随机函数Rnd( )可产生在0到1之间均匀分布的随机数。要产生在区间 M,N 之间的随机整数x ,可用以下公式完成: x = Int( Rnd(N- M+1)+N所以1到100之间的随机整数 x 的产生可用以下语句完成: x = Int(Rnd*100)+1 按照求最大值和最小值的算法思想,可编写程序如下:Private Sub Form_click()Dim i As Integer, x As IntegerDim max As Integer, min As IntegerRandomize 随机函数初始化max = Int(Rnd * 100) + 1min = max 给max和min赋初值For i = 1 To 19 x = Int(Rnd * 100) + 1 产生1到100间的随机数 If x max Then max = x If x min Then min = xNe

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 公司方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号