常用算法介绍_第1页
常用算法介绍_第2页
常用算法介绍_第3页
常用算法介绍_第4页
常用算法介绍_第5页
已阅读5页,还剩72页未读 继续免费阅读

下载本文档

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

文档简介

1、关于常用算法介绍第一张,PPT共七十七页,创作于2022年6月算法1:累加和累乘累加形式:V=V+e连乘形式:V=V*e其中:V是变量,e是递增表达式。累加和连乘一般通过循环结构来实现。注意:需在执行循环体前对变量V赋初值。一般的,累加时置初值0;连乘时置初值为1。第二张,PPT共七十七页,创作于2022年6月例如求N!的结果。Private Sub Command1_Click() Dim n%, i%, s& n = Val(InputBox(输入n) s = 1 For i = 1 To n s = s * i Next i Print sEnd Sub第三张,PPT共七十七页,创作于2

2、022年6月错误的例子Private Sub Command1_Click() Dim n%, i%, s& n = Val(InputBox(输入n) For i = 1 To n s = 1 赋初值语句位置不对!s = s * i Next i Print s 输出s的值为n,而不是n!End Sub第四张,PPT共七十七页,创作于2022年6月根据下列公式,求自然对数e的的近似值。要求:误差小于0.00001Private Sub Command1_Click() Dim i%, n&, t!, e! e = 2 i = 1 t = 1 Do While t 0.00001 i = i

3、+ 1 t = t / i e = e + t Loop Print 计算了; i; 项目和是:; e Print Exp(1) 与上句输出值进行对比以证明算法的正确性End Sub第五张,PPT共七十七页,创作于2022年6月解题技巧1) 由于这类题目往往是根据精度要求来求值,因此我们不能预知具体循环次数,所以这类题目一般用Do循环,很少用For循环。设定循环变量和通项变量,注意各变量的初值;2) 分解通项表达式中各因子,并分别将各因子用循环变量表示;3) 如果步骤2中有的因子比较复杂,难以直接用变量表示,此时可以考虑使用Function过程;4) 根据步骤1、2、3,写出通项表达式;5)

4、根据精度要求(往往是通项小于10负多少次方这样一个关系表达式),写出一条满足精度要求后跳出循环的语句。通常是用:if 通项表达式10(-N) then exit do ,注意这句话一般需放在累加或者连乘式之前。第六张,PPT共七十七页,创作于2022年6月根据X值计算:n1,2,要求:n项绝对值小于等于10-6为止。注意:如果调试运行时死循环,可以按CtrlBreak中断死循环,不需要重新启动机器。(或者Ctrl+Scroll Lock)第七张,PPT共七十七页,创作于2022年6月private Function comp(n as long)as longdim I as longdim

