VB的12个算法总结

时间:2024.4.5

VB的12个算法总结

整理:贾春堂

求10以内奇数和、偶数和、3的倍数和 s = 0

For i = 1 To 10

If i Mod 2 <> 0 Then 或者 s = s + i End If Next i

Print "10以内奇数和:"; s s = 0

For i = 1 To 10 If i Mod 2 = 0 Then s = s + i End If Next i

Print "10以内偶数和:"; s s = 0

For i = 1 To 10 If i Mod 3 = 0 Then s = s + i End If Next i

Print "10以内3的倍数和:"; s

1.累加、阶乘、平均值、条件求和

●累加 s = 0

For i = 1 To 10 s = s + i Next i

Print "1到10的累加和:"; s 总结:用来存储累加结果的变量初始值要设置为0,即本例中的s=0 ●平均值 s = 0

For i = 1 To 10 s = s + i Next i

Print "1到10的累加和:"; s / 10 ●阶乘 s = 1

For i = 1 To 10 s = s * i Next i

Print "10的阶乘:"; s 总结:用来存储阶乘结果的变量初始值要设置为1,即本例中的s=1 ●条件求和

Next i

2.求全部水仙花数

3.求最大公约数和最小公倍数 ●水仙花数(当一个三位数等于各位数字的

立方之和即为水仙花数,如153=1+125+27) 方案一

问题,查询100—999之间全部的水仙花数 ●最大公约数 For i = 100 To 999 m = 6 a = i \ 100 n = 9 b = (i Mod 100) \ 10 For i = IIf(m < n, m, n) To 1 Step -1 c = i Mod 10 If m Mod i = 0 And n Mod i = 0 Then If i = a * a * a + b * b * b + c * c * c Then Print "最大公约数"; i

Print i Exit For

End If Next i

●最小公倍数

m = Val(InputBox("数值1")) n = Val(InputBox("数值2")) For i = IIf(m > n, m, n) To m * n

If i Mod m = 0 And i Mod n = 0 Then Print "最小公倍数"; i Exit For End If Next i

4.素数

●1.判断一个数是否是素数,(一个数只能被1和它本身整除就是素数,换句话说,若能被2到本身减1任意某个数整除就不是素数)

n = Val(InputBox("输入:")) For i = 2 To n - 1 If n Mod i = 0 Then Exit For End If Next i

If i = n Then Print "是素数" Else Print "不是

素数"

●求某段范围内素数 For i = 100 To 200 For j = 2 To i - 1 If i Mod j = 0 Then Exit For End If Next j

If j = i Then Print i

方案二:辗转相除法

m% = InputBox("请输入m值") n% = InputBox("请输入n值") a = m b = n

If m < n Then t = m m = n n = t End If Do

q = m Mod n m = n n = q

Loop While q <> 0

Print m '-------最大公约数

Print a * b / m '_______最小公倍数 方案三:for形式求最大公约数 m% = Text1 n% = Text2 If m > n Then t = n Else t = m End If

For i = t To 1 Step -1

If m Mod i = 0 And n Mod i = 0 Then Text3 = i Exit For End If Next

5.10个数据的逆序存放

Dim a%(1 To 10) For i = 1 To 10

a(i) = Int(Rnd * 90 + 10) Print a(i); Next Print

For i = 1 To 5 t = a(i)

a(i) = a(11 - i) a(11 - i) = t Next

For i = 1 To 10 Print a(i); Next

6.Fibonacci前15项的输出

(斐波那契数列第1,2项为1,第3项起每项

为前两项之和,如:1,1,2,3,5,8,13,21,?)

方案一:

a = 1 b = 1 Print a; b; c = a + b

For i = 1 To 10 Print c; a = b b = c c = a + b Next i

方案二:数组 Dim a%(1 To 15) a(1) = 1 a(2) = 1 Print a(1) Print a(2)

For i = 3 To 15

a(i) = a(i - 1) + a(i - 2) Print a(i) Next 7.冒泡排序

●升序

Dim a%(1 To 10) For i = 1 To 10 a(i) = Int(Rnd * 10) Next

For i = 1 To 9 For j = 1 To 10 - i If a(j) > a(j + 1) Then t = a(j)

a(j) = a(j + 1) a(j + 1) = t End If Next Next

For i = 1 To 10 Print a(i); Next ●降序

将“>”改成“<”.

8.矩阵(单行,单列,主对角线,副对角线及周边之和)

Dim a%(1 To 4, 1 To 4) For i = 1 To 4 For j = 1 To 4

