510 likes | 612 Views
第 5 章 设计循环结构程序. Visual Basic 程序设计教程. 循环结构又称重复结构。 本章主要介绍: 逻辑表达式 For/Next 语句 Do/Loop 语句 While/Wend 语句 循环的嵌套使用。. 循环结构是根据条件来决定某段代码是否重复执行。 循环结构中一种常用的流程可以表示如图: 条件满足就执行 a 块程序段 然后再进行条件判别 如果满足条件,则继续执行 a 块程序段 直到条件不满足,才执行 a 块后面的程序。. 5.1 概述. 其中的 a 程序块段称为循环体。 条件使用逻辑表达式。
E N D
第5章 设计循环结构程序 Visual Basic 程序设计教程
循环结构又称重复结构。 • 本章主要介绍: • 逻辑表达式 • For/Next语句 • Do/Loop语句 • While/Wend语句 • 循环的嵌套使用。 Visual Basic程序设计教程
循环结构是根据条件来决定某段代码是否重复执行。循环结构是根据条件来决定某段代码是否重复执行。 • 循环结构中一种常用的流程可以表示如图: • 条件满足就执行a块程序段 • 然后再进行条件判别 • 如果满足条件,则继续执行a块程序段 • 直到条件不满足,才执行a块后面的程序。 5.1 概述 Visual Basic程序设计教程
其中的a程序块段称为循环体。 • 条件使用逻辑表达式。 • 循环的另一种形式是把判断条件放在循环体之后。 Visual Basic程序设计教程
循环结构中有两个基本问题需要考虑: • (1)条件必须明确,能使循环过程正常结束 • (2)循环体内,必要时可改变控制循环的条件 • 改变可能导致循环结束 • 改变也可能导致循环进入无休止的状态(死循环)。 Visual Basic程序设计教程
循环有两种类型: • 计数控制 • 控制累计执行循环体的次数 • 次数已到则结束循环 • 如1+2+3+…+100或98+96+94+…+4+2 • 事态控制 • 由某些条件决定循环结束。 • 如计算一系列正整数之和,遇负数停止循环。 • 也可以在一个循环过程中同时使用这两种类型 Visual Basic程序设计教程
5.2 判断素数 • 【例5-1】 设计一个判断素数的程序。若不是素数,要求分解为a*b的形式 • 控件:1个文本框和1个命令按钮 • 事件:命令按钮的Click。 • 首先要了解什么是素数。 • 素数是指除了1和自身外,不能被其它整数整除的正整数。 • 判断A是否为素数的基本方法是: • 将A分别除以2、3、……、A-1,若都不能整除,则它为素数。 • 判断A被i整除可以采用表达式: • A Mod i = 0 或:A / i = A \ i 或:A / i = Int(A /i) Visual Basic程序设计教程
5.2 判断素数----程序 • Option ExplicitPrivate Sub Command1_Click() Dim A As Long, i As Integer 'A存放要判断的数。i取值为2~A-1 Dim Flag As Boolean ' Flag作素数标志,False时,表示不是素数A = Val(Text1.Text) Flag = True ' 先设A是素数,当A<2或能被i整除时,再置为False If A < 2 Then Flag = False 'A<2,不是素数Else i = 2 Do While i <= A-1 If A Mod i = 0 Then Flag = False: Exit Do 'A能被i整除,则不是素数i = i + 1 Loop End If If Flag Then MsgBox A & "是素数", , "信息" Else ' A表示成两数之积MsgBox A & "不是素数" & Chr(13) & A & "=" & i & "*" & A/i, , "信息" End IfEnd Sub Visual Basic程序设计教程
说明: • 程序中,也可以不设标志变量,在最后判断i是否超过终值A-1,若超过终值则表示直到循环完成,还没遇到一个能被整除的整数,即它是素数;否则它就不是素数。 • 当A能被其中一个i整除时,A肯定不是素数,所以没有必要再测试下一个i,因此使用Exit Do退出循环。 • 在使用Exit Do退出循环的时候,没有改变i的值,故A能被该i整除,即A可以表示成A=i*(A/i)。 • 事实上只要判断A能否被2、3、……、Sqr(A)整除即可。 Visual Basic程序设计教程
5.3 进行逻辑运算 • 逻辑运算使用逻辑运算符 • VB提供了多个逻辑运算符,有: • 非(Not)、与(And)、或(Or) • 异或(Xor)、等价(Eqv)、蕴含(Imp)。 • 1.基本格式 • Not为一元运算符,其它均为二元运算符。格式: • Not 表达式 • 表达式1 逻辑运算符 表达式2(除Not外) • 一个逻辑表达式可用一个或多个逻辑运算符。如:A>0 And B>0 And C>0 • 2.数据类型 • 逻辑运算的数据及结果均为布尔类型。 Visual Basic程序设计教程
3.运算方式 • 4.优先级 Visual Basic程序设计教程
5.逻辑表达式举例 • (1)设变量Name1的值为“王小华”、变量Addr的值为“上海”,则表达式:Name1 = “王小华” Or Addr = "杭州" 值:True • 表达式: Name1 = “王小华” And Addr = "沪" 值: False • (2)写出数学表达式0<x<10 对应的VB表达式。VB表达式应为: x > 0 And x < 10 Visual Basic程序设计教程
(3)描述Name1的值不等于“王小华”的表达式。该表达式可写为:Name1 <> "王小华" 或: Not Name1 = "王小华" • (4)X=3、Y=4、Z=5,求表达式X>2 Xor Y<0 Or Z>X+1的值。执行次序如图所示,最终值为False。 Visual Basic程序设计教程
闰年的条件是: • 能被4整除,但不能被100整除;或能被400整除。 • 设变量Y存放年份,则该逻辑表达式应为: • Y Mod 4=0 And Y Mod 100<>0 Or Y Mod 400=0 【例5-2】 设计程序,要求对文本框的年份判断是否为闰年,并在标签中显示相应的信息。 Visual Basic程序设计教程
程序代码如下:Option ExplicitPrivate Sub Command1_Click() Dim Y As Integer If Command1.Caption = "闰年判断" Then '闰年判断Y = Val(Text1.Text) If Y Mod 4 = 0 And Y Mod 100 <> 0 Or Y Mod 400 = 0 Then Label1.Caption = "是闰年" Else Label1.Caption = "不是闰年" End If Command1.Caption = "清除" Else '清除Text1.Text="" : Label1.Caption="" : Command1.Caption="闰年判断" Text1.SetFocus End IfEnd Sub 5.3 进行逻辑运算-闰年判断 Visual Basic程序设计教程
5.4.1 For/Next语句 • 使用For/Next语句可以方便地实现计数循环 • For/Next由For语句、循环体、Next语句组成。 • 格式:For 循环控制变量 = 初值To 终 值 [Step 步长] [循环体]Next [循环控制变量] 5.4 使用For/Next循环语句 Visual Basic程序设计教程
1.执行过程(1)将初值送至循环控制变量(2)判断循环控制变量的值是否超过终值:若未超过终值,执行步骤(3);超过终值执行步骤(5)。(3)执行循环体。(4)遇到Next,使循环控制变量加上步长再送入循环控制变量中,转步骤(2)。(5)循环终止,执行Next语句后面的语句。注意:其中“超过终值”不一定是大于终值。1.执行过程(1)将初值送至循环控制变量(2)判断循环控制变量的值是否超过终值:若未超过终值,执行步骤(3);超过终值执行步骤(5)。(3)执行循环体。(4)遇到Next,使循环控制变量加上步长再送入循环控制变量中,转步骤(2)。(5)循环终止,执行Next语句后面的语句。注意:其中“超过终值”不一定是大于终值。 Visual Basic程序设计教程
2.关于格式 • 省略“Step 步长”则默认为“Step 1” 。 • 初值、终值、步长分别控制循环变量的起始值、终止值和增量。 • For和Next必须成对出现。 • Next后若有循环控制变量,则必须与For中的相同。 • 建议Next后不要省略循环控制变量,以有利于阅读程序 Visual Basic程序设计教程
3.关于循环体 • 循环体是一条或多条语句 • 可以包括分支结构和循环结构 • 可以写成一行或多行。 • 循环体中可以引用循环控制变量,也可以不引用。 • 但不要随便修改循环控制变量的值,以防引起循环混乱。 • 4.强行终止死循环 • 使用Ctrl+Break可以暂停程序运行 • 再使用VB工具栏上的“结束”按钮终止程序执行。 Visual Basic程序设计教程
【例5-3】 输入10个非负整数,求所有偶数之和。 • 假定存放和的变量为Sum,先让Sum=0。然后可采用以下方法: 将第1个数送入A,如果A是偶数,则让Sum加上A,否则Sum不变。……将第10个数送入A,如果A是偶数,则让Sum增加A,否则Sum不变。最终得到的Sum就是和。由此可见,每步都做着同样的工作,即: • 将第i个数送入A,如果A是偶数,则让Sum增加A,否则Sum不变。 Visual Basic程序设计教程
Option ExplicitPrivate Sub Command1_Click() '输入10个非负整数,求偶数和。Dim Sum As Long, i As Integer Dim A As Integer Sum = 0 '赋初值,注意位置For i = 1 To 10 A = Val(InputBox("请输入第" & i & "个数:", "输入非负整数")) If A Mod 2 = 0 Then Sum = Sum + A Next i MsgBox "Sum=" & SumEnd Sub • 一个好的程序,应该为自己用于累加、累乘等的变量赋初值。 Visual Basic程序设计教程
【例5-4】 求表达式值。x、n由键盘输入。 • 这是一个求和的例子。 • 它由n项构成,能表示成Sum=Sum+Item的形式 • 第i项等于第i-1项乘以X/(i+1),即Item=Item*X/(i+1) • 故循环体可由Item=Item*X/(i+1)和Sum=Sum+Item构成。 • 初值问题:Sum初值为0,Item初值应为1。 为防止溢出,Item和Sum声明为双精度型。程序运行结果:当X=6,N分别为1、2、3时,其和分别为3、9、18。 Visual Basic程序设计教程
Private Sub Command1_Click() Dim Sum As Double, Item As Double, i As Integer Dim N As Integer, X As Double N = Val(InputBox("请输入项数: ")) X = Val(InputBox(" X= ")) Sum = 0: Item = 1 For i = 1 To N Item = Item * X / (i + 1) Sum = Sum + Item Next i MsgBox " x/2!+x^2/3!+...= " & Sum, , "信息" End Sub Visual Basic程序设计教程
5.4.2 Exit For语句 • 循环中,中途退出循环,称为跳出循环。 • 跳出For/Next循环的语句就是Exit For。 • 跳出循环后,将执行Next语句后面的语句。 • Exit For语句一般往往与If语句合用。如: • If A >= 2 Then '素数判断For i = 2 To Int(Sqr(A)) If A Mod i = 0 Then Exit For 'A能被i整除,不是素数,退出For循环Next i If i > Int(Sqr(A)) Then '表示A不能被2~ Int(Sqr(A))中的数整除Print A; "是素数" Else '此时表示程序运行是通过Exit For转出来的Print A; "不是素数" End IfElse Print A; "不是素数"End If Visual Basic程序设计教程
5.5.1 Do/Loop语句 • 对只知道循环终止条件,可采用Do/Loop循环 • For/Next语句可改写成Do/Loop循环,反之则不然。 • Do/Loop语句有五种表示形式,它们的格式为: 5.5 使用Do/Loop循环语句 Visual Basic程序设计教程
1.执行过程(1)对格式一和二,VB将先判断条件,再执行循环体。(2)对格式三和四,先执行循环体,再判断条件。循环体至少执行一次。(3)对用While的语句,当条件满足(True)时,执行循环体。(4)对用Until的语句,当条件不满足(False)时,执行循环体。(5)格式五的循环体内必须存在Exit Do语句,否则会出现死循环。若程序运行出现死循环,同样可用Ctrl Break暂停程序执行。 Visual Basic程序设计教程
2.关于格式(1)条件一般应为关系或逻辑表达式,一般应有变量。(2)Do和Loop必须成对出现2.关于格式(1)条件一般应为关系或逻辑表达式,一般应有变量。(2)Do和Loop必须成对出现 • 3.关于循环体 • 循环体是一条或多条语句 • 可以包括分支结构和循环结构。 • 可以写成一行或多行。 • 循环体中应有改变循环条件的语句,以避免出现死循环。 Visual Basic程序设计教程
5.5.1 Do/Loop语句-编程序:求n! Visual Basic程序设计教程
【例5-6】 在文本框中输入两个整数,求它们的最大公约数和最小公倍数。 • 求最大公约数可用辗转相除法。 • 该方法的基本思想是使用带余除法: • (1)A除以B,得余数为R1; • (2)若R1=0,则B为最大公约数。 若R1≠0,则B赋值给A,R1赋值给B,求余数R2; 若R2≠0,则继续以上步骤。 Visual Basic程序设计教程
(3)经过有限(n+1)步后,Rn+1=0。 • 这时A和B的最大公约数是Rn。最小公倍数为A*B/Rn。 • 该算法循环次数未知,但循环条件已知:余数不为0。因此适用于Do/Loop语句编程。 • 其循环体为: • 把上一个B作为新的A,把上一个余数作为新的B,求出新余数。 Visual Basic程序设计教程
5.5.1 Do/Loop语句—求最大公约数和最小公倍数 • Private Sub Command1_Click() Dim A As Long, B As Long, R As Long A = Val(Text1.Text) B = Val(Text2.Text) R = A Mod BDo While R <> 0 A = B: B = R R = A Mod BLoop MsgBox "最大公约数=" & B MsgBox "最小公倍数=" & Val(Text1.Text)*Val(Text2.Text)/B • End Sub • 如果s在两个文本框中分别输入351和675,单击命令按钮后,得出最大公约数为27,最小公倍数为8775。 Visual Basic程序设计教程
【例5-7】 编程:输入一批非负数,当输入负数时,表示输入结束。求这批非负数据的最大值、最小值和平均值。 • 由于输入的个数不确定,故应采用Do/Loop语句。 • 本题关键在于如何设置最大值、最小值的初值。 Visual Basic程序设计教程
Private Sub Command1_Click() Dim X As Integer, Min As Integer, Max As Integer Dim N As Integer, Average As Single 'N作为计数,存放项数X = Val(InputBox("X=")): Max = X: Min = X '最大最小值初值N = 0: Average = 0Do While X >= 0 If X > Max Then Max = X If X < Min Then Min = X N = N + 1 Average = Average + X 'Average暂存数据和,最后再除N X = Val(InputBox("X=")) '从第2个开始输入Loop If N <> 0 Then Average = Average / N Print "Max="; Max, "Min="; Min, "Average="; Round(Average, 3) • End Sub 当输入23、41、35、61、12、1、7、-1后, 运行结果:Max=61 Min=1 Average=25.714 Visual Basic程序设计教程
5.5.2 Exit Do语句 • Exit Do是跳出Do/Loop循环的语句 • 跳出循环后,将执行Loop语句后面的语句。 • Exit Do语句同样也往往与If语句合用 • 如求阶乘的程序片断为:N = Val(InputBox("n= ")) Result = 1: i = 1 Do Result = Result * i i = i + 1 : If i > N Then Exit Do Loop MsgBox N & "!= " & Result Visual Basic程序设计教程
5.6 使用While/Wend循环语句 • While/Wend语句的作用与Do While 条件/循环体/Loop相同。 • 格式:While 条件[循环体] Wend • 执行过程: • 先计算条件的值,若条件的值为True,执行循环体,否则执行Wend语句后面的语句。 • While和Wend必须成对出现 • 循环体中必须要有设法改变循环条件的语句 • While/Wend语句没有对应的跳出语句。 Visual Basic程序设计教程
【例5-8】 编程:求π的值。有关π的级数公式为: • 要求逐项累加,直到最后一项<0.0000001时,求π。 • 因没有确定项数,故可用Do/Loop或While/Wend • 可设一个变量Sign作为各项的符号,在循环中让Sign=-Sign,可以达到一次正、一次负的目的。 • 为达到较为精确的值,变量大多声明为双精度型 Visual Basic程序设计教程
本例中变量Pi、Sum、Item、N、Precision分别存放π、累计和、项值、项中分母值和精度。本例中变量Pi、Sum、Item、N、Precision分别存放π、累计和、项值、项中分母值和精度。 • Private Sub Command1_Click() Dim Pi As Double, Sum As Double, Item As Double Dim N As Long, Precision As Double, Sign As Integer N = 1: Item = 1 / N: Sum = 0: Sign = 1 Precision = Val(InputBox(“请输入精度: ”, “输入数据”, “0.0000001”))While Item >= Precision Sum = Sum + Sign * Item N = N + 2 Item = 1 / N Sign = -Sign Wend Pi = 4 * Sum Print “π= ”; PiEnd Sub • 在单击命令按钮后,若精度用缺省值0.0000001, • 则显示=3.1415924535898。 Visual Basic程序设计教程
循环结构中可以嵌套循环 • 当循环体中包含了循环时,称为循环嵌套,或称为多重循环。 • 循环体中包含的循环语句可以与外循环相同,也可以不同。 • 嵌套一层称为二重循环。 • 多重循环中遇到Exit For(Do),只能跳出当前一层循环。 5.7 如何实现多重循环控制 Visual Basic程序设计教程
【例5-9】 窗体上显示3~100之间的所有素数。每行显示5个。 • 前面的例子中判断A是否为素数是一重循环。 • 现让A分别等于3、5、7、……、97、99就可以了。 • 为了每行显示5个,设置一个计数变量Count。 • Private Sub Command1_Click() Dim A As Integer, i As Integer, Count As Integer Count = 0 '素数个数计数变量Print "以下数据为素数:" For A = 3 To 99 Step 2For i = 2 To Int(Sqr(A)) If A Mod i = 0 Then Exit For '被整除Next i If i > Int(Sqr(A)) Then Count = Count + 1 : Print A, If Count Mod 5 = 0 Then Print '换行End IfNext AEnd Sub Visual Basic程序设计教程
【例5-10】 在窗体上如图图案,它由“*”组成。分析: • 上三角形中,第I行有I个,可使用循环: • For J = 1 To I : Print "* "; : Next J • 因每行起点不同,而且一行结束后要换行,所以在J循环的前后各有一Print。 • 这样的行有7行,故外循环使I从1至7。 • 下三角形,操作过程与上三角相似 Visual Basic程序设计教程
Private Sub Command1_Click() Dim I As Integer, J As Integer ClsFor I = 1 To 7 Print Spc(20 - I); '打印时空20-i格For J = 1 To I Print "* ";Next J Print '用于换行Next IFor I = 6 To 1 Step -1Print Spc(20 - I);For J = 1 To IPrint "* ";Next J PrintNext IEnd Sub 5.7 如何实现多重循环控制-显示图案 Visual Basic程序设计教程
5.8 程序举例 • 5.8.1 递推法 • 【例5-11】 有一个数列,前两项是1、1,第三项是前二项之和,以后每一项都是前二项之和。即为:1、1、2、3、5、8、13、21,34……。 要求输出该数列的前30项。 • 该数列又称斐波那契数列。由“兔子问题”引发 • 这是一个递推问题 • 所谓递推关系是指一串函数之间的关系,它把每一个函数表示为前k个函数的线性组合。本题中k=2。 • 解决递推问题必须具备两个条件:(1) 有初始值,如F1=1、F2=1 (2) 存在递推关系。如Fn=Fn-1+Fn-2(n>2) • 在程序中一般设置二或三个变量就可以了。 • 程序中用F1、F2、F3表示三个数,在循环中,它们不断用新值代替旧值。这种操作称为迭代, Visual Basic程序设计教程
程序代码如下:Private Sub Command1_Click() Dim F1 As Long, F2 As Long, F3 As Long Dim i As Integer Cls F1 = 1: F2 = 1 Print F1, F2, For i = 3 To 30 F3 = F1 + F2 Print F3, If i Mod 4 = 0 Then Print '每行显示4个数F1 = F2 : F2 = F3 '用新值代替旧值NextEnd Sub F1和F2始终作为前两个数,F3作为新产生的数 因第24个月兔子数已超过32767对,故变量声明为Long Visual Basic程序设计教程
5.8.2 穷举法 • 【例5-12】 我国古代数学家在《算经》中出了一道题:“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、母、雏各几何?” • 即:当时用100元钱买100只鸡,其中公鸡每只5元,母鸡每只3元,小鸡3只1元,问可买公鸡、母鸡、小鸡各多少只? • 设公鸡X只,母鸡Y只,小鸡Z只,列出方程式:X+Y+Z=100 5X+3Y+Z/3=100 • 2个方程求3个未知数,无法用代数方法求解 • 可将X、Y、Z分别为0~100的每一种可能性都去试一下,如符合,则就是其中的一种购买方案。 • 列举所有可能的方案,找出符合要求的,这样的算法称为穷举法。 Visual Basic程序设计教程
可测试方案分别为: • 0、0、0;0、0、1;……;0、0、100; • 1、0、0;1、0、1;……;1、0、100; • ……; • 100、100、0;100、100、1;……;100、100、100 • 事实上当X和Y确定时,Z可以用100-X-Y求得,因此可以把三重循环改为二重循环。 • Private Sub Command1_Click()Dim X As Integer, Y As Integer, Z As IntegerPrint "公鸡", "母鸡", "小鸡"For X = 0 To 100 For Y = 0 To 100 Z = 100 - X - Y If 5 * X + 3 * Y + Z / 3 = 100 Then Print X, Y, Z Next YNext XEnd Sub 事实上X和Y的循环可分别为0到20和0到33 Visual Basic程序设计教程
5.8.3 求水仙花数 • 【例5-13】 求数100~999所有满足:数X = 数X个位、十位、百位的立方和。如:153 = 1*1*1 + 5*5*5 + 3*3*3 • 说明:该程序主要是能分出个位、十位、百位 • Private Sub Command1_Click() Dim i As Integer Dim N1 As Integer, N2 As Integer, N3 As IntegerFor i = 100 To 999 N1 = i \ 100 '求百位N2 = (i - N1 * 100) \ 10 '求十位N3 = i Mod 10 '求个位If i = N1 ^ 3 + N2 ^ 3 + N3 ^ 3 Then '计算水仙花数Print i; "="; N1; "^3 +"; N2; "^3 +"; N3; "^3" End If NextEnd Sub Visual Basic程序设计教程
5.8.4 验证哥德巴赫猜想 • 【例5-14】 输入一个大于等于6的偶数,将它分解为两个素数之和。 • 对每一个大于等于6的偶数N都可表示成: • N=3+(N-3)、N=4+(N-4)、N=5+(N-5)、……、N=(N-3)+3, • 即A、B的范围为3~N-3 • 由于大于2的偶数不是素数,处理前可以去掉这些数, • 由于3+(N-3)和(N-3)+3是一致的,故A的范围为3~N/2,B=N-A。 • 程序设计思路: • 当输入一个大于等于6的偶数N后, • 让A在3~N/2的奇数范围内循环, • 若A是素数,则求出B=N-A,再判断B是否为素数, • 若B也是素数,则输出A和B。 Visual Basic程序设计教程
Private Sub Command1_Click() Dim A As Long, B As Long, N As Long, i As Integer, j As IntegerDo '该循环是为了必须获得一个大于等于6的偶数N = Val(InputBox("请输入一个大于6的偶数")) Print "输入的数为" & NLoop While N / 2 <> N \ 2 Or N < 6For A = 3 To N / 2 Step 2 '步长为2是只判断偶数For i = 2 To Sqr(A) '判断A是否为素数If A Mod i = 0 Then Exit ForNext i If i > Sqr(A) Then '若A是素数B = N - A '求出BFor j = 2 To Sqr(B) '判断B是否也为素数If B Mod j = 0 Then Exit ForNext j If j > Sqr(B) Then '若B也是素数Print N & "=" & A & "+" & B '输出Exit For '已验证,跳出A循环End If End IfNext AEnd Sub 当输入2322时,显示2322=11+2311 Visual Basic程序设计教程
5.8.5 数制转换 • 【例5-15】 请编写程序:将十进制正整数转换为二进制数或十六进制数; • 控件: • 两个标签 • 两个文本框 • 两个单选按钮 • 两个命令按钮 • 十进制整数转换成二进制数,采用除2取余法。 • 十进制整数转换成十六进制数,采用除16取余法 • 最后把这些余数以字符方式拼接起来。 Visual Basic程序设计教程
5.8.5 数制转换-程序 Private Sub Command1_Click() '转换Dim A As Long, B As String, R As Integer 'B存放转换后结果,R放余数A = Val(Text1.Text): B = ""If Option1.Value Then '转换成二进制Do While A <> 0 B = (A Mod 2) & B : A = A \ 2 '拼接除2后的余数,获得除2后的商Loop Text2.Text = B '将结果(二进制)放入文本框Else '转换成十六进制Do While A <> 0 R = A Mod 16 '除16取余Select Case R '获得余数对应的十六进制数,即0~9,A~F之一并拼接Case 0 To 9 : B = R & B Case 10 : B = "A" & B Case 11 : B = "B" & B Case 12 : B = "C" & B Case 13 : B = "D" & B Case 14 : B = "E" & B Case 15 : B = "F" & B End Select A = A \ 16 '获得除16后的商 Loop Text2.Text = B '将结果(十六进制)放入文本框End IfEnd Sub Visual Basic程序设计教程