首页 VB常考算法(cxy)

VB常考算法(cxy)

举报
开通vip

VB常考算法(cxy)VB常考算法 算法(Algorithm):计算机解题的基本思想方法和步骤。 算法的描述:是对要解决一个问题或要完成一项任务所采取的方法和步骤的描 述,包括需要什么数据(输入什么数据、输出什么结果)、采用什么结构、使用什么语句以及如何安排这些语句等。 程序的结构:输入――处理――输出。其中处理包括过程调用。 1. 简单算法 1.计数 2. 求阶乘 3. 累加、累乘、综合做计算 最近考题有: 03秋01编程题 03秋03编程题 03秋04编程题 03秋06改错题 04春01编...

VB常考算法(cxy)
VB常考算法 算法(Algorithm):计算机解题的基本思想方法和步骤。 算法的描述:是对要解决一个问题或要完成一项任务所采取的方法和步骤的描 述,包括需要什么数据(输入什么数据、输出什么结果)、采用什么结构、使用什么语句以及如何安排这些语句等。 程序的结构:输入――处理――输出。其中处理包括过程调用。 1. 简单算法 1.计数 2. 求阶乘 3. 累加、累乘、综合做计算 最近考题有: 03秋01编程题 03秋03编程题 03秋04编程题 03秋06改错题 04春01编程题 04春05编程题 以及相应的一些笔试的完善程序题 此三类问题都要使用循环,①要注意根据问题确定循环变量的初值、终值或结束条件,②更要注意用来 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示计数、和、阶乘的变量的初值 例:编写求n项和的程序。求和公式如下: N可取值1,2,3,4。。。。。 Option Explicit Const pi As Double = 3.1415926353 Function fun(n As Integer, x As Single) As Single Dim k As Integer, s As Single, a As Single For k = 1 To n a = (-1) ^ k * (pi / 2) ^ (2 * k) / fact(2 * k) * x ^ (4 * k + 1) / (4 * k + 1) s = s + a Next k fun = s End Function Function fact(n As Integer) As Long Dim i As Integer fact = 1 For i = 1 To n fact = fact * i Next i End Function Private Sub Command1_Click() Dim x As Single, n As Integer, i As Integer x = Text1 n = text2 For i = 1 To n list1.AddItem "s(" & CStr(i) & ")=" & CStr(fun(i, x)) Next i End Sub 4.求两个整数的最大公约数、最小公倍数等 分析:求最大公约数的算法思想:(最小公倍数=两个整数之积/最大公约数) (1) 对于已知两数m,n,使得m>n; (2) m除以n得余数r; (3) 若r=0,则n为求得的最大公约数,算法结束;否则执行(4); (4) m←n,n←r,再重复执行(2)。 最近考题有:03秋05编程题 03秋08编程题 例如: 求 m=14 ,n=6 的最大公约数. m n r 14 6 2 6 2 0 m=inputBox("m=") n=inputBox("n=") nm=n*m If m < n Then t = m: m = n: n = t r=m mod n Do While (r <> 0) m=n n=r r= m mod n Loop Print "最大公约数=", n Print "最小公倍数=", nm/n 注意:因为m、n的值在过程中被改变,所以在过程调用时m,n一般设置为byval 5.判断素数 只能被1或本身整除的数称为素数 基本思想:把m作为被除数,将2~INT( )(也可以是n-1或n/2)作为除数,如果都除不尽,m就是素数,否则就不是。(可用以下程序段实现) m =val( InputBox("请输入一个数")) For i=2 To int(sqr(m)) If m Mod i = 0 Then Exit For Next i If i > int(sqr(m)) Then Print "该数是素数" Else Print "该数不是素数" End If 将其写成一函数,若为素数返回True,不是则返回False Private Function Prime( m as Integer) As Boolean Dim I as integer Prime=True For i=2 To int(sqr(m)) If m Mod i = 0 Then Prime=False Exit For endif Next i End Function 此算法非常重要,经常考到,务必要掌握!不仅考其本身,也经常考其应用,如质因子等。 最近考题有:05春06编程题 04秋06改错题 04秋08改错题 04春03编程题 例: 找出1-100之间所有连续4个或4个以上整数组成的序列,要求序列中每个整数均必须具有两个不同素因子。例如,33(素因子3、11)、34(素因子2、17)、35(素因子5、7)、36(素因子2、3),故33、34、35、36就符合要求。 Private Sub Command1_Click() Dim P(25) As Integer, I As Integer, K As Integer Dim S As String For I = 2 To 100 If Prime(I) Then K = K + 1 P(K) = I ‘P数组存放的是100以内的所有素数,即可能的因子 End If Next I For I = 4 To 100 S = "": K = 0 Call sub1(I, P, S, K) If K >= 4 Then Text1 = Text1 & "(" & S & ")" & vbCrLf End If Next I End Sub Private Sub sub1(I As Integer, P() As Integer, S As String, Js As Integer) Dim A As Integer, J As Integer, N As Integer I = I - 1 Do I = I + 1 J = 1 ‘J是P数组下标 N = 0 Do While P(J) <= I / 2 And N < 2 ‘N是因子个数 If I Mod P(J) = 0 Then N = N + 1 End If J = J + 1 Loop If N >= 2 Then ‘JS是符合条件的数的个数 Js = Js + 1 S = S & Str(I) End If Loop While N >= 2 End Sub Private Function Prime(N As Integer) As Boolean Dim K As Integer For K = 2 To Sqr(N) If N Mod K = 0 Then Exit Function Next K Prime = True End Function 2. 较复杂算法 (一)排序问题 单独考排序并不多,一般是综合其他类型的题目的考到。 其中比较的思想非常重要。 1.选择法排序(升序) 基本思想: 1)对有n个数的序列(存放在数组a(n)中),从中选出最小的数,与第1个数交换位置; 2)除第1 个数外,其余n-1个数中选最小的数,与第2个数交换位置; 3)依次类推,选择了n-1次后,这个数列已按升序排列。 下面给出一个示例 初始状态 23 78 96 18 60 15 82 23 78 96 18 60 15 82 第1次交换之后 15 78 96 18 60 23 82 第2次交换之后 15 18 96 78 60 23 82 第3次交换之后 15 18 23 78 60 96 82 第4次交换之后 15 18 23 60 78 96 82 第5次交换之后 15 18 23 60 78 96 82 第6次交换之后 15 18 23 60 78 82 96 第7次交换之后 15 18 23 60 78 82 96 程序代码如下: For i = 1 To n - 1 'n个数需进行n-1趟 iMin = i 'iMin用来 记录 混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载 最小值的位置 For j = i + 1 To n If A(iMin) > A(j) Then iMin = j Next j t = A(i) A(i) = A(iMin) '交换第i个和第imin个 A(iMin) = t Next I 2.冒泡法排序(升序) 基本思想:(将相邻两个数比较,小的调到前头) 1)有n个数(存放在数组a(n)中),第一趟将每相邻两个数比较,小的调到前头,经n-1次两两相邻比较后,最大的数已“沉底”,放在最后一个位置,小数上升“浮起”; 2)第二趟对余下的n-1个数(最大的数已“沉底”)按上法比较,经n-2次两两相邻比较后得次大的数; 3)依次类推,n个数共进行n-1趟比较,在第j趟中要进行n-j次两两比较。 我们通过一个例子进行说明 初始状态 23 78 96 18 60 15 82 第1趟排序 23 78 96 18 60 15 82 23 78 96 18 60 15 82 23 78 96 18 60 15 82 23 78 18 96 60 15 82 23 78 18 60 96 15 82 23 78 18 60 15 96 82 23 78 18 60 15 82 96 第1趟排序后 23 78 18 60 15 82 96 第2趟排序后 23 18 60 15 78 82 96 第3趟排序后 18 23 15 60 78 80 96 第4趟排序后 18 15 23 60 78 80 96 第5趟排序后 15 18 23 18 60 15 82 第6趟排序后 23 78 96 18 60 15 82 程序段如下 For i = 1 To n - 1 For j = 1 To n-i If a(j) > a(j+1) Then temp=a(j): a(j)=a(j+1): a(j+1)=temp End if Next j Next i 3.合并法排序(将两个有序数组A、B合并成另一个有序的数组C,升序) 基本思想: 1)先在A、B数组中各取第一个元素进行比较,将小的元素放入C数组; 2)取小的元素所在数组的下一个元素与另一数组中上次比较后较大的元素比较,重复上述比较过程,直到某个数组被先排完; 3)将另一个数组剩余元素抄入C数组,合并排序完成。 程序段如下: Do While ia <= UBound(A) And ib <= UBound(B) '当A和B数组均未比较完 If A(ia) < B(ib) Then C(ic) = A(ia): ia = ia + 1 Else C(ic) = B(ib): ib = ib + 1 End If ic = ic + 1 Loop Do While ia <= UBound(A) 'A数组中的剩余元素抄入C数组 C(ic) = A(ia) ia = ia + 1: ic = ic + 1 Loop Do While ib <= UBound(B) 'B数组中的剩余元素抄入C数组 C(ic) = B(ib) ib = ib + 1: ic = ic + 1 Loop 4插入法排序(把一个数插到有序数列中,插入后数列仍然有序) 基本思想:n个有序数(从小到大)存放在数组a(1)—a(n)中,要插入的数x。 最近考题:05春07改错题 首先确定x插在数组中的位置P;(可由以下语句实现) p=1 do while x>a(p) and p<=n p=p+1 loop a(p)—a(n)元素向后顺移一个位置以空出a(p)元素放入x,可由以下语句实现: for i=n to p step-1 a(i+1)=a(i) next i a(p)=x 将其写成一插入函数 Private Sub Instert(a() As Single, x As Single) Dim p%, n%, i% n = UBound(a) ReDim Preserve a(n + 1) p = 0 Do While x > a(p) And p < =n ' 确定x应插入的位置 p = p + 1 Loop For i = n To p Step -1 a(i + 1) = a(i) Next i a(p) = x End Sub (二)查找问题 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 = 1 Do While x <> a(p) And p < =n p = p + 1 Loop 下面写一查找函数Find,若找到则返回下标值,找不到返回0 Option Base 1 Private Function Find( a( ) As Single,x As Single) As Integer Dim n%,p% n=Ubound( a ) p = 1 Do While p < n And x <> a(p) p = p + 1 Loop If If p = n And a(p) <> x Then p = 0 Find=p End Function 2.折半查找法(二分法查找)(只能对有序数列进行查找) 基本思想:设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)在确定了新的查找范围后,重复进行以上比较,直到找到或者bot<=top。 将上面的算法写成如下函数,若找到则返回该数所在的下标值,没找到则返回-1。 Function search(a() As Integer, x As Integer) As Integer Dim bot%, top%, mid% Dim find As Boolean '代表是否找到 bot = LBound(a) top = UBound(a) find = False '判断是否找到的逻辑变量,初值为False Do While bot <= top And Not find mid = (top + bot) \ 2 If x = a(mid) Then find = True Exit Do ElseIf x < a(mid) Then top = mid - 1 Else bot = mid + 1 End If Loop If find Then search = mid Else search = -1 End If End Function (三)数制转换 进制转换通常有二进制(B)、八进制(O)、十进制(D)、十六进制(H)之间的互相转换。 最近考题有: 05春07编程题 03秋08改错题 1. 十进制转换为二进制 十进制转换为二进制的规则是“除2取余倒着写”。 如 十进制数29 转换为二进制数: 余数 底位 2 29 1 2 14 0 2 7 1 2 3 1 2 1 1 0 高位 即 (29)D=(11101)B 例。编写程序,把输入的十进制数转换为对应的二进制数。 Private Sub cmd10to2_Click() Dim x As Integer, i As Integer Dim A(10) As Integer, str As String i = 1 x = Val(Text1) '除2取余,将余数存放在数组 A中 Do While x <> 0 A(i) = x Mod 2 x = x \ 2 i = i + 1 Loop '将余数从高位到底位依次输出 For j = i - 1 To 1 Step -1 str = str & CStr(A(j)) Next j Text2 = str End Sub 2. 二进制转换为十进制 (11011)2=1*24+1*23+0*22+1*21+1*20=(27)10 Private Sub cmd2to10_Click() Dim s As String '用来存放输入的二进制数 Dim sum As Integer '转换为十进制后的结果 s = Trim(Text1) sum = 0 For i = 1 To Len(s) sum = sum + Val(Mid(s, i, 1)) * 2 ^ (Len(s) - i) Next i Text2 = CStr(sum) End Sub 3. 二进制转换为八进制 由于八进制的一位相当与二进制的三位数,因此,从八进制转换为二进制,只需以小数点为界,向两侧三位一划,不足三位的,用零补足三位,整数部分左侧加零,小数部分右侧加零。 例如:二进制1011011.01011转换为八进制 (1011011.01011)2=(001 011 011.010 110)2=(133.26)8 八进制转换为二进制是上述方法的逆过程 如:(612.521)8=(110 001 010 . 101 010 001)2 例。输入一个二进制数,将其转换为对应的八进制数。 Private Sub Form_Click() Dim x As String, y As String Dim k As Integer, i As Integer Dim s As String, r As String x = Trim(Text1.Text) 'x存放输入的二进制数 k = 3 - Len(x) Mod 3 x = String(k, "0") & x '若输入的x不为3的倍数,则前边加0 For i = 1 To Len(x) Step 3 s = Mid(x, i, 3) '每次取三位 r = r & change(s) '调用函数将三位转换成一位八进制 Next i Text2 = r '输出结果 End Sub Function change(s As String) As Integer Dim i As Integer, sum As Integer For i = 1 To 3 sum = sum + Val(Mid(s, i, 1)) * 2 ^ (3 - i) Next i change = sum '函数名=返回值 End Function 4. 十六进制转换为二进制 十六进制转换为二进制的方法,就是把十六进制的每一位转换成对应的四位二进制数。 程序代码: Private Sub Command1_Click() Dim str1 As String, str2 As String, c As String Dim d As Integer str1 = Trim((Text1)) For i = 1 To Len(str1) c = UCase(Mid(str1, i, 1)) If c >= "0" And c <= "9" Then d = Val(c) ElseIf c >= "A" And c <= "F" Then d = 10 + Asc(c) - 65 Else MsgBox "输入错误" End If str2 = str2 & change(d) Next i Text2 = str2 End Sub ‘把每一位十六进制转换位对应四位二进制 Function change(m As Integer) As String Dim s As String, i As Integer Do While m <> 0 s = CStr(m Mod 2) & s m = m \ 2 i = i + 1 Loop s = String(4 - i, "0") & s change = s End Function (四)数组处理 一般要求是随机生成数组或生成特定数组,然后对数组做处理。随机生成数组只要注意生成随机数的公式就可以了,生成特定数组比较重要。特定数组一般是根据题目要求生成数组,然后对此数组做操作 所做的处理常见的有: 1.找符合条件的元素并交换 找数组(或数组行、列或主、副对角线)的最大或最小元素然后交换行、列或元素 2.找特殊数 3.生成标记数组 由给定数组生成标记数组,对原数组中特殊元素或所有元素做标记,此时一般使用2个数组 最近考题有: 03秋05改错题 03秋02编程题03秋07编程题 04秋05改错题 04秋07编程题 (特殊数组) 04秋01编程题 例: 编写程序,以给定的方式标记出方阵中每一行最小元素的位置。如果某一行有多个 数值相等的最小元素,也要同时标记出来。标记方式为每一行的最小元素为 0 ,其他元素为 1 。 Option Explicit Option Base 1 Dim N As Integer Private Sub Command1_Click() '定义数组 A(N,N) 和标记数组 B(N,N) Dim a() As Integer, b() As Integer N = Val(Text1.Text) ReDim a(N, N) ReDim b(N, N) '生成数组A(N,N) Dim i As Integer, j As Integer For i = 1 To N For j = 1 To N a(i, j) = Int(Rnd * 90 + 10) Next j Next i '输出到Text2 For i = 1 To N For j = 1 To N Text2.Text = Text2.Text & " " & a(i, j) Next j Text2.Text = Text2.Text & vbCrLf Next i '生成标记数组 B(N,N) Dim min As Integer For i = 1 To N For j = 1 To N min = minx(a, i) If a(i, j) = min Then b(i, j) = 0 Else b(i, j) = 1 End If Next j Next i '输出到Text2 For i = 1 To N For j = 1 To N Text3.Text = Text3.Text & " " & b(i, j) Next j Text3.Text = Text3.Text & vbCrLf Next i End Sub '本函数求出数组中每行的最小值 Function minx(a() As Integer, i As Integer) As Integer Dim k As Integer Dim m As Integer m = a(i, 1) For k = 2 To N If m > a(i, k) Then m = a(i, k) Next k '函数名=返回值 minx = m End Function (五)字符串的一般处理 1.简单加密和解密 加密的思想是: 将每个字母按照一定的规则进行转换,转换为其他字母或符号。例如将每个字母C加(或减)一序数K,即用它后的第K个字母代替,变换式公式: c=chr(Asc(c)+k) 例如序数k为5,这时 "A"→ "F", "a"→"f","B"→"G"… 当加序数后的字母超过"Z"或"z"则 c=Chr(Asc(c)+k -26) 例如:You are good→ Dtz fwj ltti 解密为加密的逆过程 将每个字母按照相反的规则进行转换,转换为其他字母或符号。例如将每个字母C减(或加)一序数K,即 c=chr(Asc(c)-k), 例如序数k为5,这时 "Z"→"U", "z"→"u","Y"→"T"… 当加序数后的字母小于"A"或"a"则 c=Chr(Asc(c)-k +26) 最近考题有:05春02改错题 04秋04改错题 03秋01改错题 2.统计文本单词的个数 算法思路: (1)从文本(字符串)的左边开始,取出一个字符;设逻辑量WT表示所取字符是否是单词内的字符,初值设为False (2)若所取字符不是“空格”,“逗号”,“分号”或“感叹号”等单词的分隔符,再判断WT是否为True,若WT不为True则表是新单词的开始,让单词数Nw=Nw+1,让WT=True; (3)若所取字符是“空格”,“逗号”,“分号”或“感叹号”等单词的分隔符, 则表示字符不是单词内字符,让WT=False; 再依次取下一个字符,重得(2)(3)直到文本结束。 最近考题有: 03秋07改错题 下面程序段是字符串strI中包含的单词数 Nw = 0: Wt = False nL = Len(RTrim(strI)) For i = 1 To nL strT = Mid$(strI, i, 1) '取第i个字符 Select Case strT Case " ", ",", ";", "!" Wt = False Case Else If Not Wt Then Nw = Nw + 1 Wt = True End If End Select Next i Print "单词数为:", Nw 3.查找特定字符并替换 算法思路:假设要在字符串s中查找是否有字符串subs1,将子串subs1替换为subs2.k为subs1长度,n为s长度,i为subs1在s中的所在位置 (1)如果可以用instr则用它,如果不可以用,则用循环结构逐个查找,如果题目不需要区分大小写,则全部转换为大写或小写再做处理 (2)若找到,则替换。替换的语句为: S=Left(S,i-1) & SubS2 & Right(S,N-i-K+1) 最近考题有: 04春08编程题 05春03编程题 4.分离数据 算法思路: (1)对文本(字符串)s用instr函数,求出每一个分隔符的位置n; (2)若位置n<>0,则用一变量t表示位置n之前的所有字符(即为要分离的第一个数据),可放入数组中(一般此处均为动态数组,还要注意动态数组的用法); (3)重新定义文本(字符串)s,新的s为分隔符n之后的数据 重复直到n=0结束。 注意:此处一般用do循环,因为分隔符个数未知 若分隔符不止一个,则要注意灵活应用 最近考题有:05春02编程题 04秋04编程题 04春03改错题 03秋02改错题 05春05改错题(分隔符不止一个) 例: 本程序的功能是:首先按给定格式(数据以逗号分隔,-1表示数据结束)将输入到文本框1中的数据依次存入一个数组,然后为该组数据建立一个按从大到小次序排列的索引表并显示在文本框2中。如下图所示,文本框2中的第一个数据4表示文本框1中第4个数最大;文本框2中的最后一个数据8表示文本框1中第8个数最小。 Private Sub Command1_Click() Dim p() As Integer, k As Integer, D( ) As Integer Dim i As Integer,st As String st=Text1 Call lnum(st,p) ‘分离数据到P数组 Call Ind(p,D) ‘生成排序号数组D st=”” For i=1 To UBound(D) st=st & Str(D(i)) Next i Text2=st End Sub Private Sub lnum(st As String,p( ) As Integer ) Dim k As Integer, t As Integer, n As Integer Do n=InStr(st,”,”) If t<>-1 And n<>0 Then t=Val(Left(st,n-1)) k=k+1 ReDim Preserve p(k) p(k)=t st=Right(st,Len(st)-n) Else Exit Do End If Loop End Sub Private Sub Ind(p( ) As Integer,D( ) As Integer) Dim t As Integer, i As Integer, j As Integer, maxv As Integer ReDim D(UBound(p)) For i=1 To Ubound(p) D(i)=i Next i For i=1 To UBound(p)-1 For j=i+1 To UBound(p) If p(i)0 Then s=s & Str(num(i)) Else s=s & Str(num(i)) & vbCrLf End If If JX(num(i), n) Then List1.AddItem Str(num(i)) End If Next i Text2=s End Sub Private Function JX(ByVal n As Long, k As Integer) As Boolean Dim i As Integer, p() As Integer, t As Integer ReDim p(k) For i=k To 1 Step -1 p(i)=n Mod 10 n=n\10 Next i For i=1 to k-1 If p(i)>p(i+1) Then t=t+1 End If Next i If t=k-1 Then JX=True End Function (八)多个数围成一圈找其中的特定数 算法思路:所有数只是放在一个数组中,想象其排成一圈即a(n)之后还有一个元素a(1) 最近考题有:04秋02改错题 05春08改错题 05春04编程题 例1书P115 5 例2 书P114 例5-12 例3 将15个正整数排成圆圈依次编号(例如,26为第一号)。编写程序,找出拐点元素(所谓拐点元素,是指它比左右相邻元素都大或都小),并输出拐点元素的值及位置。 Private Sub Command1_Click() Dim i As Integer, a(15) As Integer, flag As Boolean Dim st As String, k As Integer, j As Integr List1.Clear Call rnum(a) For i=1 To 15 st=st & Str(a(i)) Next i Text1=st st=”” For i=1 To 15 k=i+1: j=i-1 If k>15 Then k=1 ’实现一个圈 If j<1 Then j=15 If a(i)>a(j) And a(i)>a(k) Or a(i)UBound(a) End Sub 例4 50枚棋子围成圆圈,依次编号1,2,3,4,…,50,每隔一枚棋子取出一枚,反复此动作,直到最后留下一枚。若要求最后留下的一枚棋子的号码是42号,那么该从几号棋子开始取呢(下图为参考界面)? Option Explicit Private Sub Command1_Click() Dim Chess(50) As Integer, I As Integer, J As Integer Dim K As Integer, idx As Integer For I = 1 To 50 For J = 1 To 50 Chess(J) = 1 Next J Call Get_Chess(Chess, I, K) If K = 42 Then Text1 = "从第" & Str(I) & "号棋子开始取" Exit For End If Next I End Sub Private Sub Get_Chess(Chess() As Integer, ByVal idx As Integer, Over As Integer) Dim Ub As Integer, Counter As Integer, K As Integer Ub = UBound(Chess) Chess(idx) = 0 Counter = 1 Do Until Counter = Ub - 1 K = 0 Do Until K = 2 idx = idx + 1 If idx > Ub Then idx = 1 K = K + Chess(idx) Loop Chess(idx) = 0 Counter = Counter + 1 Loop For Over = 1 To Ub - 1 If Chess(Over) <> 0 Then Exit For Next Over End Sub 例5 将20个棋子围成一圈,按顺时针方向从1-20给棋子编号,从中取出棋子的规则是:从某编号棋子开始取出第1个棋子,然后按顺时针方向围绕周数棋子,从1数到2取第2个,再从1数到3取第3个,再从1数到4取第4个……直到取完。本程序的功能就是找出依照上述规则取棋子的编号序列,使得最后一个被取棋子的编号为指定的编号。例如:若指定最后取棋子的编号为9,则必须从编号为17的棋子开始取第一个棋子,取棋子的顺序是:17,19,2,6,11,18……。完善程序,实现以上功能。 Private Sub command1_click() Dim a(20) As Integer, I As Integer, k As Integer Dim n As Integer, number As Integer, s As String number = Val(Text2) For k = 1 To 20 For I = 1 To 20 a(I) = 1 Next I s = Le
本文档为【VB常考算法(cxy)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_828450
暂无简介~
格式:doc
大小:207KB
软件:Word
页数:22
分类:其他高等教育
上传时间:2012-06-15
浏览量:22