5、result as longresult=1 此处注意,由于是连乘,初值为1for I=1 to 2*(n-1)result=result*Inext Icomp=resultEnd Function第八张,PPT共七十七页,创作于2022年6月Private Sub Command1_Click() Dim n As Long, dblCos As Double, x As Double x = Val(Text1.Text) n = 1 Do dblCos = (-1) (n + 1) * x (2 * (n - 1) / comp(n) If Abs(dblCos) max Then m

6、ax = s If s min Then min = s aver = aver + s Next i aver = aver / n Print max=; max; min=; min; aver=; averEnd Sub第十三张,PPT共七十七页,创作于2022年6月解题技巧 最大值、最小值、平均值类型题目往往和数组放在一起考!有的不仅求这些值,还要对具有最大值或者最小值的行或列或者某个元素进行处理,这时就要在记录最大、最小值时,同时记录该值所在的行号和列号。第十四张,PPT共七十七页,创作于2022年6月实战练习 1) 补充代码(2000春二(9)本程序的功能是在二维数组中查找鞍点元

7、素,即该元素在所在行中为最大,且在所在列中为最小。在一个数组中可能存在,也可能不存在这样的元素。数组各元素的值从文件data.txt中读取。Private Sub Form_Click()Dim a(3,3) As Integer,i As Integer,j As IntegerDim maxvr As Integer,col As Integer, As IntegerOpen data.txt For Input As #1For i=1 To 3For j=1 To 3Input #1,a(i,j)Print a(i,j);Next jPrintNext iFor i=1 To 3ma

8、xvr= (1) col=1For j=2 To 3If maxvra(j,col) Then (3) Next jIf j3 Then Print a(;i;,;col;)=;a(i,col)=1End If If (4) Then Print 鞍点元素不存在Next iEnd Sub第十五张,PPT共七十七页,创作于2022年6月2) 编程题(2002秋上机试卷05)随机生成所有数组元素都是两位数的33的二维数组,找出其中不同行、不同列的三个数组元素的乘积最大的一组,并将这三个元素显示在图片框中。 第十六张,PPT共七十七页,创作于2022年6月VB常用算法(三)素数 算法说明 素数(质数

9、):就是一个大于等于2的整数,并且只能被1和本身整除,而不能被其他整数整除的数。 判别某数m是否是素数的经典算法是: 对于m,从I2,3,4,m1依次判别能否被I整除,只要有一个能整除,m就不是素数,否则m是素数。 第十七张,PPT共七十七页,创作于2022年6月Private Function sushu(ByVal n As Long) As Boolean Dim i As Long For i = 2 To n - 1 If (n Mod i) = 0 Then Exit For Next I If I=n then sushu=True End Function 很显然,实际上,我们

