常用算法总结_第1页
常用算法总结_第2页
常用算法总结_第3页
常用算法总结_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、累加求和时,变量累乘(连乘)时,常用算法总结(一)一、变量值的交换算法思想:若交换两个变量的值,必须引入第三个新的变 量进行传递。以下代码是错误的:X=12 : Y=34 : X=Y : Y=X正确的代码是:X=12 : Y=23 : T=X : X=Y : Y=T二、判断一个数是否能被另一个数整除算法思想:可以用整除的定义(余数为0)或X除以Y 等于X整除Y等表达式进行判断。条件表达式可以为:X mod Y=0 或 X Y=X.Y 或 Int(X/Y)=X/Y如果以上条件表达式为True,则表示X能被Y整除。三、累加、阶乘、计数和求平均值算法思想:使用循环语句,并用一个变量存放累加的中间 及

2、最终结果。注:累加求和时变量初值为0,计算阶乘时变量初值为1。统计计个数(计数)时可用一个变量作为统计个数的累加 变量,每次加1即可。求平均值算法思想是先求和,再除以个数。条件求和(或计数):在循环语句中加入If-End If判断 语句。例题:计算1到10之间所有整数的累加和以及10!on=10sum=0的初值一定为0prod=l变量的初值一定为1For i=l To nsum=sum+iprod=piod*iNext iPrint sum,prod例题:统计0100之间能被3整除的数的个数、累加和 及其平均值。s=0n=0For 1=0 To 100If 1 mod 3 =0 Thens=s

3、+in=n+lEnd IfNext iPrint n,s,s/n四、对数组中的元素逐一进行操作算法思想:在VB中,对于数组中元素的操作,往往使用 到For循坏。通用代码为:Dim数组名(卜标卞界To下标上界)For i=LBound(数组名)To UBound(数组名)数组名(i)Next i通过以上循环,可以对数组中所有元素逐一操作。 注:1)LBound函数:返回数组的下界UBound函数:返回数组的上界2)如果数组上界和卞界已经确定,可以不使用函数,直 接指明即可。例如Option Base 1Dim a(100) As IntegerFor i=l To 100a(i)Next 13)

4、对于二维数组,要使用For循环的嵌套实现对数组中 元素的操作,其中外层循坏变量控制第一维下标的变化, 内层循坏变量控制第二维下标的变化,例如:Option Base 1Dim a(2、3) As IntegerFor i=l to 2For j=l to 3a (ij)Next jNext 1例题:1. 对下标为偶数的元素进行处理的程序代码Option Base 1For i=l to UBound(a)循环变量 i可代表数组元素的下标If i mod 2 =0 Thena(i)End IfNext i2. 对数组元素中数据为偶数的元素进行处理Option Base 1For i=l to U

5、Bound(a)循环变量 i代表数组元素的下标If a(i) mod 2 =0 Thena(i)End IfNext i五、交换数组元素算法思想:若某一维数组有n个元素,将第1个元素和第 n个元素交换,将第2个元素和第11-1个元素交换,需要交换n 2次(如果交换n次,则回到初始状态); 对于二维数组,若进行行交换或列交换,需要使用循坏语 句,每次循环需要使用变量值交换算法。例题:交换一维数组(5个元素)的元素值b = Airay(l, 3, 5、7, 9)Fori = 0To5 2tmp = b(i)b(i) = b(5 - i - 1)b(5 - i - 1) = tmpNext iEnd

