第三章 VB程序设计语言基础 一 VB中的数据与运算 二 标准函数 三 三种基本结构(顺序,判定,循环) 一 VB中的数据与运算 3.1.1 数据类型 3.1.2 变量与常量 3.1.3 运算符和表达式 3.1.4 数组 3.1.1 数据类型 数值数据类型 (1) Integer型和Long型 用来表示整数.Integer型数据占2个字节,Long型数据占4个字节. 除了十进制整型数,常用的还有八进制和十六进制,它们的表示方法为: Intger型: 八进制 数值前加&O或&.如&O123 十六进制 数值前加&H.如&H123 Long型: 八进制数值前加&O或&,最后加&.如&O123& 十六进制 数值前加&H,最后加&.如&H123& (2) Single型和Double型 用来表示浮点数.Single型占4个字节,Double型占8个字节. 表示一些单精度型常量和双精度常量时,可以用以下方法: 0.123E5,0.34E-2,0.8D2 (3) Currency型 为表示钱款而设置.占8个字节.小数点左边最多15位,右边最多4位. (4) Byte型 占1个字节,表示无符号整数. 字符数据类型 字符(String)类型存放字符型数据.用双引号括起来,如"abc". 注:①""表示空字符串,长度为0. ②若字符串中含有双引号,则用连续两个双引号表如"abc""12". 日期数据类型 日期型(Date)表示日期和时间,占8个字节.用"#"括起来,如 #2004-5-4#等. 逻辑数据类型 逻辑型(Boolean)表示逻辑判断,占2个字节.只有True和Fale两个值. 逻辑型数据转换成整型数据时,True转换为-1,False转换为0. 其他类型数据转换成逻辑型数据时,非0数转换为True,0转换为False. 对象数据类型 对象型(Object)表示图形,OLE对象或其他对象,占4个字节. 变体数据类型 变体型(Varient)可存放任何类型的数据 类型说明符 可在常量或 变量的后边加上类型说明符指明它是哪一种数据类型,常见的类型说明符如下: 整型:% 长整型:& 单精度型:! 双精度型:# 字符串型:$ 货币型:@ 3.1.2 变量与常量 命名规则 1. 名字由字母,汉字,数字或下划线组成; 2.名字的第一个字符必须是字母或汉字; 3.名字的有效长度小于等于255个字符; 4.不能使用VB中的关键字. 5.VB中不区分变量名的大小写. 6.为了增加程序的可读性,可在变量名前加一个缩写的前缀来表明该变量的数据类型. 变量 变量定义的一般格式如下: Declare 变量名 As 类型 其中,①Declare可以是Dim,Static,Public,ReDim. Dim,Static用于定义局部变量 Dim用于定义窗体和模块级变量 Public用于定义全局变量 ReDim用于重新定义数组 ②类型可以是基本数据类型或用户自定义数据类型 ③若"As 类型"省略,默认为变体数据类型 ④可在变量名后加类型说明符代替"As 类型 例如:Dim x as Integer,y as Single Dim s as String 注:Dim定义的局部变量是自动变量,过程结束后其值被重新设置; Static定义的局部变量是景泰变量,过程结束后其值继续保留. 常量 VB中有三种常量:即直接常量,用户声明的符号常量和系统提供的常量. (1)直接常量 直接常量其常数值直接反映了其类型,也可在常数值后紧跟类型符显示地说明常数的数据类型. (2)符号常量 常量可用由用户定义的符号常量表示,格式如下: Const 符号常量名 [As 类型]=表达式 [,常量名=表达式]…… 例如:Const PI=3.1415926 (3)系统提供的常量 除了用户通过声明创建符号常量外,VB系统还提供了应用程序和控件定义的常量,这些常量位于对象库中,在"对象浏览器"中的Visual Basic(VB),Visual Basic for Applications(VBA)等对象库中列举了Visual Basic的常量. 3.1.3 运算符和表达式 运算符 1. 算术运算符 加:+ 减:- 乘:* 整除:/ 浮点除:/ 取模:Mod 负号:- 幂运算:^ 2. 字符串运算符 "&"和"+"都是将两个字符串拼接起来.但字符串连接时最好用"&",因为"+"还可以作为算术运算符使用 3. 关系运算符 对两个表达式的值做比较,若关系成立,则返回True,否则返回False. 等于 = 大于 > 大于等于 >= 小于 < 小于等于 <= 不等于 或>字符运算符>关系运算符>逻辑运算符 常用内部函数 VB提供了大量的内部函数(或称标准函数)供用户在编程时调用.内部函数按其功能可分成数学函数,转换函数,字符串函数,日期函数和格式输出函数等. 具体内容参见课本. 3.1.4 数组 1. 数组的概念 2. 静态数组与动态数组 3. 数组的清除和重定义 4. 数组元素的基本操作 5. 控件数组 6. 自定义数据类型 1. 数组的概念 一,数组的概念 在实际应用中,经常需要处理同一类型的成批数据.比如,要处理100个学生的会计这门课程的考试成绩,如果在程序中定义100个变量来表示这批成绩,显然是很麻烦的.我们可以用VB提供的数组来完成这个功能.可以用c1,c2,…,c100来分别代表每个学生的分数,也就是说,用一批具有相同名字,不同下标的下标变量来表示同一属性的一组数据,这样能更清楚的表示它们之间的关系. 在VB中,把一组具有相同名字,不同下标的下标变量称为数组.在计算机中,下标用"()"括起来.比如c(2),其中c为数组名,2是下标. 根据数组中下标变量的个数可以分为一维数组,二维数组或多维数组. 二,数组的声明 定义数组可以用Dim,Public,Private,Static语句实现. 格式(以Dim为例): Dim ([,]……) [As ] 例:Dim c(99) as Single Dim s(3,4) as string Dim stu(3,6) Dim a(2 to 100) as string*5 Dim b(2 to 30,5 to 40) 说明: ①数组必须要先定义,后使用 ②如果不用AS语句指明类型,默认为变体数据类型 ③一般情况下,下标的下界默认为0,如果希望下标从1开始,可以用Option Base语句设置,格式为Option Base n ,其中n为下标的下界,只能是0或1 ④可以根据需要指定数组下标的下界,格式为 Dim 数组名([下界 To] 上界[,[下界 To]上界]……) ⑤在同一个过程中,数组名不能与变量名同名 ⑥在定义数组时如果指明了类型,那么数组中的每个元素都是这种类型的;如果没有指明或定义成了变体数据类型,则其中的每个元素也是变体类型,可以存放各种类型的数据. 2. 静态数组与动态数组 定义数组后,为了使用数组,必须为数组开辟所需要的内存区.根据内存区开辟时机的不同,可把数组分为静态数组和动态数组. 通常把需要在编译时开辟内存区的数组叫做静态数组,把需要在运行时开辟内存区的数组叫做动态数组. 一,静态数组 静态数组的数组元素的个数是在数组声明时确定的,系统运行过程中它的个数不变. 前面定义的几个数组都是静态数组.我们主要讲一下动态数组. 二,动态数组 动态数组是在声明数组时未给出数组的大小(省略括号中的下标),当要使用它时,随时用ReDim语句重新指出大小的数组. 使用动态数组的优点是可根据用户需要,有效地利用存储空间,它是在程序执行到ReDim语句时分配存储空间. 建立动态数组的方法是,使用Dim,Private或Public语句声明括号内为空的数组,然后在过程中用ReDim语句指明该数组的大小.形式如下: ReDim ([,…]) [As ] 例如: Dim s() as integer '定义动态数组s,括号不能省略 Private Sub Form_Click() ...... n = InputBox("输入n的值") m = InputBox("输入m的值") n = Val(n) m = vla(m) ReDim s(n, m) '重新指明数组的大小 ...... End Sub 在过程中可多次使用ReDim语句来改变数组的大小,不能改变数组维数,也不能改变数组的类型. 每次执行 ReDim 语句时,当前存储在数组中的值都会全部丢失.Visual Basic 重新将数组元素的值置为 Empty(对 Variant 数组),置为 0(对 Numeric 数组),置为 零长度字符串(对 String 数组).如果希望改变数组大小又不丢失数组中的数据,可使用具有 Preserve 关键字的 ReDim 语句就可做到这点. 如: Dim this() As String Private Sub Command1_Click() ReDim this(4) this(2) = "microsoft" Print this(2) ReDim Preserve this(6) Print this(2) End Sub 3. 数组的清除和重定义 在一个程序中,同一个数组只能定义一次.有时可能需要清除数组的内容或对数组重新定义,这可以用Erase语句来实现.格式如下: Erase [,]…… 说明: ①在Erase语句中,只给出要刷新的数组名,不带括号和下标 ②Erase语句用于静态数组时,用来重新初始化各元素,内容被清空.若是数值数组各元素被置0,字符数组各元素被置为空字符串. ③Erase语句用于动态数组时,删除整个数组的结构并释放该数组所占用的内存.动态数组经Erase后不再存在.下次引用该动态数组之前,必须用ReDim语句重新定义该数组的维数. 4. 数组元素的基本操作 一,给数组元素赋值 1.利用循环结构 For i=1 to 5 A(i)=3 Next i 2.利用InputBox()函数输入 Private Sub Command1_Click() Dim b(2, 3) For i = 0 To 2 For j = 0 To 3 b(i, j) = InputBox("输入" & Str(i) & "," & Str(j) & "的值") Next j Next i For i = 0 To 2 For j = 0 To 3 Print b(i, j); " "; Next j Next i End Sub 当给一个较大的数组赋值时,以上方法比较麻烦,可以用Array()函数解决. 3.利用Array()函数 Private Sub Form_Click() Dim a, b a = Array(1, 2, 3, 4, 5) b = Array("11", "22", "33") For i = 0 To UBound(a) Print a(i); Next i For i = 0 To UBound(b) Print b(i); Next i End Sub 说明: ①Array()函数对各元素赋值,声明的数组是动态数组或连小括号都省略的数组,并且类型只能是Varient. ②数组下界默认为0,可通过Option Base语句决定,上界由Array()函数括号内的参数个数决定,也可通过UBound()函数获得. ③Array函数只适用于一维数组. 二,数组元素的输出 可以通过Print语句对数组输出 对一维数组,用单重循环就能实现,对二维数组,要用二重循环实现. 三,数组元素的复制 1.单个数组元素可以像简单变量一样从一个数组复制到另一个数组. 如:Dim b(4),a(6) …… b(2)=a(3) 2 .要复制整个数组,要使用For循环语句. Private Sub Command1_Click() Dim a(), b() a = Array(1, 2, 3, 4, 5) ReDim b(UBound(a)) For i = 0 To UBound(a) b(i) = a(i) Next i For i = 0 To UBound(a) Print b(i); Next i End Sub 3 .要复制整个数组,也可以使用一条简单的赋值语句即可.如: Dim a(4) as integer,b() as integer A(0)=0:a(1)=5:a(2)=10:a(3)=13:a(4)=14 B=a 使用这种方法赋值时,必须要注意: ①赋值号两边的数据类型必须一致 ②如果赋值号左边的是一个大小固定的数组,则数组赋值出错 ③赋值号左边的必须是一个动态数组,赋值时系统自动将动态数组ReDim成与右边同样大小的数组 四,For Each…Next语句 与For…Next语句类似,两者都是用来执行指定重复次数的语句.但For Each…Next语句是专门用于操作数组的,它的格式如下: For Each In [] [Exit For] Next [] 说明: ①格式中的"成员"必须是一个变体变量,是为循环提供的,代表的是数组中的每个元素. ②〈数组名〉没有括号和上下界 用For Each…Next语句可以对数组元素进行处理,它所重复执行的次数由数组中元素的个数确定,数组中有多少个元素,就自动重复执行多少次. 例: Option Base 1 Private Sub Command1_click() Dim abc(10) As Integer For i = 1 To 10 abc(i) = Int(Rnd * 100) Next i Print "使用普通循环输出:" For i = 1 To 10 Print abc(i); Next i Print "使用For Each…Next输出:" For Each x In abc Print x; Next End Sub 5. 自定义数据类型 自定义数据类型由若干个标准数据类型组成,又称记录类型.通过Type语句实现. 格式: Type自定义类型名 元素名 [(下标)] As类型名 …… [元素名 [(下标)] As类型名] End Type 如: Type Student No As Integer Name As String*20 Sex As String*1 Mark (1 To 4) As Single Total As Single End Type 说明: ①自定义数据类型一般在标准模块(.bas)中定义,默认是Public.若在窗体模块中定义,必须是Private. ②自定义数据类型中的元素类型可以是字符串,但应是定长字符串. 定义好了类型,就可在变量的声明时使用该类型,定义的方法和标准类型是一样的.比如: Dim stu as student 表示自定义类型变量中元素的格式为:变量名.元素名,如stu.no,stu.name等. 可给变量stu赋值: 标准函数 2.1 数学函数 2.2 转换函数 2.3 字符串函数 2.4 日期与事间函数 1. 数学函数 Sin(N):返回自变量N的正玄函数值,如:sin(0)=0,N为弧度. Cos(N):返回自变量N的余玄函数值,如:cos(0)=1,N为弧度. Tan(N):返回自变量N的正切函数值,如:tan(0)=0,N为弧度. Atn(N):返回自变量N的反正切值,如:atn(0)=0,函数值为弧度. Sgn(N):返回自变量N的符号.N=0,如:Sqr(81)=9. Exp(N):返回e的N 次幂值,n>=0.如:Exp(3)=20.086. Log(N):返回N的自然对数,N>0 ,如:Log(10)=2.3 Int(N):返回不大于N的最大整数,如:Int(3.6)=3. Cint(N):四舍五入整数.Cint(3.6)=4. Rnd(N):返回0~1之间的随机小数. 注意:三角函数的自变量以弧度表示. 2. 转换函数 Fix(n):返回n的整数部分,截取小数部分;如:Fix(3.4)=3. Asc(c):返回字符串C首字符的ASCII码值,如:Asc("A")=65. Chr(n):返回ASCII码值为n的字符,Chr(65)="65". Val(c):把数字组成的字符串型数据转换称数值型.Val("456")=456. Str(n):把数值n转换成字符型,Str(357)="357". Lcase(c):把字符串c中大写字母转换为小写字母.Lcase("A")="a". Ucase(c):把字符串c中小写字母转换为大写字母.Ucase("a")="A". 3. 字符串函数 Trim(c):去掉字符串c两端的空格,Trim(" ab ")="ab". Left(c,n):截取C最左边的n个字符,Left("command,3")="com". Right(c,n):截取c最右边的n个字符,Right("command,3")="and". Mid(C,m,n):截取c中第m个字符开始的n个字符.Mid("command",3,2)="mm". Len(c):返回c包含的字符数,汉字空格都算一个字符.Len("中")=1. Ucase(c):将c中的小写字母转换成大写字母.Ucase("Who")="WHO". Lcase(c):将c中的大写字母转换成小写字母.Lcase("Who")="who". 4. 日期与时间函数 Time[$][()] :返回系统当前时间; Date[$][()] :返回系统当前日期; Now[()]: 返回系统当前日期和时间; Day(c/n): 返回数据中当月第几天; Month(c/n):返回数据中当年第几月; WeekDay(c/n):返回数据当天是星期几. 三 基本控制结构 3.1 顺序结构 3.2 选择结构 3.3 循环结构 3.1 顺序结构 顺序结构就是各语句按出现的先后次序执行.主要是由一些赋值语句,输入/输出语句等组成. 赋值语句 格式:变量名=表达式 在VB中,既可以给一个变量赋值,也可以给对象的某一个属性赋值. InputBox()函数 格式:InputBox(提示[,标题][,默认][,x坐标位置][,y坐标位置]) 功能:产生一个对话框,让用户从键盘输入内容,当用户单击"确定"按钮或按回车键时,函数返回输入的值. Private Sub Command1_Click() r = InputBox("请输入姓名", "教师登记表", "张三", 3000, 4000) Print r End Sub 其中:"提示":字符串表达式,在对话框中作为信息显示. "标题":字符串表达式,在对话框的标题区显示. "默认":字符串表达式,显示输入框里的默认信息. "x坐标位置","y坐标位置":整型表达式,坐标确定对话框左上角 在屏幕上的位置,屏幕左上角为坐标原点,单位为twip. 在这五个参数中,只有"提示"是必选的. 注:函数的返回值为字符串类型,所以如果要对返回值进行算术运算,必须要转换成数值型的. 例如:Private Sub Command1_Click() r = InputBox("请输入第一个数") s = InputBox("请输入第二个数") r = Val(r): s = Val(s) x = r + s Print x End Sub MsgBox()函数 格式:变量=MsgBox(提示[,按钮][,标题]) 功能:打开一个信息框,等待用户选择一个按钮. 例如:Private Sub Command1_Click() r = MsgBox("输入密码", 51, "密码错误") Print r End Sub "提示"和"标题":意义与InputBox函数中对应的参数相同. "按钮":整型表达式,用来控制在信息框内显示的按钮,图标的种类和数量,该参数的值由4类数值相加产生,这4类数值或符号常量分别表示按钮类型,显示图标的种类,活动按钮(默认按钮)的位置及强制返回模式.按钮设置值及意义见下图. "按钮"设置值及意义 应用模式 系统模式 0 4096 VbApplicationModule VbSystemModule 模式 第1个按钮为默认 第2个按钮为默认 第3个按钮为默认 0 256 512 VbDefaultButtonl VbDefaultButton2 VbDefaultButton3 默认 按钮 关键信息图标红色STOP标志 询问信息图标 警告信息图标! 信息图标i 16 32 48 64 VbCritical VbQuestion VbExclamation VbInformation 图标 类型 只显示"确定"按钮 显示"确定","取消"按钮 显示"终止","重试","忽略"按钮 显示"是","否","取消"按钮 显示"是","否"按钮 显示"重试","取消"按钮 0 1 2 3 4 5 VbOkOnly VbOkCancel vbAboutRetryIgnore VbYesNoCancel VbYesNo VbRetryCancel 按钮 类型 描 述 按钮值 系统内部常量 4类分组 MsgBox函数返回值是一个整数值,这个返回值与所选的按钮有关,所选按钮返回数值的意义见下图. vbNo 7 否 VbYes 6 是 VbIgnore 5 忽略 VbRetry 4 重试 VbAbort 3 终止 VbCancel 2 取消 VbOk 1 确定 系统内部常量 返回值 被单击的按钮 再看一个有关返回值的例子: 编写一个程序,用MsgBox函数判断是否继续执行. Private Sub Form_Click() Dim Msg$, Title$ Dim m% Msg$ = "此数据是否正确" Title$ = "数据验证对话框" m = MsgBox(Msg$, 35, Title$) '35=3+32+0+0 If m = 6 Then ' Print "正确"; m * m ElseIf m = 7 Or m = 2 Then Print "数据错误,请重新输入" End If End Sub 对于一些较简单的信息提示,我们可以使用MsgBox语句,格式如下: MsgBox 提示[,按钮][,标题] 它与MsgBox函数的主要区别是函数有返回值,而语句没有返回值 3.2 选择结构 选择结构,就是对条件进行判断,根据判断结果,选择执行不同的分支. VB中提供了多种形式的条件语句来实现,我们主要介绍If条件语句和Select Case语句 If条件语句 If条件语句有两种格式:单行结构和块结构 1.单行结构 格式: If Then [Else ] 如果Then或Else后面有多条语句,那么各语句之间用":"隔开. 2.块结构 格式: If Then [Else ] End If Then和Else后面不能有语句,而且最后不要忘了写上End If. 这两种结构都比较简单,就不再举具体的例子了. 在实际应用中,我们还经常用的If语句的嵌套,即一个If语句里又包含一个If语句.举一个简单的例子: 某商场为了促销,采用购物打折的优惠办法,每位顾客一次购物 (1)1000元以上,按九五折优惠 (2)2000元以上,按九折优惠 (3)3000元以上,按八五折优惠 (4)5000元以上,按八折优惠 编写程序,输入购物款数,计算并输出优惠价. 方法一: Private Sub Command1_Click() Dim x As Single, y As Single x = val(Text1.Text) If x < 1000 Then y = x Else If x < 2000 Then y = 0.95 * x Else If x < 3000 Then y = 0.9 * x Else If x < 5000 Then y = 0.85 * x Else y = 0.8 * x End If End If End If End If Text2.Text = Str(y) End Sub 上面的这个程序出现多次If语句嵌套,程序长,不便阅读.为此VB提供了带ElseIf的块If语句,使程序简化易写.其格式如下: If Then Elself Then …… [Else ] End If 上面的例子可以改写成这种格式的,代码如下: 方法二: Private Sub Command1_Click() Dim x As Single, y As Single x = Val(Text1.Text) If x < 1000 Then y = x ElseIf x < 2000 Then y = 0.95 * x ElseIf x < 3000 Then y = 0.9 * x ElseIf x < 5000 Then y = 0.85 * x Else y = 0.8 * x End If Text2.Text = Str(y) End Sub Select Case 语句 又称情况语句,是多分支结构的另一种形式.格式: Select Case变量或表达式 Case表达式列表1 Case表达式列表2 … [Case Else ] End Select 格式中的"表达式列表"可为下列形式之一: (1)表达式[,表达式]…… eg: Case 2,4,6,8 (2)表达式 To表达式 eg: Case 1 to 5 (3)Is关系运算表达式 eg: Case Is<10 情况语句执行时先对"测试表达式"求值,然后测试该值与哪一个Case子句中的"表达式列表"匹配,如果找到了,就执行与该Case语句有关的语句块,执行完后转移到End Select后面的语句;如果没有找到,则执行与Case Else子句有关的语句块,然后在转移到End Select后面的语句. 刚才那个购物打折的例子同样可以用情况语句实现,代码如下: 方法三: Private Sub Form_Click() Dim x As Single, y As Single x = InputBox("请输入购物款数") x = Val(x) Select Case x Case Is < 1000 y = x Case Is < 2000 y = 0.95 * x Case Is < 3000 y = 0.9 * x Case Is < 5000 y = 0.85 * x Case Else y = 0.8 * x End Select Print "购物款数:"; x, "优惠价:"; y End Sub 同一个问题,解决的方法可能有多种,我们最好选择自己比较熟悉而又简单的来实现 3.3 循环结构 在实际应用中,经常遇到一些操作并不复杂,但需要反复多次处理的问题,比如人口增长统计,计算存款利息等,这些问题如果用顺序结构来处理十分麻烦,有时甚至难以实现,而使用VB提供的循环语句可以轻松实现. 循环结构就是在指定的条件下多次重复执行一组语句.VB提供了两种不同风格的循环结构: 计数循环(For-Next循环) 当循环(While循环) Do循环(Do-Loop循环) For循环语句 格式: For循环变量=初值To终值[step步长] [Exit For] 循环体 Next循环变量 说明: ①循环变量也称"循环计算器"或"循环控制变量",为数值型. ②初值与终值均为数值表达式. ③步长是一个数值表达式,为循环变量的增量,可正可负;如果省略,默认为1. ④Exit For可用于提前退出for循环. ⑤Next后面的"循环变量"与For后面的"循环变量"必须相同. 执行过程: ①把"初值"赋给"循环变量" ②检查"循环变量"是否超过终值,若没有则执行循环体,若超出则结束循环,执行Next后面的语句 ③循环变量加步长,转②,继续循环. 由上可看出For-Next循环的循环次数由初值,终值和步长三个因素决定,计算公式为:循环次数=Int(终值-初值)/步长+1 下面举一个例子:求n!(n为自然数) Private Sub Form_Click() Dim n As Integer n = InputBox("输入n的值:") k = 1 For i = 1 To n k = k * i Next i Print n; "!="; k End Sub 再看一个有关步长和Exit For语句的例子. Private Sub Form_Click() For i = 1 To 100 s = s + i If s = 4851 Then Exit For End If Next i Print i End Sub 当循环(While循环) 格式: While 条件 [语句块] Wend 当条件为True时,执行循环体. 例:Private Sub Form_click() Dim char As String Const ch$ = " " Counter = 0 msg$ = "输入一个字母" char = InputBox$(msg$) While char ch Counter = Counter + 1 char = InputBox$(msg$) Wend Print "输入字母的个数为:"; Counter End Sub Do…Loop循环语句 Do循环有两种格式: 格式一: Do [ {While | Until} ] [Exit Do] Loop 说明: ①格式一为先判断后执行,循环体有可能一次也不执行. 格式二为先执行后判断,至少执行一次循环体. ②While用于指明条件为True时就执行循环体. Until指在条件变为True值之前重复执行循环体. ③Exit Do语句可以提前退出循环 ④若语句中省略While或Until子句,即循环由Do-Loop构成,则为无条件循环,循环体内应该由Exit Do语句,否则成为死循环. 格式二: Do [Exit Do] Loop [{While | Until} ] 举一个Do-Loop循环的例子 目前世界人口有60亿,如果以每年1.4%的速度增长,多少年后世界人口达到或超过70亿. 方法一: Private Sub Form_Click() Dim p As Double Dim r As Single Dim n As Integer p = 6000000000# r = 0.014 n = 0 Do Until p >= 7000000000# p = p * (1 + r) n = n + 1 Loop Print n; "年后"; "世界人口达"; p End Sub 方法二: Private Sub Form_Click() Dim p As Double Dim r As Single Dim n As Integer p = 6000000000# r = 0.014 n = 0 Do While p < 7000000000# p = p * (1 + r) n = n + 1 Loop Print n; "年后"; "世界人口达"; p End Sub |