(完整word版)Visual-Basic程序设计教程(第4版)实验答案[2]模板.pdf
声明:1.实验所属课本原件为 Visual Basic 程序设计教程(第 4 版)(主编 龚沛曾 编者 杨志强 陆慰民 谢步瀛);2.实验答案代码采用红色字体突出;3.仅提供课本前七个实验的代码,之后的实验上课考试均不涉及故不作;4.教学平台上机实验、课本篇后实验,两者题目操作略有差异,作业以前者要求为准,故以下答案代码为前者代码,如对后者代码有所需求请私信;5.本文为作者原创,复制转载请注明出处;6.如果对代码有所疑问,或者略感繁琐想直接要已完成实验,请私信;7.浏览、复制、下载后请给作者一个合理的评价,感激不尽。实验 1-1 编制简单的欢迎界面程序。要求:在屏幕上显示“欢迎学习 Visual Basic”;在文本框Text1 中输入姓名;单击命令按钮“你输入的姓名是”,在Label3 标签显示在文本框中输入的姓名。程序运行效果如图 2.1.1 所示。程序以“学号-1-1.frm”和“学号-1-1.vbp”文件名保存。以后每个实验项目的命名规则都是如此,即“学号-实验号-实验题目”。(如某同学的学号为 A10414001,所完成的是实验 2 的第 3 题,那么程序文件名为“A10414001-2-3.frm”和“A10414001-2-3.vbp”)图 2.1.1 实验 1.1 运行界面 提示:(1)实验所用到的控件及属性设置见表 2.1.1。表 2.1.1 属 性 设 置 控件名 属 性 Label1 Caption=欢迎学习 Visual Basic;Font 属性:字号为二号,字体为隶书,Aligment=2(居中)Label2 Caption=请输入你的姓名;Font 属性:字体为楷体,有下划线 Label3 Caption=,BorderStyle=1 Text1 Text=Command1 Caption=你输入的姓名是(2)“欢迎学习 Visual Basic”要在两行显示,只要将 Label1控件的宽度缩小一些。Private Sub Command1_Click()Label3.Caption=Text1.Text End Sub 实验 1-2 模仿教学篇例 1.1,将事件过程中的自上而下移动改为自右向左移动,同时考虑文字超出窗体边界的情况。各个控件及属性窗口的设置见表 2.1.2,背景图形文件可以选择自己喜欢的,按钮上的图标可通过 Windows 搜索功能查找。以“学号-1-2”为项目名保存。表 2.1.2 属 性 设 置 控件名 属 性 Form1 Caption=实验 1.2;Picture:选择自己喜欢的图片 Label1 Caption=我开始学习程序设计;FontSize=36;BackStyle=0 Command1 Caption=;Style=1;Picture=clock02.ico;ToolTipText自动 Command2 Caption=;Style=1;Picture=key04.ico;ToolTipText手动 Timer1 Interval=0 注:因为印刷错误,例题 1.1 中两个命令按钮的图形与事件过程代码不一致,需要调整。提示:自定义事件过程 MyMove 代码应调整为,可实现文字移动方向的改变 Sub MyMove()Label1.Move Label1.Left-50,Label1.Top If Label1.Left 0 Then Label1.Left=Form1.Width End Sub Sub MyMove()Label1.Move Label1.Left-50,Label1.Top If Label1.Left 要求:(1)Command1:使得 Text1 的字体和字号根据命令按钮显示的要求改变(2)Command2:要求将 Text1 选中的内容及其格式复制到Text2。选中的内容通过 Text1 的 SelText 属性获得 提示:为使 Text2 文本框保持 Text1 中的字符格式,通过Text2.FontSize=Text1.FontSize 和Text2.FontName=Text1.FontName 实现 Private Sub Command1_Click()Text1.FontName=隶书 Text1.FontSize=25 End Sub Private Sub Command2_Click()Text2=Text1.SelText Text2.FontName=Text1.FontName Text2.FontSize=Text1.FontSize End Sub 实验 1-6 图片缩小、还原的设置。窗体上放置一个 Image 图像控件和两个命令按钮。Image 图像控件装入自己喜欢的图片,设置 Stretch 属性为 True,使得图片随着图像控件的大小而变,如图 2.1.4 所示。以“学号-1-6”为项目名保存。图 2.1.4 实验 1.6 运行界面 要求:(1)单击“缩小一半”按钮,图片纵、横均缩小一半。(2)单击“还原”按钮,图片与初始装入时同大。提示:为了实现还原效果,要做以下 3 件事。(1)必须在事件过程外,即程序代码最上方声明窗体级变量:Dim h%,w%用户输入的变量声明语句(2)在 Form1_Load 事件中保存图像控件的初始值:w=Image1.Width h=Image1.Height(3)在 Command2_Click 事件中还原为初始值:Image1.Width=w Image1.Height=h 缩小一半 Command1_Click 事件请读者自行完成。思考:若要设置图片放大效果,如何修改代码?Dim h%,w%Private Sub Command1_Click()Image1.Width=Image1.Width*0.5 Image1.Height=Image1.Height*0.5 End Sub Private Sub Command2_Click()Image1.Width=w Image1.Height=h End Sub Private Sub Form_Load()w=Image1.Width h=Image1.Height End Sub 实验 2-1 随机生成 3 个正整数,其中一个 1 位数,1 个 2 位数,1 个 3位数,计算它们的平均值,保留两位小数,运行界面如图2.2.1 所示。图 2.2.1 实验 2.1 运行界面 提示:(1)随机数生成某范围内的正整数公式为 Int(Rnd*范围+基数)其中范围=数的上限-下限+1,基数=数的下限。例如,要生成 2 位数,语句为 Int(Rnd*(99-10+1)+10)=Int(Rnd*90+10)(2)保留两位小数,利用 Format 函数,形式为 Format(要显示的数值,0.00)。Private Sub Command1_Click()Text1.Text=Int(Rnd*9+1)Text2.Text=Int(Rnd*90+10)Text3.Text=Int(Rnd*900+100)End Sub Private Sub Command2_Click()Text4.Text=Format(Val(Text1.Text)+Val(Text2.Text)+Val(Text3.Text)/3,0.00)End Sub Private Sub Command3_Click()Text1.Text=Text2.Text=Text3.Text=Text4.Text=End Sub 实验 2-2 我国有 13 亿人口,假定按人口年增长 0.8%计算,多少年后我国人口超过 26 亿。提示:(1)已知年增长率 r=0.8%,求人数超过 26 亿的年数 n公式为:其中:Log(x)为对数函数,Log(2)缘由 Log(13/26),0.8%需写成 0.008(2)该题目的界面设计 由读者自行设计。Private Sub Command1_Click()n=Int(Log(2)/Log(1+0.008)+1)Text1=n&年后人口超过 26 亿 End Sub 实验 2-3 输入一个合法的 3 位正整数,测试其数值合法性后,逆序输出并显示。例如,输入“734”,输出是“437”,如图 2.2.2所示。提示:(1)利用 Text1_LostFocus 事件,输入数据合法性检查调用 IsNumeric 函数,参阅教学篇例 2.5;若有错利用 MsgBox显示出错信息,如图 2.2.3 所示;清除文本框内输入的非法数据,通过 SetFocus 定位于文本框处,重新输入。(2)利用“MOD”和“”运算符将一个 3 位数分离出 3 个 1位数,然后利用乘法和加法运算将 3 个 1 位数连接成一个逆序的 3 位数。图 2.2.2 实验 2.3 运行界面 图 2.2.3 出错信息 Private Sub Command1_Click()Dim x%,x1%,x2%,x3%x=Val(Text1)x1=x Mod 10 x2=(x Mod 100)10 x3=x 100 Label2=x1*100+x2*10+x3 End Sub Private Sub Text1_KeyPress(KeyAscii As Integer)If KeyAscii=13 Then If Not IsNumeric(Text1.Text)Then Text1.Text=End If End If End Sub Private Sub Text1_LostFocus()If Not IsNumeric(Text1.Text)Then MsgBox 输入非数值数据,请重新输入,数据检验 Text1.Text=Text1.SetFocus End If End Sub 实验 2-4 输入一个字符串,分别调用 UCase、Len、Mid、Left、Right函数,显示如图 2.2.4 所示的效果。图 2.2.4 实验 2.4 运行界面 提示:事件过程可以在 Form_Click 中编码,输出控件可以使用标签控件。Private Sub Form_click()Label1=UCase(Text1.Text)Label2=Len(Text1.Text)Label3=Left(Text1,11)Label4=Mid(Text1,12,6)Label5=Right(Text1,5)End Sub 实验 2-5 效仿实验 2.4,验证转换函数的使用,Text1 文本框输入字符串,Text2 文本框显示调用所选函数的结果,4 个命令按钮为转换函数,Label2 显示对应的函数名,运行效果如图2.2.5 所示。图 2.2.5 实验 2.5 运行界面 Private Sub Command1_Click()Label2=Val 函数的结果 Text2=Val(Text1.Text)End Sub Private Sub Command2_Click()Label2=Str 函数的结果 Text2=Str(Text1.Text)End Sub Private Sub Command3_Click()Label2=Chr 函数的结果 Text2=Chr(Text1.Text)End Sub Private Sub Command4_Click()Label2=Asc 函数的结果 Text2=Asc(Text1.Text)End Sub 实验 2-6 Print 方法练习,显示字符图形。参考教学篇例 4.4 输出简单图形,如图 2.2.6 所示。要求窗体不可改变大小,当单击“清屏”按钮后,清除窗体所显示的图形。提示:利用循环语句和 String 函数。读者也可以发挥自己的想像力,设计更美观的图形。进一步要求:若要显示如图 2.2.7 所示的图形,程序要如何修改?图 2.2.6 实验 2.6 运行界面 图 2.2.7 进一步要求运行界面 Private Sub Command1_Click()Print For i=1 To 5 Print Tab(15-i*2);String(2*i-1,);String(10-(2*i-1),);String(2*i-1,)Next i End Sub Private Sub Command2_Click()Cls End Sub 实验 2-7 用 InputBox 输入一个正实数,用 Print 方法在一行上显示出它的平方和平方根、立方和立方根,每个数保留三位小数,其间有间隔。Private Sub command1_Click()x=Val(InputBox(输入一个正实数,计算,0)pf=Format(x*x,0.000)pfg=Format(Sqr(x),0.000)lf=Format(x*x*x,0.000)lfg=Format(x (1/3),0.000)Print 平方为:;pf;Space(3);平方根为:;pfg;Space(3);立方为:;lf;Space(3);立方根为:;lfg End Sub 实验 3-1 在购买某物品时,若所标明的价钱 x 在下述范围内,所付钱y 按对应折扣支付:提示:此例用多分支结构实现,注意计算公式和条件表达式的正确书写。Private Sub Form_Click()Dim x!,y!x=Val(InputBox(输入 x 的值)If x 1000 Then y=x ElseIf x 2000 Then y=0.9*x ElseIf x 3000 Then y=0.8*x Else y=0.7*x End If Print y End Sub 实验 3-2 编一个程序输入上网的时间并计算上网费用,计算方法如下:同时为了鼓励多上网,每月收费最多不超过 150 元。提示:首先利用多分支 If 语句根据 3 个时间段算出费用,然后再用单分支 If 语句对超过 150 元的费用设置为 150 元。Private Sub Form_Click()Dim x!,y!x=Val(InputBox(输入上网时间)If x 10 Then y=30 ElseIf x 150 Then y=150 End If Print y End Sub 实验 3-3 输入 x,y,z 三个数,按从大到小的次序显示,如图 2.3.1 所示。图 2.3.1 实验 3.3 运行界面 提示:利用 InputBox 函数输入 3 个数,存放到数值型变量中,然后对其进行比较;若放在字符串变量中,有时会得到不正确的结果(因为字符串是从左到右的规则比较,例如会出现“34”“2345”“126789”的情况)。对三个数进行排序,只能通过两两比较,一般可用三条单分支 if 语句来实现。方法如下:先将 x 与 y 比较,使得 xy;然后将 x 与 z 比较,使得 xz,此时 x 最大;最后将 y 与 z 比较,使得 yz。要显示多个数据,可以用“;”逐一显示,也可利用“&”字符串连接符将多个变量连接显示。例如要输出 x、y、z:Print”排序后”;x;”;y;”;z 用分号将多个变量显示 也可 Print”排序后”&x&”&y&”&z 用”&”字符串连接符 思考:若要按从小到大的次序显示,程序将如何修改?Private Sub Command1_Click()Dim x!,y!,z!x=InputBox(input x)y=InputBox(input y)z=InputBox(input z)Print x y z Print 排序前;x;y;z If x y Then t=x:x=y:y=t If x z Then t=x:x=z:z=t If y z Then t=y:y=z:z=t Print 排序后;x;y;z End Sub 实验 3-4 编一模拟袖珍计算器的完整程序,界面如图 2.3.2 所示。要求:输入两个操作数和一个操作符,根据操作符决定所做的运算。图 2.3.2 实验 3.4 运行界面 提示:对于存放操作符的文本框 Text3,利用 Select Case 语句实现相应的运算。Private Sub Command2_Click()Text1.Text=Text2.Text=Text3.Text=Text4.Text=End Sub Private Sub Text3_LostFocus()Select Case Trim(Text3)Case+Text4=Val(Text1)+Val(Text2)Case-Text4=Val(Text1)-Val(Text2)Case*Text4=Val(Text1)*Val(Text2)Case/If Val(Text2)=0 Then MsgBox 分母为零,重新输入 Text2=Text2.SetFocus Else Text4=Val(Text1)/Val(Text2)End If End Select End Sub 实验 3-5 利用计算机解决古代数学问题”鸡兔同笼问题”。即已知在同一个笼子里有总数为 M 只鸡和兔,鸡和兔的总脚数为 N 只,求鸡和兔各有多少只?提示:鸡、兔的只数通过已知输入的 M,N 列出方程可解,设鸡为 x只,兔为 y 只,则计算公式为:但不要求出荒唐的解(如 3.5 只鸡、4.5 只兔,或者求得的只数为负数)。因此,在 Text2_LostFocus 事件中要考虑下面两个条件:输入的总脚数 N 必须是偶数,否则提示数据错误的原因,要求重新输入数据。(使用求余方法判断,即 N Mod 20)图 2.3.3 实验 3.5 运行界面 若求出的只数为负数,提示数据错误的原因,如图 2.3.3所示,重新输入数据。(使用总只数和总脚数的关系,即 N4*M Or N2*M)Private Sub Text2_LostFocus()Dim M%,N%,y%M=Val(Text1)N=Val(Text2)If N Mod 2 0 Then MsgBox(脚数必须是偶数)Text2=Text2.SetFocus Else y=N/2-M If N 4*M Or N=0。Private Sub Command1_Click()Dim a!,b!,c!,x1!,x2!,de!a=Text1 b=Text2 c=Text3 de=b*b-4*a*c t=2*a If de=0 Then Text4=Format(-b/t,0.00)Text5=Format(-b/t,0.00)ElseIf de 0 Then Text4=Format(-b+Sqr(de)/t,0.00)Text5=Format(-b-Sqr(de)/t,0.00)Else Text4=Format(-b/t,0.00)&+&Format(Sqr(Abs(de)/t,0.00)&i Text5=Format(-b/t,0.00)&-&Format(Sqr(Abs(de)/t,0.00)&i End If End Sub Private Sub Command2_Click()Text1=Text2=Text3=Text4=Text5=End Sub 实验 3-7 检查表达式输入中圆括号配对问题。要求对文本框输入的算术表达式,检验其圆括号配对情况,并给出相应信息,如图2.3.5 所示。当单击“重置”按钮,清除文本框输入的内容、窗体显示的信息和计算,并对窗体级变量赋初值零,便于再次输入和统计。提示:在过程外最上方声明一个窗体级变量 n,存放统计括号配对的情况;在 Text1_KeyPress(KeyAscii As integer)事件过程中进行如下处理:If Chr(KeyAscii)不是等号 Then 若是左括号”(”则 n=n+1;若是右括号”)”则 n=n-1;Else 结束表达式输入,对 n 的 3 种情况:=n、0、0 用 Print 方法显示相应的信息 End If 用一个嵌套的双分支和内嵌两个多分支结构来实现。Dim n!Private Sub Command1_Click()Text1.Text=n=0 Cls End Sub Private Sub Text1_KeyPress(KeyAscii As Integer)If Chr(KeyAscii)=Then If Chr(KeyAscii)=(Then n=n+1 End If If Chr(KeyAscii)=)Then n=n-1 End If Else If n=0 Then Print 括号配对成功;Else If n 0 Then Print 左括号多于右括号&n&个,按“重置”按钮,重新输入 End If If n 7,Is 7 Or Text1 1 Then MsgBox 数字为 17,重新输入 Text1=Text1.SetFocus Else Label3=Choose(Text1,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday)End If End Sub 实验 3-9 设计如图 2.3.6 所示的计算程序。当输入参数,选择“函数”和“字形”后单击“计算”按钮,在 Label3 以选择的字形显示计算的结果。提示:关于“字形”复选框的选用采用逐个判断选择,进行属性值的对应设置。字形的属性见表 2.3.1,设置属性值为 True 时其属性起作用。字 形 属 性 意义 FontBold 粗体 FontItalic 斜体 FontStrikethru 删除线 FontUnderline 下划线 图 2.3.6 实验 3.9 运行界面 Private Sub Command1_Click()If Option1.Value Then Label3.Caption=Sin(&Text1.Text&)=&Sin(Val(Text1.Text)ElseIf Option2.Value Then Label3.Caption=Exp(&Text1.Text&)=&Exp(Val(Text1.Text)Else Label3.Caption=Sqr(&Text1.Text&)=&Sqr(Val(Text1.Text)End If If Check1.Value Then Label3.FontBold=True Else Label3.FontBold=False End If If Check2.Value Then Label3.FontItalic=True Else Label3.FontItalic=False End If If Check3.Value Then Label3.FontUnderline=True Else Label3.FontUnderline=False End If End Sub 实验 3-10 利用单选按钮,选择目的地和车速类型,显示从上海出发到目的地座票的票价,如图 2.3.7 所示。从上海到南京、北京乘火车有 3 种车速类型:高铁(二等)、动车、快车,座位票的票价见表 2.3.2。当选择了目的地、车速类型单选按钮后,在 Label1 控件显示选择的相关信息和车票价格。表 2.3.2 票 价 目 的 地 高 铁 动 车 快 车 南京 140 93 47 北京 555 410 179 图 2.3.7 实验 3.10 运行界面 提示:Command1_Click 事件采用一个双分支(目的地)结构分别嵌套一个多分支(车速类型)来实现;显示的内容通过各单选按钮的 Caption 属性来获得。Private Sub Command1_Click()If Option1.Value=True Then If Option3.Value=True Then Label1.Caption=从上海到南京 高铁价格 140 元 ElseIf Option4.Value=True Then Label1.Caption=从上海到南京 动车价格 93 元 Else Label1.Caption=从上海到南京 快车价格 47 元 End If Else If Option3.Value=True Then Label1.Caption=从上海到北京 高铁价格 555 元 ElseIf Option4.Value=True Then Label1.Caption=从上海到北京 动车价格 410 元 Else Label1.Caption=从上海到北京 快车价格 179 元 End If End If End Sub 实验 3-11 编写一个“个人简历表”程序。该程序运行后,用户在文本框中输入姓名和年龄,选择性别、职业、学历和个人兴趣等个人信息。单击“递交”按钮运行后,在右侧 Label1 控件显示具体个人信息;单击“重置”按钮则清除输入的信息和所做的选择。运行界面如图 2.3.8 所示。图 2.3.8 个人简历表 提示:利用 xb,xl,zy,ah 字符串变量分别保存性别、学历、职业和爱好的选择信息。Dim xm,xb,xl,zy,ah As String Private Sub command1_Click()If Text1.Text=Then Text1.SetFocus MsgBox 姓名未填,提示 Else xm=Text1.Text End If If Not IsNumeric(Text2.Text)Or Val(Text2.Text)=60 Then Text2.Text=Text2.SetFocus MsgBox 年龄输入错误,提示 Else nl=Val(Text2.Text)End If If Option1.Value Then xb=Label4.Caption ElseIf Option2.Value Then xb=Label5.Caption Else MsgBox 性别未选,提示 End If If Option3.Value Then xl=Label6.Caption ElseIf Option4.Value Then xl=Label7.Caption ElseIf Option5.Value Then xl=Label8.Caption Else MsgBox 学历未选,提示 End If If Option6.Value Then zy=Label9.Caption ElseIf Option7.Value Then zy=Label10.Caption ElseIf Option8.Value Then zy=Label11.Caption Else MsgBox 职业未选,提示 End If If Check1.Value Then ah=Label12.Caption Else ah=End If If Check2.Value Then ah=Label13.Caption+ah Else ah=ah+End If If Check3.Value Then ah=Label14.Caption+ah Else ah=ah+End If If Check4.Value Then ah=Label15.Caption+ah Else ah=ah+End If Label3.Caption=简历&vbCrLf&姓名:&xm&vbCrLf&年龄:&nl&vbCrLf&性别:&xb&vbCrLf&学历:&xl&vbCrLf&职业:&zy&vbCrLf&爱好:&ah End Sub Private Sub Command2_Click()Text1.Text=Text2.Text=Label3.Caption=Option1.Value=False Option2.Value=False Option3.Value=False Option4.Value=False Option5.Value=False Option6.Value=False Option7.Value=False Option8.Value=False Check1.Value=False Check2.Value=False Check3.Value=False Check4.Value=False End Sub 实验 4-1 用单循环和 Print 方法显示有规律的图形,可通过Form_Click 事件实现,如图 2.4.1 所示。提示:(1)对于特殊字符、通过汉字标准输入的软键盘菜单中的特殊符号命令来实现。(2)用 String(n,)函数产生重复字符串,如:String(5,)将产生。(3)通过循环结构确定显示的起始位 Tab(20-2*i),显示有规律的子串,的列宽约为 2。图 2.4.1 实验 4.1 运行界面 Private Sub Form_Click()For i=1 To 9 Print Tab(20-2*i);String(2*i-1,)Next i End Sub 实验 4-2 用单循环实现如图 2.4.2 所示的界面。图2.4.2 实验4.2运行界面 提示:利用 Chr 函数将字母编码值转换成字母。Private Sub Form_Click()For i=1 To 10 Step 1 Print Tab(i);String(20-2*i),Chr(64+i)Next i End Sub 实验 4-3 求 s=1+(1+2)+(1+2+3)+(1+2+3+4)+(1+2+3+4+n)。要求:用 For 单循环求前 30 项和。用 Until 求多项式和,直到和大于 5000 为止。运行效果如图 2.4.3 所示。图 2.4.3 实验 4.3 运行界面 Private Sub Command1_Click()Dim s As Double,x As Double,i As Integer,j As Integer s=0 For i=1 To 30 x=0 For j=1 To i x=x+1 s=s+x Next j Next i Label1.Caption=前 30 项的和=&s End Sub Private Sub command2_Click()Dim i As Long,s As Double,x As Double i=1 s=1 x=1 Do i=i+1 x=x+i s=s+x Loop Until(s 5000)Label2.Caption=前&i&项的和=&s End Sub 实验 4-4 筛选在 Text1 文本框输入的字母字符,并反序在 Text2 中存放,界面如图 2.4.4 所示。图 2.4.4 实验 4.4 运行界面 提示:要考虑字母的大写和小写。首先利用 Len 函数求 Text1.Text 字符串长度,然后利用For 循环结构和 Mid 函数逐一取字符进行判断是否为字母,若是字母,则利用语句“Text2.Text=字母&Text2.Text”将字母连接到 Text 文本框前面,实现反序。思考:若连接表达式为“Text2.Text&=字母”,效果如何?Private Sub Command1_Click()Text2.Text=For i=1 To Len(Text1.Text)Text2.Text=Mid(Text1.Text,i,1)&Text2.Text Next i End Sub Private Sub Command2_Click()Text1.Text=Text2.Text=End Sub Private Sub Command3_Click()End End Sub 实验 4-5 计算 当第 i 项的值10-4时结束 提示:本题的关键是找规律写通项。本题规律为:第i 项的分母是前一项的分母加 i,即分母通项为:Ti=Ti-1+i。因为事先不知循环次数,应使用 Do While 循环结构;当然也可利用 For 循环结构,设置循环的终值为一个较大的值,当满足精度后退出循环。运行结果如图 2.4.5 所示。图 2.4.5 实验 4.5 运行界面 Dim s!,t!,i&Private Sub command1_click()t=1 s=0 i=0 Do While t 100000 Then Exit For t=t+i Next i Print For 结构;s,i;项 End Sub 实验 4-6 编一程序,显示出所有的水仙花数。所谓水仙花数,是指一个 3 位数,其各位数字立方和等于该数字本身。例如,153是水仙花数,因为 提示:解该题的方法有两种:利用三重循环,将三个数连接成一个 3 位数进行判断。例如,将 i,j,k,3 个一位数连成一个 3 位数的表达式为:i*100+j*10+k;i,j,k 分别为三重循环的循环控制变量 通常,对于若干个一位数要连接成一个多位数(例如,将 19 连接成一个 9 位数 123456789),程序段如下:s=0 For i=1 To 9 s=s*10+i next i 利用单循环将一个 3 位数逐位分离后进行判断。例如 x 是一个 3 位数,分离为 3 个一位数 i,j,k,方法如下:x=357 i=x100 获得百位数结果 3 j=(x Mod 100)10 获得十位数结果 5 k=x Mod 10 获得个位数结果 7 通常,对于若干位数值(例如,s 是一个 9 位数),利用循环从右边开始逐位分离,程序段如下:s=123456789 Do While s 0 s1=s Mod 10 s=s10 Print s1;从右边开始显示分离出每一位 Loop Private Sub Command1_Click()Dim s As Integer s=0 For i=1 To 9 For j=0 To 9 For k=0 To 9 s=i*100+j*10+k If s=i 3+j 3+k 3 Then Print s&=;i;3;+;j;3;+;k;3 End If Next k Next j Next i End Sub Private Sub Command2_Click()Dim i As Integer For i=100 To 999 If(i 100)3+(i 10 Mod 10)3+(i Mod 10)3=i Then Print i&=;i 100;3;+;i 10 Mod 10;3;+;i Mod 10;3 End If Next i End Sub 实验 4-7 计算 的近似值,的计算公式为:注意:分别显示当 n=50、1000 时的结果 同时要防止大数相乘时结果溢出的问题,将变量类型和常数 2 改为双精度型(即 2#)Private Sub Form_Click()Dim n&,x#,i&n=InputBox(输入 n 值)x=2 For i=1 To n x=x*(2*i)/(2*i-1)*(2*i)/(2*i+1)Next i Print 当 n=&n&时,=;x End Sub 实验 4-8 求 Sn=a+aa+aaa+aaa+aaaaa(n 个 a),其中 a 是一个由随机数产生的 19(包括 1,9)中的一个正整数,n 是一个由滚动条产生的 510(包括 5,10)中的一个数。例如:当 a=2,n=5 时,Sn=2+22+222+2222+22222。提示:为了得到不断重复 a 的 n 位数 Temp,可用如下程序段实现:Temp=0 For i=1 To n Temp=Temp*10+a Next i 产生的表达式以横向和纵向两种形式显示,如图2.4.6 和图 2.4.7 所示。图 2.4.6 实验 4.8 运行界面 图 2.4.7 实验 4.8 运行界面 Dim a%,n%,i!Private Sub HScroll1_Change()a=HScroll1.Value Label1.Caption=a=&a End Sub Private Sub HScroll2_Change()n=HScroll2.Value La