超级算法 vb源程序
- 格式:doc
- 大小:47.00 KB
- 文档页数:7
VB算法(技巧)及控件使用一、算法1、大小写字母转换(1)只进行字母转换:直接用Ucase$、Lcase$函数。
(2)字母和其它字符分别转换:分别判断各类字符。
例如:If a$<=”Z” and a$>=”A”‘字符比较Csae “A” to “Z”aa=chr$(KeyAscii+32) ‘大小字母Ascii码相差322、数据(字符)格式输出Print方法中的“,”、“;”、“”符号的使用。
Print方法中Spc、Tab函数的使用。
3、每行输出n个数。
(t为计数)If t mod n=0 then print …print 输出If t mod n=0 then text1 & chr(13) & chr(10) …text 输出注:vbCrLf ==chr(13) & chr(10)4、交换算法:t=x:x=y:y=t5、累加算法:s= s + x …关键是x的构造连乘算法:p= p * x …关键是x的构造6、求最大公约数、最小公倍数7、产生一组S – T 之间的随机整数算法如下: S=20:T=50Randomize ‘注意 Randomize语句的作用a=S+Int(Rnd()*(T-S+1))Print a int(x)=abs(x)*****还可产生随机字符。
8、判断正整数、负整数、偶数、奇数等判断正整数(包括0):int(x)=abs(x) ‘如不包括0呢?判断负整数(包括0):-int(x)=abs(x)‘如不包括0呢?偶数: x mod 2=0 、奇数:x mod 2=1 (X是整数的前提下)9、构造“四舍五入”、“保留小数四舍五入”Y=int(x+0.5) ‘对x四舍五入Y=int(x*100+0.5)/100 ‘对x保留2位小数四舍五入10、数的按位分离,设x为三位数A= x\100 ‘取百位B=(x mod 100)\10 ‘取十位C= x mod 100 ‘取个位合成倒序数y : y= c * 100 + b * 10 + a应用:(1)求“水仙花数”:所谓“水仙花数”,就是一个三位数的每一为的平方和等于这个三位数。
八转十Private Sub Command1_Click(Dim i As Long, m As Stringm = Val(Text1.TextFor i = 1 To Len(mn = n * 8 + Val((Mid(m, i, 1Next iText2 = nEnd Sub动态数组杨辉三角形Private Sub Command1_Click(Dim a( As IntegerDim i As Integer, j As Integer, n As Integer Don = Val(InputBox("请输入行数(1-15):" Loop Until n >= 1 And n <= 15ReDim a(n, nFor i = 1 To nFor j = 1 To iIf j = 1 Or j = i Thena(i, j = 1Elsea(i, j = a(i - 1, j - 1 + a(i - 1, jEnd IfPrint a(i, j;Next jPrintNext iEnd Sub二维数组行列交换Option ExplicitOption Base 1Private Sub Command1_Click(Dim a(3, 3 As Integer, b(3, 3 As Integer Dim i As Integer, j As IntegerFor i = 1 To 3For j = 1 To 3a(i, j = (i - 1 * 3 + jPicture1.Print a(i, j; Next jPicture1.PrintNext iFor i = 1 To 3For j = 1 To 3b(i, j = a(j, iNext jNext iFor i = 1 To 3For j = 1 To 3Picture2.Print b(i, j; Next jPicture2.PrintNext iEnd Sub计算PIA 值Option ExplicitPrivate Sub Form_Click(Dim s As Integer, n As Single, t As Single, pi As Single t = 1: pi = 0: n = 1: s = 1Do While (Abs(t >= 0.000001pi = pi + tn = n + 2s = -st = s / nLooppi = pi * 4Print "pi="; piEnd Sub计算最大公约数Option ExplicitPrivate Sub Command1_Click(Dim m As Integer, n As Integer, r As Integerm = Val(Text1.Textn = Val(Text2.Textr = m Mod nWhile r <> 0m = nn = rr = m Mod nWendLabel3.Caption = "最大公约数为:" & nEnd SubPrivate Sub Frame1_DragDrop(Source As Control, X As Single, Y As Single End Sub进制转换Option ExplicitPrivate Sub Command1_Click(Dim num As Integer, base As Integer, r As Integernum = Val(Text1.TextText2.Text = ""Select Case TrueCase Option1.Valuebase = 2Case Option2.Valuebase = 8End SelectDo While num > 0r = num Mod basenum = num \ baseText2.Text = LTrim(Str(r & Text2.TextLoopEnd SubPrivate Sub Command2_Click(EndEnd Sub冒泡法排序Option ExplicitPrivate Sub Command1_Click(Const n As Integer = 10Dim a(1 To n As IntegerDim i As Integer, j As Integer, temp As Integer For i = 1 To na(i = Val(InputBox("请输入数据:"Picture1.Print a(i;Next iFor i = 1 To n - 1For j = 1 To n - 1If a(j > a(j + 1 Thentemp = a(ja(j = a(j + 1a(j + 1 = tempEnd IfNext jNext iFor i = 1 To nPicture2.Print a(i;Next iEnd Sub偶数的累加和Option ExplicitPrivate Sub Form_Click(Dim i As Integer, sum As Integer sum = 0For i = 2 To 100 Step 2sum = sum + iNext iPrint "sum="; sumEnd Sub判断M 是否为素数判断m 是否为素数Option ExplicitPrivate Sub Form_Click(Dim m As Integer, k As Integer, i As Integer m = Val(InputBox("请输入一个正整数:" k = Sqr(mFor i = 2 To kIf m Mod i = 0 Then Exit ForNext iIf i > k ThenPrint m, "是素数"ElsePrint m, "不是素数"End IfEnd Sub生成图形生成图形Option ExplicitPrivate Sub Command1_Click(Dim ch As String, ln As Integer, temp As Integer Dim i As Integer, j As Integer, n As Integer Picture1.Clsch = UCase(Text1.Textln = Val(Text2.Textn = Asc(ch - Asc("A"For i = 1 To lnPicture1.Print Tab(15 - i;For j = 1 To 2 * i - 1temp = Asc("A" + nIf (temp > Asc("Z" Thenn = 0temp = Asc("A"End IfPicture1.Print Chr(temp;n = n + 1Next jPicture1.PrintNext iEnd Sub数据插入算法数据插入算法Option ExplicitPrivate Sub Form_click(Const n As Integer = 5Dim a(Dim i As Integer, num As Integer ReDim a(nFor i = 1 To na(i = i * 2Print a(i;Next iPrintnum = Val(InputBox("请输入数据:"ReDim Preserve a(n + 1For i = n To 1 Step -1If num > a(i Then Exit Fora(i + 1 = a(iNext ia(i + 1 = numFor i = 1 To n + 1Print a(i;Next iPrintEnd Sub顺序查找Option ExplicitPrivate Sub Form_Click(Dim a(20 As Integer, i As Integer, objnum As Integer, flage As Boolean Randomize For i = 1 To 20a(i = Int(Rnd * 20 + 1Print a(i;Next iPrintobjnum = Val(InputBox("请输入要查找的数:"flage = FalseFor i = 1 To 20If objnum = a(i Thenflage = True Exit For End If Next i If flage = True Then Print objnum; "找到" Else Print objnum; "未找到" End If End Sub。
VB程序设计地常用算法算法(Algorithm):计算机解题地基本思想方法和步骤.算法地描述:是对要解决一个问题或要完成一项任务所采取地方法和步骤地描述,包括需要什么数据(输入什么数据、输出什么结果)、采用什么结构、使用什么语句以及如何安排这些语句等.通常使用自然语言、结构化流程图、伪代码等来描述算法.一、计数、求和、求阶乘等简单算法此类问题都要使用循环,要注意根据问题确定循环变量地初值、终值或结束条件,更要注意用来表示计数、和、阶乘地变量地初值.例:用随机函数产生100个[0,99]范围内地随机整数,统计个位上地数字分别为1,2,3,4,5,6,7,8,9,0地数地个数并打印出来.本题使用数组来处理,用数组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]范围内地随机整数,每行10个打印出来For i = 1 To 100a(i) = Int(Rnd * 100)If a(i) < 10 ThenForm1.Print Space(2); a(i);ElseForm1.Print Space(1); a(i);End IfIf i Mod 10 = 0 Then Form1.PrintNext i'统计个位上地数字分别为1,2,3,4,5,6,7,8,9,0地数地个数,并将统计结果保存在数组x(1),x(2),...,x(10)中,将统计结果打印出来For i = 1 To 100p = a(i) Mod 10 '求个位上地数字If p = 0 Then p = 10x(p) = x(p) + 1Next iForm1.Print "统计结果"For i = 1 To 10p = iIf i = 10 Then p = 0Form1.Print "个位数为" + Str(p) + "共" +Str(x(i)) + "个"Next iEnd Sub二、求两个整数地最大公约数、最小公倍数分析:求最大公约数地算法思想:(最小公倍数=两个整数之积/最大公约数)(1) 对于已知两数m,n,使得m>n;(2) m除以n得余数r;(3) 若r=0,则n为求得地最大公约数,算法结束;否则执行(4);(4) m←n,n←r,再重复执行(2).例如:求m=14 ,n=6地最大公约数. m n r14 6 262 0m=inputBox("m=")n=inputBox("n=")nm=n*mIf m < n Then t = m: m = n: n = tr=m mod nDo While (r <> 0)m=nn=rr= m mod nLoopPrint "最大公约数=", nPrint "最小公倍数=", nm/n三、判断素数只能被1或本身整除地数称为素数基本思想:把m作为被除数,将2—INT(m)作为除数,如果都除不尽,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 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 = 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 < =np = p + 1Loop下面写一查找函数Find,若找到则返回下标值,找不到返回0Option Base 1Private Function Find( a( ) As Single,x As Single) As IntegerDim n%,p%n=Ubound( a )p = 1Do While x <> a(p) And p < =np = p + 1LoopIf p>n then p=0Find=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.折半查找法(只能对有序数列进行查找)基本思想:设n个有序数(从小到大)存放在数组a(1)----a(n)中,要查找地数为x.用变量bot、top、mid 分别表示查找数据范围地底部(数组下界)、顶部(数组地上界)和中间,mid=(top+bot)/2,折半查找地算法如下:(1)x=a(mid),则已找到退出循环,否则进行下面地判断;(2)x<a(mid),x必定落在bot和mid-1地范围之内,即top=mid-1;(3)x>a(mid),x必定落在mid+1和top地范围之内,即bot=mid+1;(4)在确定了新地查找范围后,重复进行以上比较,直到找到或者bot<=top.将上面地算法写成如下函数,若找到则返回该数所在地下标值,没找到则返回-1.Function search(a() As Integer, x As Integer) As IntegerDim bot%, top%, mid%Dim find As Boolean '代表是否找到bot = LBound(a)top = UBound(a)find = False '判断是否找到地逻辑变量,初值为FalseDo While bot <= top And Not findmid = (top + bot) \ 2If x = a(mid) Thenfind = TrueExit DoElseIf x < a(mid) Thentop = mid - 1Elsebot = mid + 1End IfLoopIf find Thensearch = midElsesearch = -1End IfEnd Function六、插入法把一个数插到有序数列中,插入后数列仍然有序基本思想:n个有序数(从小到大)存放在数组a(1)—a(n)中,要插入地数x.首先确定x插在数组中地位置P;(可由以下语句实现)p=1do while x>a(p) and p<=np=p+1loopa(p)—a(n)元素向后顺移一个位置以空出a(p)元素放入x,可由以下语句实现:for i=n to p step-1a(i+1)=a(i)next ia(p)=x将其写成一插入函数Private Sub Instert(a() As Single, x As Single)Dim p%, n%, i%n = UBound(a)ReDim Preserve a(n + 1)p = 0Do While x > a(p) And p < =n' 确定x应插入地位置p = p + 1LoopFor i = n To p Step -1a(i + 1) = a(i)Next ia(p) = xEnd Sub七、矩阵(二维数组)运算(1)矩阵地加、减运算C(i,j)=a(i,j)+b(i,j) 加法C(i,j)=a(i,j)-b(i,j) 减法(2)矩阵相乘(矩阵A有M*L个元素,矩阵B有L*N个元素,则矩阵C=A*B有M*N个元素).矩阵C中任一元素∑=⨯=lkjkbkiajic1)),(),((),((i=1,2,…,m; j=1,2,…,n)For i = 0 To mFor j = 0 To nc(i, j) = 0For k = 0 To lc(i, j) = c(i, j) + a(i, k) * b(k, j)Next kNext jNext i(3)矩阵传置例:有二维数组a(5,5),要对它实现转置,可用下面两种方式:For i=1 to 5 (2) For i=2 to 5 For j=i+1 to 5 For j=1 to i t=a(i,j) t=a(i,j)a(i,j)= a(j,i) a(i,j)= a(j,i)a(j,i)=t a(j,i)=t Next j N ext jNext i Next i (4)求二维数组中最小元素及其所在地行和列基本思路同一维数组,可用下面程序段实现(以二维数组a(2,3)为例):‘变量max中存放最大值,row,column存放最大值所在行列号Max = a(1, 1): row = 1: Column = 1For i = 1 To 2For j = 1 To 3If a(i, j) > a(row, Column) ThenMax = a(i, j)row = iColumn = jEnd IfNext jNext iPrint "最大元素是"; MaxPrint "在第" & row & "行,"; "第" & Column & "列"八、数制转换将一个十进制整数m转换成→r(2-16)进制字符串.方法:将m不断除r 取余数,直到商为零,以反序得到结果.下面写出一转换函数,参数idec为十进制数,ibase为要转换成数地基(如二进制地基是2,八进制地基是8等),函数输出结果是字符串.Private Function TrDec(idec As Integer, ibase As Integer) As StringDim strDecR$, iDecR%strDecR = ""Do While idec <> 0iDecR = idec Mod ibaseIf iDecR >= 10 ThenstrDecR = Chr$(65 + iDecR - 10) & strDecR ElsestrDecR = iDecR & strDecREnd Ifidec = idec \ ibaseLoopTrDec = strDecREnd 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)下段程序是加密处理:i = 1: strp = ""nL = Len(RTrim(strI))Do While (i <= nL)strT = Mid$(strI, i, 1) '取第i个字符If (strT >= "A" And strT <= "Z") TheniA = Asc(strT) + 5If iA > Asc("Z") Then iA = iA - 26strp = strp + Chr$(iA)ElseIf (strT >= "a" And strT <= "z") TheniA = Asc(strT) + 5If iA > Asc("z") Then iA = iA - 26strp = strp + Chr$(iA)Elsestrp = strp + strTEnd Ifi = i + 1LoopPrint strp2.统计文本单词地个数算法思路:(1)从文本(字符串)地左边开始,取出一个字符;设逻辑量WT表示所取字符是否是单词内地字符,初值设为False(2)若所取字符不是“空格”,“逗号”,“分号”或“感叹号”等单词地分隔符,再判断WT是否为True,若WT不为True 则表是新单词地开始,让单词数Nw=Nw+1,让WT=True;(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 " ", ",", ";", "!"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版权申明本文部分内容,包括文字、图片、以及设计等在网上搜集整理.版权为个人所有This article includes some parts, including text, pictures, and design. Copyright is personal ownership.lzq7I。
算法与程序设计VB算法和程序设计的关系算法和程序设计是计算机科学中两个非常重要的概念。
算法指的是解决问题的方法或步骤的有序集合,而程序设计则是将算法转化为能够被计算机执行的程序的过程。
算法是程序设计的基础,它决定了程序的效率和正确性。
VB语言与程序设计VB(Visual Basic)是一种面向对象的程序设计语言,它是由微软公司开发的。
VB语言结合了基本的编程概念和易于使用的图形用户界面(GUI)设计工具,使得程序员能够更快地开发出功能强大的应用程序。
VB语言的特点之一是其易学性和易用性。
与其他编程语言相比,VB具有较为简洁的语法和直观的图形用户界面设计工具,使得初学者也能够迅速上手,并且可以快速开发出功能完善的程序。
算法在VB中的应用在VB中,算法被用来解决各种问题,包括数学运算、字符串操作、图形绘制、数据库操作等。
VB提供了丰富的编程工具和函数库,使得程序员能够轻松地实现各种算法。
例如,VB中的排序算法可以对数组进行排序,使数组中的元素按照特定的顺序排列。
VB中的搜索算法可以在数组或列表中查找特定的元素。
VB还提供了图形绘制算法,使得程序员能够绘制各种图形,如线条、矩形、椭圆等。
,VB还支持数据结构和算法,如栈、队列、链表、二叉树等。
这些数据结构和算法可以帮助程序员解决复杂的问题,并提高程序的效率和性能。
程序设计中的算法优化在程序设计中,算法的选择和优化对程序的效率和性能有着重要的影响。
一个好的算法可以在较短的时间内解决问题,而一个差的算法可能导致程序运行缓慢甚至崩溃。
在VB中,程序员可以使用各种算法优化的技巧来提高程序的性能。
例如,选择合适的数据结构可以减少程序的内存占用和运行时间。
使用适当的算法可以减少程序中的循环或递归次数,提高程序的效率。
算法和程序设计的学习资源想要学习算法和程序设计,可以参考以下资源:《算法导论》:这是一本经典的算法教材,讲解了各种常见的算法和数据结构。
它适用于所有计算机科学专业的学生和从业人员。
VB常用算法总结VB是一种基于Visual Basic语言的编程语言,广泛应用于Windows 操作系统环境下的软件开发。
在VB中,算法的选择和使用对于解决问题是至关重要的。
本文将对VB常用算法进行总结,希望能给读者提供一些编程的指导和参考。
一、排序算法排序算法是一类重要的算法,用于将一组无序的数据按照一定的规则进行排序。
VB中常用的排序算法有冒泡排序、选择排序、插入排序、快速排序等。
1.冒泡排序:从序列的第一个元素开始,依次比较相邻的两个元素,如果它们的顺序错误则交换位置,直到序列被完全排序。
2.选择排序:依次选择未排序序列中的最小元素,将其放到已排序序列的末尾。
3.插入排序:将一个记录插入到已排序好的序列中,从而得到一个新的、记录数增1的有序序列。
4.快速排序:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分小,然后分别对这两部分记录继续进行排序,直到整个序列有序。
二、查找算法查找算法用于在一组有序或无序的数据中寻找指定的元素。
VB中常用的查找算法有线性查找、二分查找、哈希查找等。
1.线性查找:从数据的开头开始,逐个比较每一个元素,直到找到目标元素。
2.二分查找:在有序序列中,每次将待查元素与中间位置的元素比较,如果相等则找到,否则将待查元素与中间位置的元素比较,直到找到目标元素或序列为空。
3.哈希查找:通过哈希函数将关键字映射到一个定长的数组上,当需要查找时,根据关键字计算出哈希地址,从数组中访问对应位置的元素。
三、图算法图算法主要用于解决图结构相关的问题,如最短路径、拓扑排序等。
VB中常用的图算法有深度优先、广度优先、Dijkstra算法等。
1.深度优先:从起始节点开始,递归地访问子节点,直到无法继续访问为止,然后回溯到上一级节点,继续访问其尚未被访问的子节点。
2.广度优先:从起始节点开始,依次访问其所有相邻节点,直到访问到目标节点为止。
3. Dijkstra算法:求解带权有向图中单源最短路径问题,通过使用一个优先队列来实现。
计数与求和求数组最大值fmax = x(1)For i = 2 To nIf x(i) > fmax Then fmax = x(i)Next i输入数组For i = 1 To ma(i) = InputBox("a(" + Str(i) + ")=") Next i输出数组(每行n个)For i = 1 To mPrint a(i); if i mod n =0 then printNext i随机数产生[N,M]范围内数组For i = 1 To ma(i) = int(rnd*(M-N+1))+NNext i数组元素倒置For i =1 To n\2t=A(i)A(i)=A(n-i+1)A(n-i+1)=tNext I在数组中查找数1.原始算法For i = 1 To nIf x = a(i) Then j = iNext i2.变种1For i = 1 To 8If x = a(i) ThenExit ForNext i在数组中删除特定的数For i = 1 To 8If x = a(i) Then j = iNext iFor i = j To 7a(i) = a(i + 1)Next i求两个整数的最大公约数、最小公倍数1.原始程序Dim n%,m%,nm%,r% m=Val(InputBox("m="))n=Val(InputBox("n="))nm=n*mIf m<n Then t=m: m=n: n=tr=m mod nDo While (r <> 0)m=nn=rr= m mod nLoopPrint "最大公约数=", nPrint "最小公倍数=", nm/n 2.变种1Dim n%,m%,nm%,r%m=Val(InputBox("m="))n=Val(InputBox("n="))nm=n*mr=m mod nDo While (r <> 0)m=nn=rr= m mod nLoopPrint "最大公约数=", nPrint "最小公倍数=", nm/n 3.变种2Dim n%,m%,nm%,r%m=Val(InputBox("m="))n=Val(InputBox("n="))nm=n*mIf m<n Then t=m: m=n: n=tDo While (r <> 0)r= m mod nm=nn=rLoopPrint "最大公约数=", mPrint "最小公倍数=", nm/m判断素数及验证哥德巴赫猜想1.判断N是否是素数For i= 2 To Int(Sqr(n))If n Mod i = 0 Then Exit ForNext iIf i> Int(Sqr(n)) ThenPrint n; " 是素数"ElsePrint n; " 不是素数"End If2.判断N是否是素数(变种1)flag=0For i= 2 To Int(Sqr(n))If n Mod i = 0 Then flag =1 :Exit ForNext iIf flag =0 ThenPrint n; " 是素数"ElsePrint n; " 不是素数"End If3.哥德巴赫猜想Dim N%, N1%, N2%, I%, K1%, K2%N=V al(InputBox("输入大于6的偶数"))For N1 = 3 To N \ 2 Step 2K1 = Int(Sqr(N1))For I = 2 To K1 '判断N1是否是素数If N1 Mod I = 0 Then Exit ForNext IIf I > K1 Then '如果N1为素数,将N分解为N1+N2N2 = N - N1K2 = Int(Sqr(N2))For I = 2 To K2 '判断N2是否是素数If N2 Mod I = 0 Then Exit ForNext IIf I > K2 Then ' 如果N2也为素数,则打印输出Print N & "=" & N1 & "+" & N2End IfEnd IfNext N1冒泡法排序(n个数排序)For j = 1 To n-1For i = 1 To n - jIf a(i) > a(i + 1) Thentemp = a(i): a(i) = a(i + 1): a(i + 1) = tempNext iNext j选择法排序(n个数排序)1.原始代码For j = 1 To n-1p = jFor i = j + 1 To nIf a(p) > a(i) Then p = iNext iIf (p <> j) Then temp= a(j): a(j) = a(p): a(p) = temp Next j2.变种1For i = 1 To n-1For j=i+1 to nIf a(i) > a(j) Thentemp= a(j): a(j) = a(i): a(i) = tempEnd IfNext jForm1.Print a(i)Next iForm1.print a(n)数进制的转换(公用进制转换,将n转换成k进制) 1.Dim n As Integer, k As Integer, x As StringDim m As Integer, t As Integern = Inputbox(“n="): k = Inputbox(“k=")x= "": m = n : n = Abs(n)Do While n <> 0t = n Mod kIf k=16 And t>9 Then x = Chr(Asc("a")+t-10) + x Else x = t & xn = n \ kLoopIf m < 0 Then x = "-" + x2.变种1(采用连除2取余数的方法,将一个十进制数转换为二进制数)Dores = dec mod 2 '求出除以2的余数Bin = res & binDec = dec\2Loop While dec>0矩阵的转置1.M* M方阵For i = 2 To MFor j = 1 To I-1Temp=a(i,j)a(i, j) = a(j, i)a(j, i)=TempNext jNext i2.M*N的矩阵For i = 1To MFor j = 1To Nb(j,i) = a(i,j)Next jNext i约瑟夫问题—有n个人围成一圈,顺序排号。
计算器vb源代码.txt性格本身没有好坏,乐观和悲观对这个世界都有贡献,前者发明了飞机,后者发明了降落伞。
完全版的前后台代码...'请把下面的保存为VERSIONBegin CalculatorBorderStyle = 1 'Fixed SingleCaption = "计算器"ClientHeight = 2970ClientLeft = 2580ClientTop = 1485ClientWidth = 3270ClipControls = 0 'FalseBeginProperty FontName = "System"Size =Charset = 0Weight = 700Underline = 0 'FalseItalic = 0 'FalseStrikethrough = 0 'FalseEndPropertyIcon = "":0000LinkMode = 1 'SourceLinkTopic = "Form1"MaxButton = 0 'FalsePaletteMode = 1 'UseZOrderScaleHeight = 2970ScaleWidth = 3270WhatsThisHelp = -1 'TrueBegin NumberCaption = "7"Height = 480Index = 7Left = 120TabIndex = 7Top = 600Width = 480EndBegin NumberCaption = "8"Height = 480Index = 8Left = 720TabIndex = 8Top = 600Width = 480 EndBegin NumberCaption = "9"Height = 480Index = 9Left = 1320TabIndex = 9Top = 600Width = 480 EndBegin CancelCaption = "C"Height = 480Left = 2040TabIndex = 10Top = 600Width = 480 EndBegin CancelEntryCaption = "CE"Height = 480Left = 2640TabIndex = 11Top = 600Width = 480 EndBegin NumberCaption = "4"Height = 480Index = 4Left = 120TabIndex = 4Top = 1200Width = 480 EndBegin NumberCaption = "5"Height = 480Index = 5Left = 720TabIndex = 5Top = 1200Width = 480 EndBegin NumberCaption = "6"Height = 480Index = 6Left = 1320TabIndex = 6Top = 1200Width = 480 EndBegin OperatorCaption = "+"Height = 480Index = 1Left = 2040TabIndex = 12Top = 1200Width = 480 EndBegin OperatorCaption = "-"Height = 480Index = 3Left = 2640TabIndex = 13Top = 1200Width = 480 EndBegin NumberCaption = "1"Height = 480Index = 1Left = 120TabIndex = 1Top = 1800Width = 480 EndBegin NumberCaption = "2"Height = 480Index = 2TabIndex = 2Top = 1800Width = 480 EndBegin NumberCaption = "3"Height = 480Index = 3Left = 1320TabIndex = 3Top = 1800Width = 480 EndBegin OperatorCaption = "X"Height = 480Index = 2Left = 2040TabIndex = 14Top = 1800Width = 480 EndBegin OperatorCaption = "/"Height = 480Index = 0Left = 2640TabIndex = 15Top = 1800Width = 480 EndBegin NumberCaption = "0"Height = 480Index = 0Left = 120TabIndex = 0Top = 2400Width = 1080 EndBegin DecimalCaption = "."Height = 480TabIndex = 18Top = 2400Width = 480EndBegin OperatorCaption = "="Height = 480Index = 4Left = 2040TabIndex = 16Top = 2400Width = 480EndBegin PercentCaption = "%"Height = 480Left = 2640TabIndex = 17Top = 2400Width = 480EndBegin ReadoutAlignment = 1 'Right JustifyBackColor = &H0000FFFF&BorderStyle = 1 'Fixed SingleCaption = "0."BeginProperty FontName = "MS Sans Serif"Size = 12Charset = 0Weight = 700Underline = 0 'FalseItalic = 0 'FalseStrikethrough = 0 'FalseEndPropertyForeColor = &H00000000&Height = 375Left = 120TabIndex = 19Top = 105Width = 3000EndEndAttribute VB_Name = "Calculator"Attribute VB_GlobalNameSpace = FalseAttribute VB_Creatable = FalseAttribute VB_PredeclaredId = TrueAttribute VB_Exposed = False' --------------------------------------------------------------------------' 版权所有(C) 1994 Microsoft Corporation'' 您可以免费以任何方式使用、修改、复制并分发您认为有用的' 示例应用程序文件(或任何修改过的版本)。
Visual Basic 的基本控制结构顺序结构——各语句依次顺序执行此前所学的语句的存在方式都是顺序结构关于赋值语句:变量名=表达式 对象名先计算右边表达式的值,然后赋值给左边的变量。
如果表达式的精度不同于左边变量的精度,则强制将表达式结果的数据类型更改为变量的精度。
字符型数据("0129")赋值给数值型变量时系统先自动将字符串转换为数值,再赋值;但是字符不可以赋值给数值变量。
非字符数据赋值给字符变量时将被转换为字符类型。
a=a+2 实现值的自增。
赋值符号=的左边必须是变量。
整体格式固定不能更改。
例:实现两个变量值的交换 temp=a : a=b : b=temp分支结构——单分支、双分支、多分支单分支结构(简单分支结构)双分支结构(选择分支语句)多分支结构 ( 四种形式 )形式一:(if 语句的嵌套形式)见上例形式二:( if then elseif 语句)形式三:(select case 语句)✓ 条件的可能结果可以是表达式✓ 条件的可能结果可以是to 表达式,如:case 20 to 30 ✓ 条件的可能结果可以是is 比较式,如:case is >30形式四:( iff 函数)语句格式:变量 = iif (条件,语句1,语句2 )max = iif ( 3 > 6 , "不可能" , "yes" )循环结构 (五种形式)形式一 ( for next 循环 )练习及分析:1.求1~100之间所有整数的和。
注意事项:嵌套时next 循环变量要与最近的for 语句循环变量匹配形式二 (while wend 循环)truefalse形式三 ( do loop 循环 前测型)1. 改造上述各例练习及分析:1.计算12.形式五 (多重循环—循环结构的嵌套)采用各个循环结构互相嵌套的形式,可以完成更复杂的计算。
练习分析:1.利用*2.输出3.4.打印5正确:67其他辅助控制语句1.Goto (跳转)语句——不鼓励使用语法格式:例题分析:dim p as currency,r as singledim t as integerp=1000r=0.02t=1again:if t>10 then goto 100i=p*rp=p+it=t+1goto again100print "10后本利合计为:";p;"元"采用各个循环结构互相嵌套的形式,可以完成更复杂的计算。
最短路径算法源码(VB)最短路径查询程序,速度特快,3万节点,35000条路全部遍历,只需1秒。
现将最短路径的思路告诉大家,希望大家在优化,并用不同语言编制,我正在学delphi,准备用delphi做成库,本例以由拓扑关系的arc/info 文件为数据源。
其中a1,b1,c1是以fnode排序生成的数组,a1对应fnode,b1对应tnode,c1对应length,同样a2,b2,c2,是以tnode 生成的数组。
Indexa1是对应某一起点与其相连的终点的个数,indexb1时对应某一终点与其相连的起点的个数,即其拓扑关系。
Public Function shortpath(startno As Integer, endno As Integer) As Single以开始点,结束点为参数。
Dim result() As SingleDim result1 As Integer定义结果点Dim s1 As SingleDim min As SingleDim ii, i, j, aa As IntegerDim yc() As BooleanDim ycd() As BooleanDim rs1() As SingleDim no() As IntegerDim nopoint As IntegerReDim yc(1 To maxno) As BooleanReDim ycd(1 To maxno) As BooleanReDim rs1(1 To maxno) As SingleReDim result(1 To 2, 1 To maxno) As Single定义结果,其中result(1,maxno)为结果点,result(2,maxno)为结果长度。
For i = 1 To maxno// maxno为网中最大的节点数。
yc(i) = False //标记已经查过的点。
ycd(i) = False //标记已经作结果点用过的点rs1(i) = 1E+38 //假设从起点到任一点的距离都为无穷大Next ill = startno //设置开始点。
计算器vb源代码.txt性格本身没有好坏,乐观和悲观对这个世界都有贡献,前者发明了飞机,后者发明了降落伞。
完全版的前后台代码...'请把下面的保存为form1.frmVERSION 5.00Begin VB.Form CalculatorBorderStyle = 1 'Fixed SingleCaption = "计算器"ClientHeight = 2970ClientLeft = 2580ClientTop = 1485ClientWidth = 3270ClipControls = 0 'FalseBeginProperty FontName = "System"Size = 9.75Charset = 0Weight = 700Underline = 0 'FalseItalic = 0 'FalseStrikethrough = 0 'FalseEndPropertyIcon = "CALC.frx":0000LinkMode = 1 'SourceLinkTopic = "Form1"MaxButton = 0 'FalsePaletteMode = 1 'UseZOrderScaleHeight = 2970ScaleWidth = 3270WhatsThisHelp = -1 'TrueBegin mandButton NumberCaption = "7"Height = 480Index = 7Left = 120TabIndex = 7Top = 600Width = 480EndBegin mandButton NumberCaption = "8"Height = 480Index = 8Left = 720TabIndex = 8Top = 600Width = 480 EndBegin mandButton NumberCaption = "9"Height = 480Index = 9Left = 1320TabIndex = 9Top = 600Width = 480 EndBegin mandButton CancelCaption = "C"Height = 480Left = 2040TabIndex = 10Top = 600Width = 480 EndBegin mandButton CancelEntryCaption = "CE"Height = 480Left = 2640TabIndex = 11Top = 600Width = 480 EndBegin mandButton NumberCaption = "4"Height = 480Index = 4Left = 120TabIndex = 4Top = 1200Width = 480 EndBegin mandButton NumberCaption = "5"Height = 480Index = 5Left = 720TabIndex = 5Top = 1200Width = 480 EndBegin mandButton NumberCaption = "6"Height = 480Index = 6Left = 1320TabIndex = 6Top = 1200Width = 480 EndBegin mandButton OperatorCaption = "+"Height = 480Index = 1Left = 2040TabIndex = 12Top = 1200Width = 480 EndBegin mandButton OperatorCaption = "-"Height = 480Index = 3Left = 2640TabIndex = 13Top = 1200Width = 480 EndBegin mandButton NumberCaption = "1"Height = 480Index = 1Left = 120TabIndex = 1Top = 1800Width = 480 EndBegin mandButton NumberCaption = "2"Height = 480Index = 2TabIndex = 2Top = 1800Width = 480 EndBegin mandButton NumberCaption = "3"Height = 480Index = 3Left = 1320TabIndex = 3Top = 1800Width = 480 EndBegin mandButton OperatorCaption = "X"Height = 480Index = 2Left = 2040TabIndex = 14Top = 1800Width = 480 EndBegin mandButton OperatorCaption = "/"Height = 480Index = 0Left = 2640TabIndex = 15Top = 1800Width = 480 EndBegin mandButton NumberCaption = "0"Height = 480Index = 0Left = 120TabIndex = 0Top = 2400Width = 1080 EndBegin mandButton DecimalCaption = "."Height = 480TabIndex = 18Top = 2400Width = 480EndBegin mandButton OperatorCaption = "="Height = 480Index = 4Left = 2040TabIndex = 16Top = 2400Width = 480EndBegin mandButton PercentCaption = "%"Height = 480Left = 2640TabIndex = 17Top = 2400Width = 480EndBegin bel ReadoutAlignment = 1 'Right JustifyBackColor = &H0000FFFF&BorderStyle = 1 'Fixed SingleCaption = "0."BeginProperty FontName = "MS Sans Serif"Size = 12Charset = 0Weight = 700Underline = 0 'FalseItalic = 0 'FalseStrikethrough = 0 'FalseEndPropertyForeColor = &H00000000&Height = 375Left = 120TabIndex = 19Top = 105Width = 3000EndEndAttribute VB_Name = "Calculator"Attribute VB_GlobalNameSpace = FalseAttribute VB_Creatable = FalseAttribute VB_PredeclaredId = TrueAttribute VB_Exposed = False' --------------------------------------------------------------------------' 版权所有(C) 1994 Microsoft Corporation'' 您可以免费以任何方式使用、修改、复制并分发您认为有用的' 示例应用程序文件(或任何修改过的版本)。
π的前7000位,你知道吗?超级π算法vb源程序能够无限制的计算π的值。
你能记住π几位呢?下面是π的结果:3.1415926535897932384626433832795288419716939937510582097494459230781640628620899862 803482534211706798214808651328236647093844695558223172535940812848111745028412701938 521155596446229489549303819644288109756659334461284756482337867831652712019914564856 692346348610454326648213393607260249141273724587066063155881748815209209628292549171 536436789259036113305305488204665213841469519415116094330572736575959195309218611738 193261179310511854807446237996274956735188575272489122793818301194912983367336244065 664386021394946395224737190702179869437027705392171762931767523846748184676694513200 056812714526356082778577134275778960917363717872146844090122495343014654958537105792 279689258923542019956112129021968643441815981362977477130996051870721134999999837297 804995105973173281609631859502445945534690830264252230825334468503526193118817101031 378387528865875332083814206171776691473035982534904287554687311595628638823537875937 519577818577805321712268661300192787661119590921642198938095257201654858632788659361 533818279682330195203530185296899577362259941389124972177528347913151557485724245415 695950829533116861727855889750983817546374649393192550604092770167113900984882401285 836163563707660147118194295559619894676783744944825537977472684710404753464620804668 425906949129331367702898915210475216205696602458038151935112533824303558764247496473 263914199272604269922796782354781636009341721641219924586315032861829745557067498385 054945885869269956909272179750932955321165344987202755960236480665499119881834797753 566369874265425278625518184175746728909777727938008164706161452491921732172147723501 414419735685481613611573525521334757418494684385233239073941433345477624168625189835 694855620992192221842725502542568876717904946016534668049886272327917868578438382796 797668145410095388378636095068642251252051173929848960841284886269456042419652852221 066118630674427862239194945047123713786960956364371917287467764657573962413890865832 645995813390478027590099465764789512694683983525957098258226252248947726719478268482 601476990902640136394437455305068203496252451749399651431429809190659259372216964615 157098583874105978859597729754989316175392846813826868386894277415599185592524595395 943104997252468084598727364469584865383673622262699124608051243884394512441365497627 807977156914359977012961608944169486855584840635342207222582848864815845602850601684 273945226746767889525213852254995466672782398645659611635488623057745649803559363456 817432411251507606947945109659609425228879710893145669136867228748940560115033086179 286892087476091782493858900971490967598526136554978189312978482168299894872265880485 756401427047755513237964145152374623436454285844479526586782105114135473573952311342 716610213596953623144295248493718711014576540359027993440374200731057853906219838744 780847848968332144571386875194350643021845319104848100537061468674919278191197939952 061419663428754440643745123718192179998391159195618146751426912397489409071864942319 615679452809514655022523160388193014209376213785595663893778708339069792077346722182562599661501421503068038447734549202605414665925201497442857325186660021324340881971 048633173464965145390579626856100550810665879699816357473638452571459102897064141109 712628439397595156771577423378699360072305587631763594218731251471205329281918261861 258673215791984148488291644706095752769572209175671167229109816991528017350671274858 322287183529353965725121083579151369882091444210067510334671103141267111369908658516 398315197165151168517143765761835155650884909989859982387345528331635507647918535893 226185489632132933089857642467525970915481416549859461637180270981994309924488957571 282895923233260972997120844335732654893823911932597463667305836041428138830320382490 375898524374417029132765618093773444307746921120191302330380197621101100449293215160 842444859637669838952286847831235526582131449576857262433441893039686426243417732269 780280731891544110104468232527162010526522721116603966655730925471105578537634668206 531098965269186256476931257586356620185581729360659876486117910453348850346113657686 753249441668396265797877185560845529654126654085306143444318586769751456614680700237 877659134401712749470420562235389945613140711270407854733269939081454664645880797270 826683634328587856983523580893306575740679545716377525422114955761581402501262285941 302164715597925923099796547376125517656751357517829666454779174511299614890304639947 132962173443751895735961458901938971311179042978285647503203198691514287808599048019 412147221317947647772622414254854540332157185361422881375850430633217518297986622371 721591607716692547487389866549494501146546284336639379003976926567214638530673609657 120918076383271664162748888078692562902284721040317211860820419000422966171196377921 337575114959501566496318629472654736425238177036751590673502350728354056704038674351 362222477158915049539844489333096348787693259939780541934144737744184263129868099888 687413264721569516239658645730216315981931951673538129741677294786724229246543668009 806769282382806899640048243540370141631496589794092432378969070697794223625822168895 738379862315937764716512289357861588161755782973523344642815126272373431465319777741 631990665541876397929334419521541341899485444734567383162499341913181480927777103863 877343177207545654532207770921201905166096284909263601975988281613323166636528619326 686336062735676303544776280350450777235547158595487027908143562401451718062464362679 456127531813407833336254232783944975382437205835311477119926063813346776879695970309 833913077109870408591337464144282277263465947474587847787201927715287317679770715721 344473605700733492436931138354931631284042512192565179806941135280131470130478164378 851852909285452011658393419656213491434159562586586557055269496520985803385722426482 939728584783163057777560688876446248246857926039535277348030482905876075825147470916 439613626764492562742042083208566119062545433721315359584568772462901618766795246163 425225771954291629919306455377991403734432875262888963995879475729174642635745525479 091451357111369419119393251910762082520261879853188770584297259167781314969900919211 697173727847684726860849003377242429165135051683233643503895172989392233451722013812 869650117844874519612122859937162313017114448464093896449544400619869075485160263275 529834918747866808818338512283345850486082503930213321971551843063545500766828294930 413776552793975175461395398468339363830474611996653858153842568533862186725233428387 112328278921250771262946322956398989893582116745627012183564622013496715188190973038119849734072396103685466431939509790190699639552453005450580685501956730229219139339 185683449039820595512263535361920419947455385938102343955449597783779023742161727111 723643435439478221818528624085140066604433258885698670543154706965747458553323233421 073015459405165537906866273337995851156257843229882737231989875714159578111963583300 594087306812160287649628674464774649159950549737425626901049377819868359381465741268 049256487985561453723478673303946883834363465537949864192756387293174872332083760112 329911367938627089438799362016295154133714248928307220126901475466847653576164773794 675249757155527819653621323926406160136358155907422022031872776052772190556148425551 879253034351398442532234157623361064250639049758656271095359194658975141310348227693 062474353632569167815478181152843667957061108615331544521274739245449454236828860613 408414863776700961271512491404302725386076482363414334623518975766452164137679690314 951918575984423919862916421939949072362346468441173940326591840443785133389452574239 950829659122850855582157250310712571266830240292952522118726767562204154251618416348 475651699981161410102996078386992916032884002691041407928862150784245167090876992821 206604183718065355672525325675328612914248776182582976515795984703562226293486003415 872298053498965022629174878822734209222245339856264766914905562842503912有兴趣的背背吧~~ 呵呵~~无限不循环的无理数到底有多长呢?这里有π的计算源程序。