a(i, j) = Int(Rnd * 9 + 1) Print a(i, j); Next Print Next

s = 0: t = 0: k = 0 For i = 1 To 4 For j = 1 To 4

If i = j Then s = s + a(i, j) '主对角线之和

If i + j = 5 Then t = t + a(i, j) '副对角线之和

If i = 1 Or i = 4 Or j = 1 Or j = 4 Then k = k + a(i, j) '四周之和 End If Next Next

Print s, t, k 9.杨辉三角

Dim a%(1 To 5, 1 To 5) For i = 1 To 5 For j = 1 To i

If j = 1 Or i = j Then a(i, j) = 1 Else

a(i, j) = a(i - 1, j) + a(i - 1, j - 1) End If

Print a(i, j); Next Print Next

10.偶数迁移

For i = List1.ListCount -1 To 0 Step -1 If List1.List(i) Mod 2 = 0 Then list2.AddItem List1.List(i) List1.RemoveItem i End If Next 11.选择排序 For i = 1 To 9 For j = i + 1 To 10 If s(i) > s(j) Then t = s(i) s(i) = s(j) s(j) = t End If Next j Next i 12.动态插入

Dim a()

a = Array(3, 7, 10, 21, 35) n = UBound(a)

x% = InputBox("请输入一个数字") For i = 1 To n

If x < a(i) Then Exit For Next

ReDim Preserve a(n + 1) For k = n To i Step -1 a(k + 1) = a(k) Next a(i) = x

For i = 0 To UBound(a) Print a(i); Next


第二篇:VB常用算法总结


VB常用算法总结

一、变量值的交换

算法思想:若交换两个变量的值,必须引入第三个新的变量进行传递。

以下代码是错误的:

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整除。

三、累加、阶乘、计数和求平均值

算法思想:使用循环语句,并用一个变量存放累加的中间及最终结果。

注: 累加求和时变量初值为0,计算阶乘时变量初值为1。

统计计个数(计数)时可用一个变量作为统计个数的累加变量,每次加1即可。

求平均值算法思想是先求和,再除以个数。

条件求和(或计数):在循环语句中加入If-End If判断语句。

例题:计算1到10之间所有整数的累加和以及10!。

n=10

sum=0 ‘累加求和时,变量的初值一定为0

prod=1 ‘累乘(连乘)时,变量的初值一定为1

For i=1 To n

sum=sum+i

prod=prod*i

Next i

Print sum,prod

例题:统计0—100之间能被3整除的数的个数、累加和及其平均值。

s=0

n=0

For i=0 To 100

If i mod 3 =0 Then

s=s+i

n=n+1

End If

Next i

Print n,s,s/n

四、随机数的产生

[a,b]之间的随机整数

Int((b-a+1)*rnd)+a

(a,b)随机数

(b-a)*rnd +a

五、求若干个数中最大值或最小值

六、常用字符处理函数

Mid函数:从字符串指定位置取指定个字符,格式为Mid (字符,p,n) ,从第p个字符开始,向后截取n个字符(若n省略则取到最后)。

Left和Right函数:从字符串左边或右边取指定个字符,格式为 Left (字符,n)和Right (字符,n)。

Len函数:测试字符串长度。

UCase和LCase函数:UCase将小写字母转换为大写字母;LCase将大写字母转换为小写字母。

Instr([首字符位置 , ] 字符串1, 字符串2 [ , n]):在字符串1中查找字符串2,如果找到,返回字符串2的第一个字符在字符串1中出现的位置。首字符位置是可选的,如果不指定,从字符串起始位置开始查找;如果指明,从指定的位置开始查找。

Asc函数:返回字符串中第一个字符的ASCII码。

Chr函数:将一个数值转换为其所对应的字符。

字符的比较规则是按ASCII码顺序比较,规则为 空格<”A”~”Z”<”a”~”z”

小写字母的ASCII比大写字母的ASCII小32。

例题:

1.将所有文本转换为大写(小写)字母

可以直接使用UCase(LCase)函数转换。例如:

Text2.Text=UCase(Text1.Text)

2.对某个字符串的所有字符逐一处理

算法思想:如果对某个字符串的所有字符逐一处理,即从字符串的第1个字符开始到最后一个字母,每次处理1个字符。可以使用For循环实现。通用代码为:

For i=1 To Len(s)

s1=Mid(s,i,1)

……

Next i

3.字符转换