10、可以改进上面 For i = 2 To n 1 为: For i = 2 To int(sqr(m) 这样可以很好的提高效率。 以上判断是否为素数的代码务必识记! 第十八张,PPT共七十七页,创作于2022年6月应用举例求100200之内素数。 Private Sub Command1_Click() Dim j As Integer For j = 100 To 200 If sushu(j) = True Then Print j End If Next j End Sub解题技巧 识记判断素数的算法过程,根据题意,灵活调用! 第十九张,PPT共七十七页,创作于2022年6月实例说明 编程

11、题(2002年春上机试卷04) 找出10000以内所有可以表示为两个平方数和的素数。 思路: 首先找10000以内的所有素数,对于每个素数判断其是否可以表示为两个平方数之和(即对于任意小于该素数shu的数I,如果I和shuI均为平方数,则说明其可以表示为两个平方数之和。) 判断数I是否为平方数的方法:sqr(i)=int(sqr(i) Private Sub Command1_Click() Dim j As Integer Dim m As Long, n As Long For j = 2 To 10000 If sushu(j) = True Then If pf(j, m, n) =

12、True Then List1.AddItem j & = & m & + & n End If End If Next j End Sub Private Function pf(ByVal shu As Long, m As Long, n As Long) As Boolean Dim i As Long For i = 1 To shu - 1 If (Sqr(i) = Int(Sqr(i) And (Sqr(shu - i) = Int(Sqr(shu - i) Then pf = True m = i n = shu - i Exit Function End If Next En

13、d Function 第二十张,PPT共七十七页,创作于2022年6月2、实战练习 1) 补充代码(2002春二(7) 下列程序的功能是:查找四位正整数中的超级素数。超级素数的定义为:当一个素数从低位到高位依次去掉一位数后剩下的数仍然是素数,则此数为超级素数。如数2333、233、23、2均为素数,所以2333为超级素数。 Option Explicit Private Sub Command1_Click() Dim I As Integer, flg As Boolean For I = 1001 To 9999 Step 2 Call sup_prime(I, flg) If flg T

14、hen Print I End If Next I End Sub 第二十一张,PPT共七十七页,创作于2022年6月Private Sub sup_prime( (1) , F As Boolean) Dim p As Integer F = True Do While N 0 If prime(N) Then (2) Else (3) Exit Sub End If Loop End Sub Public Function prime(p As Integer) As Boolean Dim k As Integer If p = 1 Then Exit Function Else For

15、 k = 2 To Sqr(p) If p Mod k = 0 Then Exit Function Next k (4) End If End Function 第二十二张,PPT共七十七页,创作于2022年6月2) 编程题(2004春上机试卷03) 随机生成15个两位正整数,从中找出所有的素数,并记下它是第几个数,再找出其中最大的素数,并给出它的位置。第二十三张,PPT共七十七页,创作于2022年6月VB常用算法(四)进制转化算法说明 1) 十进制正整数m转换为R(216)进制的字符串。 思路: 将m不断除r取余数,直到商为0,将余数反序即得到结果。 算法实现: Private Funct

16、ion Tran(ByVal m As Integer, ByVal r As Integer) As String Dim StrDtoR As String, n As Integer Do While m o n = m Mod r m = m r If n 9 Then StrDtoR = Chr(65 + n - 10) & StrDtoR Else StrDtoR = n & StrDtoR End If Loop Tran = StrDtoR End Function 第二十四张,PPT共七十七页,创作于2022年6月2) R(216)进制字符串转换为十进制正整数。 思路:R进制

17、数每位数字乘以权值之和即为十进制数。 算法实现: Private Function Tran(ByVal s As String, ByVal r As Integer) As integer Dim n As Integer, dec As Integer s = UCase(Trim(s) For i% = 1 To Len(s) If Mid(s, i, 1) = A Then n = Asc(Mid(s, i, 1) - Asc(A) + 10 Else n = Val(Mid(s, i, 1) End If dec = dec + n * r (Len(s) - i) Next i

18、Tran = dec End Function 解题技巧 进制转化的原理要清楚,同时编写代码时候要留意16进制中的AF字符的处理。 第二十五张,PPT共七十七页,创作于2022年6月2、实战练习 1) 补充代码(2002秋二(9) 本程序是把给定的二进制整数转换为八进制整数。 Private Sub Command1_Click() Dim a As String, b As String, c As String Dim L As Integer, m As Integer, n As Integer a = InputBox(请输入一个二进制数, 输入框) (1) a = String(L

19、, 0) & a (2) For m = 1 To n / 3 b = Mid(a, 3 * m - 2, 3) (3) Next m Text1.Text = c End Sub 第二十六张,PPT共七十七页,创作于2022年6月Private Function zh(s As String) As String Dim i As Integer, n As Integer, p As Integer p = 1 For i = 2 To 0 Step -1 (4) p = p + 1 Next i zh = Str(n) End Function 第二十七张,PPT共七十七页,创作于202

20、2年6月2) 补充代码(2001春二(7) 下面程序是把给定的16进制正整数转换为10进制数。 Option Explicit Private Sub Form_Click() Dim St As Integer, Dem As Long St=InputBox(输入一个十六进制数) Dem=Convert(St) Print St; =; Dem End Sub Private Function Convert(S As String)As Long Dim N As Integer, I As Integer,Substring As String*1 Dim P As long, K A

21、s Long,Asc1 As Integer N= (1) P=16N For I=1 To N P=P/16 Substring= (2) Select Case Substring Case 0 To 9 K=K+P*Val(Substring) Case (3) Asc1=Asc(Substring)-Asc(A)+10 (4) End Select Next I (5) End Function 第二十八张,PPT共七十七页,创作于2022年6月VB常用算法(五)约数因子 算法说明 1) 最大公约数:用辗转相除法求两自然数m、n的最大公约数。(1) 首先,对于已知两数m、n,比较并使得

22、mn;(2) m除以n得余数r;(3) 若r0,则n为求得的最大公约数,算法结束;否则执行步骤(4)(4) mn nr 再重复执行(2)第二十九张,PPT共七十七页,创作于2022年6月算法实现循环实现Private Function GCD(ByVal m As Long, ByVal n As Long) As Long Dim temp As Long If m n Then temp = m: m = n: n = temp Dim r As Long Do r = m Mod n If r = 0 Then Exit Do m = n n = r Loop GCD = nEnd Fu

23、nction第三十张,PPT共七十七页,创作于2022年6月递归实现Private Function GCD(ByVal m As Long, ByVal n As Long) As Long Dim temp As Long If m n Then temp = m: m = n: n = temp Dim r As Long r = m Mod n If r = 0 Then GCD = n Else m = n n = r GCD = GCD(m, n) End IfEnd Function第三十一张,PPT共七十七页,创作于2022年6月2) 最小公倍数mn最大公约数3) 互质数最大公

24、约数为1的两个正整数解题技巧该算法需要识记!这种类型题目的扩展是约数和因子题型。第三十二张,PPT共七十七页,创作于2022年6月2、实战练习 1) 补充代码(2003春二(9)给定一个十进制正整数,找出小于它并与其互质的所有正整数(所谓互质数是指最大公约数为1的两个正整数,下图是程序执行画面)。第三十三张,PPT共七十七页,创作于2022年6月Option ExplicitPrivate Function gcd( (1) ) As Integer Dim r As Integer r = m Mod n If r = 0 Then gcd = n Else m = n: n = r (2)

25、 End IfEnd FunctionPrivate Sub Command1_Click() Dim n As Integer, p As Integer n = Val(Text1) For p = n - 1 To 2 Step -1 If (3) Then List1.AddItem p Next pEnd Sub第三十四张,PPT共七十七页,创作于2022年6月2) 编程题(2002秋上机试卷01)生成一个三行八列的二维数组A(3,8),其中前两行元素产生的方法是:用初值X1=26及公式Xi+1=(25Xi+357) Mod 1024,产生一个数列:X1、X2、.、X16 。其中X1

26、X8作为A的第一行元素;X9X16作为A的第二行元素;A的第三行元素值取前两行同列元素的最大公约数。最后按图示格式显示在图片框中。第三十五张,PPT共七十七页,创作于2022年6月VB常用算法(六)排序1、算法说明 1) 选择法排序 (1) 从n个数中选出最小数的下标,出了循环,将最小数与第一个数交换位置; (2) 除第一个数外,在剩下的n-1个数中再按方法(1)选出次小的数,与第二个数交换位置; (3) 以此类推,最后构成递增序列。 第三十六张,PPT共七十七页,创作于2022年6月程序代码如下:Private Sub xzPaiXu(a() As Double, sheng As Bool

27、ean) a为需要排序的数组,sheng为True则为升序排列,为False,则为降序排列。 Dim i As Integer, j As Integer Dim temp As Double Dim m As Integer For i = LBound(a) To UBound(a) - 1 进行数组大小-1轮比较 m = i 在第i轮比较时,假定第 i个元素为最值元素 For j = i + 1 To UBound(a) 在剩下的元素中找出最 值元素的下标并记录在m中 If sheng Then 若为升序,则m记录最小元素 下标,否则记录最大元素下标 If a(j) a(m) Then

28、m = j End If Next j 将最值元素与第i个元素交换 temp = a(i) a(i) = a(m) a(m) = temp Next i End Sub 第三十七张,PPT共七十七页,创作于2022年6月2) 冒泡法排序选择排序法在每一轮排序时找最值元素的下标,出了内循环(一轮排序结束),再交换最小数的位置;而冒泡法在每一轮排序时将相邻的数比较,当次序不对就交换位置,出了内循环,最值数已经冒出。 第三十八张,PPT共七十七页,创作于2022年6月Private Sub mpPaiXu(a() As Double, sheng As Boolean) a为需要排序的数组,shen