6、 Sub例题:一维数组元素交换的通用代码:n = UBound(数组名)For i = LBound(数组名)Ton 2t = b(i)b(D = b(n)b(n) = tn = n - 1Next i例题:交换二维数组Mat第二列和第四列的数据For i=LBound(Mat,l) To UBound(MatJ)t = Mat(i, 2)Mat(i? 2) = Mat(i, 4)Mat(i, 4) = tNext i例题:交换二维数组Mat第一行和第三行的数据For j=LBound(Mat,2) To UBound(Mat,2)t = Mat(l J)Mat(l j) = Mat(3j)M

7、at(3,j) = tNext i六、求数组元素中的最大值、最小值算法思想:假设数组中第一个元素为最人值,并赋给变量 Max,然后使用循坏结构依次与第2个数组元素至最后一 个元素进行比较,如果某数组元素的值大于Max,则将该 元素的值赋给Max(同时可记录下该数组元素在数组中的 位置)。例题:显示数组a中的最人值及其下标。Option Base 1Dim Max As Integer, Index As IntegerMax=a(l)aliidex=lFor i=2 to UBound(a)If a(i)Max ThenMax=a aliidex=iEnd IfNext iPrint Max,

8、 i求最小值的方法与此类似,差别在于取第一个元 素为最小值Mm,与2个数组元素至最后一个元素进行比 较时判断关系有所调整,即Min=a(l)If a(i)Min ThenMin=a(i)End If七、常用字符处理函数Mid函数:从字符串指定位置取指定个字符,格式为Mid (字符,p,n),从第p个字符开始,向后截取11个字符(若 n省略则取到最后)。Left和Right函数:从字符串左边或右边取指定个字符, 格式为Left (字符,n)和Right (字符,n)。Len函数:测试字符串长度。UCase和LCase函数:UCase将小写字母转换为大写字母: LCase将人写字母转换为小写字母。

9、Instr(首字符位置,字符串1,字符串2 , nJ):在字符串 1中查找字符串2,如果找到,返回字符串2的第一个字 符在字符串1中出现的位置。首字符位置是可选的,如果 不指定,从字符串起始位置开始查找:如果指明,从指定 的位置开始查找。Asc函数:返回字符串中第一个字符的ASCH码。Chr函数:将一个数值转换为其所对应的字符。字符的比较规则是按ASCH码顺序比较,规则为空格” A” ” z” = Han And si = Han And si = HAn Aiid si = ”Z” Thens2 = s2 + Chi(Asc(sl) + m)End IfNext iText2.Text =

10、s2End Sub4. 判断是否回文函数所谓回文是指顺读与倒读都一样的字符串,如“rececer”Function foundhuiwen(p As Stimg)foundhuiwen = Tmek = Len(p)For i = 1 To k / 2If Mid(p, i, 1) Mid(p, k + 1 i, 1) Then foundhuiwen = FalseExit ForEnd IfNextEnd Function如呆fbundliuiweii函数返回值为True,表明字符 串p为回文,否则表示不是回文。5. 统计某字符出现次数算法思想:对字符串中字符逐一判断,如果是某字符,则 统

11、计变量加lo例题:统计文本框Textl中字符1和j出现的次数(不区 分大小写)。Private Sub Conunand l_ClickQs = Textl. Textn = Len(s)For i = 1 To nsi = Mid(s, i, 1)IfUCase(sl) = I Then m = m + 1IfUCase(sl) = ”J” Then ly = iij + 1NextiPrint ni, njEnd Sub八、素数素数定义:只能被1和本身整除的正整数称为素数(或称质 数)。例如11就是素数,它只能被1和11整除。算法思想:判别某数n是否是素数的方法有很多,最简单的 是从素数的

12、定义来求解。对于n,从】=2, 3,,n-1判别n 能够被1整除,只要有一个能整除,n就不是素数,否则n 是素数。此种算法比较简单,但速度慢,因此,可以将n被 2到(或n/2)间的所有整数除,如果都除不尽,则n就是 素数,否则n是非素数。注:执行For循环时,循环变量等于终值仍进入循环,遇到 Next语句,循环变量会自动加上步长,因此如果循环正常完 成后,循环变量的值将大于终值。例如:For i=l To 4IfThen Exit ForNextiPrint 1如果循环正常结束,则输出结果为5 (大于4)。如果循环 过程中满足If条件,执行Emt For语句退出循环,贝心的值 一定小于5。例题

13、:判断n是否是素数。Private Sub Command2_Click()n = Val(Textl.Text)For j = 2 To n 1If n Mod j = 0 Then Exit ForNextjIfj n-1 Then Print ”是素数“ Else Print ”不是素数”End Sub例题:输出2n范围的全部素数。Private Sub Command l_Click()n = Val(Textl.Text)For i = 2 To nFor j = 2 To Sqr(i)If i Mod j = 0 Then Exit ForNextjIfj Sqr(i) Then Print 1NextiEnd Sub使用Do While循环判断是否是素数的代码为:Private Function isprime(a As Integer) As BooleanDim flag As Booleanflag = Trueb = 2Do While b y(2) x除以y得余数口(3) 若r=0,则x为求得的最大公约数,算法结束:否则执 行步骤(4)(4) Xy, yr,再重复执行(2)求得了最大公约数后,最小公倍数就可很方便地求出,即将

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论