算法思想:通过字符的ASCII码进行处理(使用Asc函数),然后再使用Chr函数将ASCII转换成字符。 例题:将文本框Text1中字符按如下规律转换a-b、b-c……z-a,并显示在文本框Text2中。

s = Text1.Text

n = Len(s)

For i = 1 To n

s1 = Mid(s, i, 1)

If s1 >= "a" And s1 <= "y" Then

s2 = s2 + Chr(Asc(s1) + 1)

ElseIf s1 = "z" Then

s2 = s2 + "a"

End If

Next i

Text2.Text = s2

例题:将文本框Text1中的小写字母转换其对应的大写字母,将大写字母转换成小写字母,并显示在文本框Text2中。

Private Sub Command1_Click()

s = Text1.Text

n = Len(s)

m = Asc("a") - Asc("A")

For i = 1 To n

s1 = Mid(s, i, 1)

If s1 >= "a" And s1 <= "z" Then

s2 = s2 + Chr(Asc(s1) - m)

End If

If s1 >= "A" And s1 <= "Z" Then

s2 = s2 + Chr(Asc(s1) + m)

End If

Next i

Text2.Text = s2

End Sub

5.统计某字符出现次数

算法思想:对字符串中字符逐一判断,如果是某字符,则统计变量加1。

例题:统计文本框Text1中字符i和j出现的次数(不区分大小写)。

Private Sub Command1_Click()

s = Text1.Text

n = Len(s)

For i = 1 To n

s1 = Mid(s, i, 1)

If UCase(s1) = "I" Then ni = ni + 1

If UCase(s1) = "J" Then nj = nj + 1

Next i

Print ni, nj

End Sub

八、素数

素数定义:只能被1和本身整除的正整数称为素数(或称质数)。例如11就是素数,它只能被1和11整除。 算法思想:判别某数n是否是素数的方法有很多,最简单的是从素数的定义来求解。对于n,从i=2,3,…,n-1判别n能够被i整除,只要有一个能整除,n就不是素数,否则n是素数。此种算法比较简单,但速度慢,因此,可以将n被2到 (或n/2)间的所有整数除,如果都除不尽,则n就是素数,否则n是非素数。

注:执行For循环时,循环变量等于终值仍进入循环,遇到Next语句,循环变量会自动加上步长,因此如果循环正常完成后,循环变量的值将大于终值。

例如:

For i=1 To 4

If …… Then Exit For

Next i

Print i

如果循环正常结束,则输出结果为5(大于4)。如果循环过程中满足If条件,执行Exit For语句退出循环,则i的值一定小于5。

例题:判断n是否是素数。

Private Sub Command2_Click()

n = Val(Text1.Text)

For j = 2 To n - 1

If n Mod j = 0 Then Exit For

Next j

If j > n-1 Then Print "是素数" Else Print "不是素数"

End Sub

例题:输出2~n范围的全部素数。

Private Sub Command1_Click()

n = Val(Text1.Text)

For i = 2 To n

For j = 2 To Sqr(i)

If i Mod j = 0 Then Exit For

Next j

If j > Sqr(i) Then Print i

Next i

End Sub

使用Do While循环判断是否是素数

九、最大公约数和最小公倍数

算法思想:

(1)对于已知两数x、y,使得x>y

(2)x除以y得余数r;

(3)若r=0,则x为求得的最大公约数,算法结束;否则执行步骤(4)

(4)x←y,y←r,再重复执行(2)

求得了最大公约数后,最小公倍数就可很方便地求出,即将原来的两数相乘除以最大公约数。

Private Sub Form_Click()

x = Val(InputBox("请输入第一个数:"))

y = Val(InputBox("请输入第二个数:"))

If x < y Then

t = x

x = y

y = t

End If

x 1 = x

y1 = y

Print x, y

Do While y <> 0

r = x Mod y

x = y

y = r

Loop

Print "最大公约数为:"; x

Print "最小公倍数为:"; x1 *y1 / x

End Sub

十、水仙花数

定义:“水仙花数”是指一个三位数,其中各位数字的立方和等于该数本身(如153=13+53+33)

分析:此题的关键是要知道如何分离出一个三位数中的各位数字。

例题:找出100~999之间的所有“水仙花数”。

Private Sub Command1_Click()

For i = 100 To 999

a = Int(i / 100)

b = Int((i - 100 * a) / 10)

c = i - Int(i / 10) * 10

If i = a ^ 3 + b ^ 3 + c ^ 3 Then

Print i

End If

Next i

End Sub

Private Sub Command1_Click()