29、g为True则为升序排列,为False,则为降序排列。 Dim i As Integer, j As Integer Dim temp As Double Dim m As Integer For i = LBound(a) To UBound(a) - 1 进行n-1轮比较 For j = UBound(a) To i + 1 Step -1 从n到i个元素两两进行比较 If sheng Then 若次序不对,马上进行交换 If a(j) a(j - 1) Then temp = a(j) a(j) = a(j - 1) a(j - 1) = temp End If End If Next

30、j 出了内循环,一轮排序结束 最值元素冒到最上边 Next i End Sub 第三十九张,PPT共七十七页,创作于2022年6月实战练习 1) 补充代码(2003秋二(10) 下面是一个采用拉锯式排序法对数组元素按升序进行排序的程序,所谓“拉锯式排序法”是这一遍把最小的元素从下到上送到最上的位置,下一遍则是从上到下把最大的元素送到最下的位置。 Option Base 1 Private Sub Command1_Click() Dim a(10) As Integer,i As Integer For i = 1 To 10 a(i) = Int(Rnd * 10)+1 Text1 = Te

31、xt1 & Str(a(i) Next i Call shaker_sort(a) For i = 1 To 10 Text2 = Text2 & Str(a(i) Next i End Sub 第四十张,PPT共七十七页,创作于2022年6月Private Sub Shaker_sort(k() As Integer) Dim i As Integer,c As Integer,d As Integer Dim t As Integer c = 1 d = (1) Do For (2) Step-1 If k(i-1)k(i) Then t = k(i-1):k(i-1) = k(i):k(

32、i) = t End If Next i (3) For i = c+1 To d If (4) Then t = k(i-1):k(i-1) = k(i):k(i) = t End If Next i d = d-1 Loop While (5) End Sub 第四十一张,PPT共七十七页,创作于2022年6月2) 编程题(2002秋上机试卷04) 把文本框输入的字符串按降序添加到列表框中。第四十二张,PPT共七十七页,创作于2022年6月VB常用算法(七)数组元素插入删除 算法说明 数组中元素的插入和删除一般是在已固定序列的数组中插入或删除一个元素,使得插入或删除操作后的数组还是有序的。

33、 基本思路:首先要找到插入位置或要删除的元素。 1) 插入 第四十三张,PPT共七十七页,创作于2022年6月代码如下: Private Sub Command1_Click() Dim a(10) As Integer Dim i As Integer, k As Integer For i = 0 To 9 生成数组 a(i) = i * 3 + 1 Print a(i); Next i Print Print 插入14 For k = 0 To 9 查找插入14在数组中的位置 If 14 a(k) Then Exit For Next k For i = 9 To k Step -1 从

34、最后元素开始逐个后移,腾出位置 a(i + 1) = a(i) Next i a(k) = 14 插入数14 For i = 0 To 10 Print a(i); Next i Print End Sub 第四十四张,PPT共七十七页,创作于2022年6月2) 1 4 7 10 13 16 19 22 25 28第四十五张,PPT共七十七页,创作于2022年6月代码如下: Dim a() as integer . ReDim a(1 to n) For i=k+1 to n a(i-1)=a(i) Next I Redim preserve a(1 to n-1) 第四十六张,PPT共七十七

35、页,创作于2022年6月实战练习1) 补充代码(2001秋二(8) C盘根目录下文件Data4.txt的内容是:2,4,6,8,10,1,3,5,7,9。下面程序的功能是将文件后半部分的奇数分别按序插入到前半部分的适当位置,得到的新数列是:1 2 3 4 5 6 7 8 9 10。(实现方法:第一次调整后的数列是:1 2 4 6 8 10 3 5 7 9第二次调整后的数列是:1 2 3 4 6 8 10 5 7 9)。 第四十七张,PPT共七十七页,创作于2022年6月Option Explict Private Sub Form_Click() Dim A(10) As Integer,i

36、As Integer,J As Integer Open c:Data4.txt For Input As #12 Do (1) J=J+1 Input #12,A(J) Loop Call Insert(A) For i=1 To 10 Print A(i); Next i Print Close #12 End Sub 第四十八张,PPT共七十七页,创作于2022年6月Private Sub Insert(A() As Integer) Dim i As Integer,Putp As Integer,J As Integer Dim Getp As Integer,N As Intege

37、r,Tem As Integer N=UBound(A)/2 Putp=1 Getp=N+1 For i=1 To N Tem=A(Getp) For J=Getp To Putp +1 Step -1 (2) Next J A(Putp)=Tem Getp=Getp+1 Putp= (3) Next i End Sub 第四十九张,PPT共七十七页,创作于2022年6月2) 补充代码(2001春二(8) 下面程序得功能是将无序数组中相同得数只保留一个,其余得删除,并输出经过删除后的数组元素,删除相同数是通过将该数组元素后面的元素在数组内依次前移替换前一个元素的值实现的。数组各元素的值从文件d

38、ata.txt中读取。 第五十张,PPT共七十七页,创作于2022年6月Option Explict Option Base 1 Private Sub Form_Click() Dim I As Integer,J As Integer,K As Integer Dim A()As Integer,T As Integer,M As Integer Open c:my documents2000testdata.txt For Input As #1 Do While (1) I=I+1 Redim Preserve A(I) Input #1,A(I) Loop M=1:T= (2) Do

39、 While MT I=M+1 Do While I high Then 没有查找到 index = -1 Exit Sub End If mid = (low + high) 2 取查找区间的中点 If Key = a(mid) Then 查找到,返回下标 index = mid Exit Sub ElseIf Key a(mid) Then 查找区间在上半部分 high = mid - 1 Else low = mid + 1 查找区间在下半部分 End If Call birSearch(a, low, high, Key, index) 递归调用查找函数 End Sub 第五十四张,P

40、PT共七十七页,创作于2022年6月调用方法: Private Sub Command1_Click() Dim a(11) a(1) = 5: a(2) = 13: a(3) = 19: a(4) = 21: a(5) = 37 a(6) = 56: a(7) = 64: a(8) = 75: a(9) = 80: a(10) = 88: a(11) = 92 Dim ind As Integer Call birSearch(a, LBound(a), UBound(a), 21, ind) Print ind End Sub 第五十五张,PPT共七十七页,创作于2022年6月实战练习 补

41、充代码(2002春二(9) C盘根目录下stu.txt文件中以下的格式保存着学生姓名及班号信息。本程序的功能是:读取该文件中的数据,再利用InputvBox输入要查找的学生姓名,通过顺序查找,给出找到或找不到的信息。附图是某同学被找到时显示的信息窗口。 张文,机械01 李明,机械01 王文卉,机械01 何宇宙,电子02第五十六张,PPT共七十七页,创作于2022年6月Option Explicit Option Base 1 Private Sub Form_click() Dim stu() As String, glass() As String, i As Integer Dim n A

42、s Integer, name As String, k As Integer Open c:stustu.txt For Input As #11 Do While (1) (2) ReDim Preserve stu(n), glass(n) Input #11, stu(n), glass(n) Loop name = InputBox(输入欲查找的学生姓名:) Call search(name, stu, k) If k = n Then MsgBox (3) Else MsgBox 无此人。 End If Close #11 End Sub 第五十七张,PPT共七十七页,创作于202

43、2年6月Private Sub search(name As String, stu() As String, k As Integer) Dim i As Integer For i = 1 To UBound(stu) If name = stu(i) Then (4) End If Next i (5) End Sub第五十八张,PPT共七十七页,创作于2022年6月VB常用算法(九)数学应用 算法说明 1) 初等数学 递推法 又称为“迭代法”,其基本思想是把一个复杂的计算过程转化为简单过程的多次重复。每次重复都在旧值的基础上递推出新值,并由新值代替旧值。 问题:猴子吃桃子 小猴子有若干

44、桃子,第一天吃掉一半多一个;第二天吃掉剩下的一半多一个.;如此,到第七天早上要吃时,只剩下一个桃子。问小猴子一开始共有多少桃子? 分析:可以最后一天桃子数推出倒数第二天的桃子数;再从倒数第二天推出倒数第三天桃子数. 设第n天桃子数为xn,前一天桃子数是:xn1,则有关系: xnxn1/2-1 第五十九张,PPT共七十七页,创作于2022年6月程序如下:Private Sub Command1_Click() Dim n%, i% x = 1 第七天桃子数 Print 第七天桃子数: 1只 For i = 6 To 1 Step -1 x = (x + 1) * 2 Print 第 & i &

45、天桃子数: & x & 只 Next i End Sub 第六十张,PPT共七十七页,创作于2022年6月穷举法 又称枚举法,即将所有可能情况一一测试,判断是否满足条件,一般用循环实现。 问题:百元买鸡问题。 假定小鸡每只5角;公鸡每只2元;母鸡每只3元。现在有100元,要求买100只鸡,编程列出所有可能的购鸡方案。 分析: 设母鸡、公鸡、小鸡分别x、y、z只,则有: xyz100 3x2y0.5z100 程序一: Private Sub Command1_Click() Dim x%, y%, z% For x = 0 To 100 For y = 0 To 100 For z = 0 To

46、 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 第六十一张,PPT共七十七页,创作于2022年6月程序二(优化)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 Ne

47、xt y Next x End Sub 第六十二张,PPT共七十七页,创作于2022年6月2) 高等数学 求积分 近似计算积分:s=13(x3+2x+5)dx 代码如下: Public Function f(ByVal x!) 被积函数 f = x * (x * x + 2) + 5 End Function 第六十三张,PPT共七十七页,创作于2022年6月Public Function trapez(ByVal a!, ByVal b!, ByVal n%) As Single b、a分别为积分上下限,n为等分数 Dim sum!, h!, x! h = (b - a) / n sum =