For n = 100 To 999

s = 0

a = n

Do While a <> 0

b = a Mod 10

s = s + b * b * b

a = a\ 10

Loop

If s = n Then Print n

Next n

End Sub

十一、斐波那切数列的输出

该数列前两项为1,1从第三项开始,an=an-1+an-2

十二、进制转换

十三、三个数排序

十四、分段函数

十五、图形输出(双重循环)

十六、百鸡百钱问题

十七、迭代法P116页

十八、输入a,b,c,的值,求方程ax2+bx+c=0的解。

注意:对象只考文本框、标签、命令按钮和窗体。

本学期计算机基础及VB程序设计复习指导如下:

1、计算机基础的50道复习题,试卷上占20分,选择15题,填空5题。

2、VB习题集第一到五章控制结构的课后习题及试题解析(其中,控件只考窗体、文本框、标签、命令按钮)试卷上占40分。

3、经典算法。占40分。

更多相关推荐:
结算总结

1、工程完工后,乙方依据后来变化的施工图做了结算,结算仍然采用清单计价方式,结算价是1200万元,另外还有200万元的洽商变更(此工程未办理竣工图和竣工验收报告,不少材料和作法变更也无签字)。咨询公司在对此工程…

工程结算总结

1、工程完工后,乙方依据后来变化的施工图做了结算,结算仍然采用清单计价方式,结算价是1200万元,另外还有200万元的洽商变更(此工程未办理竣工图和竣工验收报告,不少材料和作法变更也无签字)。咨询公司在对此工程…

电气及工程结算总结

结算总结1、必须做好结算审核的前期工作。如:招标文件、投标文件、中标通知书、施工图纸、竣工图纸、会审纪要、设计变更、隐蔽记录、施工签证及施工合同等都是工程结算的主要依据。2、造价高的项目、补充单价(找差价)及计…

国际结算 总结

国际结算总结名词1,顺汇:顺汇是由债务人或付款人主动将款项交给银行,委托银行使用某种信用工具、支付一定金额给债权人或收款人的结算方式。因其结算工具的传送方向与资金的流动方向相同,故称为顺汇,又称汇付法,也即商业…

结算总结

1国际结算的含义为清偿国际间债权债务关系而发生在不同国家之间的货币收付活动简单地说它是发生在不同国家之间的货币收付活动概念要点有货币收付发生于不同的国家2国际结算的分类按是否直接使用现金划分现金结算非现金结算按...

某工程结算工作总结

***工程结算工作总结一、工程量核对是工程结算的基础工程结算造价计算是否准确,首要的是工程量计算的精度。在条件允许的情况下,多采用全面审查法,即按图纸及统一的工程量计算规则,按预、结算编制的程序和项目要求逐项要…

工程竣工结算总结

工程竣工结算总结第一章认真分析影响工程结算的因素对办好工程竣工结算是很有意义的11工程结算的涵义工程结算直接关系到建设单位和施工单位的切身利益在结算的编审过程中由于编审人员所处的地位立场和目的不同而且编审人员的...

20xx年结算工作总结2

20xx年结算工作总结20xx年结算工作在公司领导的正确领导下,以提高经济效益,有效降低工程成本为目标,全面推进结算管理工作,大力协助项目部作好结算工作,并取得了初步成果,为确保今年完成集团下达的结算指标奠定了…

国际民航结算概念规则总结

1.Unlessotherwiseagreedbilaterally(双边地)betweenairlines,thecurrencyofbillingwillbeeither2.Theapplicablefar…

某项目结算工作汇报总结

有限公司成本控制部项目工作汇报总结公司领导自项目投资建设以来在领导科学严谨创新的治理下公司全体职员团结齐心勇于进取取得了项目全面售罄的阶段性骄人业绩在此我对目前ABC组团项目工作的总结汇报如下一成本工作概况审核...

建筑工程结算经验总结

建筑工程结算经验总结RSS打印复制链接大中小发布时间20xx11121002081工程完工后乙方依据后来变化的施工图做了结算结算仍然采用清单计价方式结算价是1200万元另外还有200万元的洽商变更此工程未办理竣...

关于工程结算的总结,精辟、到位!

众所周知竣工结算是一项很琐碎麻烦但同时技术含量很高的工作这里的技术含量体现在什么地方一结算依据技术性文件工程结束后要进行竣工结算首先合同内不必说总价承包该多少就多少工程之外的委托工程量签证工程联系单设备缺陷处理...

结算总结(50篇)