48、 (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 第六十四张,PPT共七十七页,创作于2022年6月数论综合题 此类题目比较广泛,必须给以足够重视。 历年题目有:平方数、零巧数、拟互满数、回文数、酉完数、完数、幸运数、逆序数以及无暇素数、超级素数、因子和等。 第六十五张,PPT共七十七页,创作于2022年6月实

49、战练习 1) 补充代码(2002秋二(10) 找出由两个不同数字组成的平方数,并将结果按图中的格式显示在列表框 List1中。第六十六张,PPT共七十七页,创作于2022年6月Option Explicit Private Sub Command1_Click() Dim I As Long, N As Long For I = 11 To 300 (1) If Verify(N) Then (2) End If Next I End Sub 第六十七张,PPT共七十七页,创作于2022年6月Private Function Verify( (3) ) As Boolean Dim A(0 T

50、o 9) As Integer, I As Integer, Js As Integer Do While N 0 (4) N = N 10 Loop For I = 0 To 9 Js = Js + A(I) Next I (5) End Function 第六十八张,PPT共七十七页,创作于2022年6月1) 编程题(2004秋上机试卷08) 一个正整数被称为奇妙平方数,如果此数的平方与它的逆序数的平方互为逆序数。例如, 122=144, 212=441,12 与 21 互逆 ,144 与 441 互逆 ,12 就是奇妙平方数。找出 1-300 以内所有的奇妙平方数。 第六十九张,PPT共

51、七十七页,创作于2022年6月VB常用算法(十)字符处理(统计与加密) 算法说明 1) 加密解密 最简单的加密方法是:将每个字母加一序数,例如5,这时: “A”F”,”a” ”f”,”B” ”G”,”b” ”g”Y” ”D”, ”y” ”d”,”Z” ”E”, ”z” ”e” 解密是加密的逆操作。 界面如下: 第七十张,PPT共七十七页,创作于2022年6月代码如下:Option Explicit Private Sub Command1_Click() Dim strInput$, Code$, Record$, c As String * 1 Dim i%, length%, iAsc% strInput = Text1.Text length = Len(Trim(strInput) Code = For i = 1 To length c = mid(strInput, i, 1) Select Case c Case A To Z iAsc = Asc(c) + 5 If iAsc Asc(Z) Then iAsc

温馨提示

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

评论

0/150

提交评论