VisualBasic程序设计教程(第4版)实验答案.doc

上传人:wux****ua 文档编号:9100321 上传时间:2020-04-03 格式:DOC 页数:129 大小:1.20MB
返回 下载 相关 举报
VisualBasic程序设计教程(第4版)实验答案.doc_第1页
第1页 / 共129页
VisualBasic程序设计教程(第4版)实验答案.doc_第2页
第2页 / 共129页
VisualBasic程序设计教程(第4版)实验答案.doc_第3页
第3页 / 共129页
点击查看更多>>
资源描述
声明: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 属 性 设 置控件名属 性Label1Caption=欢迎学习Visual Basic;Font属性:字号为二号,字体为隶书,Aligment=2(居中)Label2Caption=请输入你的姓名;Font属性:字体为楷体,有下划线Label3Caption=,BorderStyle=1Text1Text=Command1Caption=你输入的姓名是(2) “欢迎学习Visual Basic”要在两行显示,只要将Label1控件的宽度缩小一些。Private Sub Command1_Click()Label3.Caption = Text1.TextEnd Sub实验1-2模仿教学篇例1.1,将事件过程中的自上而下移动改为自右向左移动,同时考虑文字超出窗体边界的情况。各个控件及属性窗口的设置见表2.1.2,背景图形文件可以选择自己喜欢的,按钮上的图标可通过Windows搜索功能查找。以“学号-1-2”为项目名保存。表2.1.2 属 性 设 置控件名属 性Form1Caption=实验1.2;Picture:选择自己喜欢的图片Label1Caption=我开始学习程序设计;FontSize=36;BackStyle=0Command1Caption=;Style=1;Picture=clock02.ico;ToolTipText自动Command2Caption=;Style=1;Picture=key04.ico;ToolTipText手动Timer1Interval=0注:因为印刷错误,例题1.1中两个命令按钮的图形与事件过程代码不一致,需要调整。提示: 自定义事件过程MyMove代码应调整为,可实现文字移动方向的改变Sub MyMove()Label1.Move Label1.Left - 50, Label1.TopIf Label1.Left 0 Then Label1.Left = Form1.WidthEnd SubSub MyMove()Label1.Move Label1.Left - 50, Label1.TopIf 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 = 25End SubPrivate Sub Command2_Click()Text2 = Text1.SelTextText2.FontName = Text1.FontNameText2.FontSize = Text1.FontSizeEnd 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.Widthh=Image1.Height(3)在Command2_Click事件中还原为初始值:Image1.Width=wImage1.Height=h缩小一半Command1_Click事件请读者自行完成。思考:若要设置图片放大效果,如何修改代码?Dim h%, w%Private Sub Command1_Click()Image1.Width = Image1.Width * 0.5Image1.Height = Image1.Height * 0.5End SubPrivate Sub Command2_Click()Image1.Width = wImage1.Height = hEnd SubPrivate Sub Form_Load()w = Image1.Widthh = Image1.HeightEnd 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 SubPrivate Sub Command2_Click()Text4.Text = Format(Val(Text1.Text) + Val(Text2.Text) + Val(Text3.Text) / 3, 0.00)End SubPrivate 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 10x2 = (x Mod 100) 10x3 = x 100Label2 = x1 * 100 + x2 * 10 + x3End SubPrivate Sub Text1_KeyPress(KeyAscii As Integer)If KeyAscii = 13 ThenIf Not IsNumeric(Text1.Text) ThenText1.Text = End IfEnd IfEnd SubPrivate Sub Text1_LostFocus()If Not IsNumeric(Text1.Text) ThenMsgBox 输入非数值数据,请重新输入, , 数据检验Text1.Text = Text1.SetFocusEnd IfEnd 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 SubPrivate Sub Command2_Click()Label2 = Str函数的结果Text2 = Str(Text1.Text)End SubPrivate Sub Command3_Click()Label2 = Chr函数的结果Text2 = Chr(Text1.Text)End SubPrivate Sub Command4_Click()Label2 = Asc函数的结果Text2 = Asc(Text1.Text)End Sub实验2-6Print方法练习,显示字符图形。参考教学篇例4.4输出简单图形,如图2.2.6所示。要求窗体不可改变大小,当单击“清屏”按钮后,清除窗体所显示的图形。提示:利用循环语句和String函数。读者也可以发挥自己的想像力,设计更美观的图形。进一步要求:若要显示如图2.2.7所示的图形,程序要如何修改?图2.2.6 实验2.6运行界面 图2.2.7 进一步要求运行界面Private Sub Command1_Click()PrintFor i = 1 To 5Print Tab(15 - i * 2); String(2 * i - 1, ); String(10 - (2 * i - 1), ); String(2 * i - 1, )Next iEnd SubPrivate Sub Command2_Click()ClsEnd 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); 立方根为:; lfgEnd Sub实验3-1在购买某物品时,若所标明的价钱x在下述范围内,所付钱y按对应折扣支付:提示:此例用多分支结构实现,注意计算公式和条件表达式的正确书写。Private Sub Form_Click()Dim x!, y!x = Val(InputBox(输入x的值)If x 1000 Theny = xElseIf x 2000 Theny = 0.9 * xElseIf x 3000 Theny = 0.8 * xElsey = 0.7 * xEnd IfPrint yEnd Sub实验3-2编一个程序输入上网的时间并计算上网费用,计算方法如下:同时为了鼓励多上网,每月收费最多不超过150元。提示:首先利用多分支If语句根据3个时间段算出费用,然后再用单分支If语句对超过150元的费用设置为150元。Private Sub Form_Click()Dim x!, y!x = Val(InputBox(输入上网时间)If x 10 Theny = 30ElseIf x 150 Theny = 150End IfPrint yEnd 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 zPrint 排序前; x; ; y; ; zIf x y Then t = x: x = y: y = tIf x z Then t = x: x = z: z = tIf y z Then t = y: y = z: z = tPrint 排序后; x; ; y; ; zEnd 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 SubPrivate 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 ThenMsgBox 分母为零,重新输入Text2 = Text2.SetFocusElseText4 = Val(Text1) / Val(Text2)End IfEnd SelectEnd 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 ThenMsgBox (脚数必须是偶数)Text2 = Text2.SetFocusElsey = N / 2 - MIf N 4 * M Or N =0。Private Sub Command1_Click()Dim a!, b!, c!, x1!, x2!, de!a = Text1b = Text2c = Text3de = b * b - 4 * a * ct = 2 * aIf de = 0 ThenText4 = Format(-b / t, 0.00)Text5 = Format(-b / t, 0.00)ElseIf de 0 ThenText4 = Format(-b + Sqr(de) / t, 0.00)Text5 = Format(-b - Sqr(de) / t, 0.00)ElseText4 = Format(-b / t, 0.00) & + & Format(Sqr(Abs(de) / t, 0.00) & iText5 = Format(-b / t, 0.00) & - & Format(Sqr(Abs(de) / t, 0.00) & iEnd IfEnd SubPrivate 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 = 0ClsEnd SubPrivate Sub Text1_KeyPress(KeyAscii As Integer)If Chr(KeyAscii) = ThenIf Chr(KeyAscii) = ( Thenn = n + 1End IfIf Chr(KeyAscii) = ) Thenn = n - 1End IfElseIf n = 0 ThenPrint 括号配对成功;ElseIf n 0 ThenPrint 左括号多于右括号 & n & 个,按“重置”按钮,重新输入End IfIf n 7, Is 7 Or Text1 1 ThenMsgBox 数字为17,重新输入Text1 = Text1.SetFocusElseLabel3 = Choose(Text1, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday)End IfEnd 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 ThenLabel3.Caption = Sin( & Text1.Text & )= & Sin(Val(Text1.Text)ElseIf Option2.Value ThenLabel3.Caption = Exp( & Text1.Text & )= & Exp(Val(Text1.Text)ElseLabel3.Caption = Sqr( & Text1.Text & )= & Sqr(Val(Text1.Text)End IfIf Check1.Value ThenLabel3.FontBold = TrueElseLabel3.FontBold = FalseEnd IfIf Check2.Value ThenLabel3.FontItalic = TrueElseLabel3.FontItalic = FalseEnd IfIf Check3.Value ThenLabel3.FontUnderline = TrueElseLabel3.FontUnderline = FalseEnd IfEnd Sub实验3-10利用单选按钮,选择目的地和车速类型,显示从上海出发到目的地座票的票价,如图2.3.7所示。从上海到南京、北京乘火车有3种车速类型:高铁(二等)、动车、快车,座位票的票价见表2.3.2。当选择了目的地、车速类型单选按钮后,在Label1控件显示选择的相关信息和车票价格。表2.3.2 票 价目 的 地高 铁动 车快 车南京1409347北京555410179图2.3.7 实验3.10运行界面提示:Command1_Click事件采用一个双分支(目的地)结构分别嵌套一个多分支(车速类型)来实现;显示的内容通过各单选按钮的Caption属性来获得。Private Sub Command1_Click()If Option1.Value = True ThenIf Option3.Value = True ThenLabel1.Caption = 从上海到南京 高铁价格 140元ElseIf Option4.Value = True ThenLabel1.Caption = 从上海到南京 动车价格 93元ElseLabel1.Caption = 从上海到南京 快车价格 47元End IfElseIf Option3.Value = True ThenLabel1.Caption = 从上海到北京 高铁价格 555元ElseIf Option4.Value = True ThenLabel1.Caption = 从上海到北京 动车价格 410元ElseLabel1.Caption = 从上海到北京 快车价格 179元End IfEnd IfEnd Sub实验3-11编写一个“个人简历表”程序。该程序运行后,用户在文本框中输入姓名和年龄,选择性别、职业、学历和个人兴趣等个人信息。单击“递交”按钮运行后,在右侧Label1控件显示具体个人信息;单击“重置”按钮则清除输入的信息和所做的选择。运行界面如图2.3.8所示。图2.3.8 个人简历表提示:利用xb,xl,zy,ah字符串变量分别保存性别、学历、职业和爱好的选择信息。Dim xm, xb, xl, zy, ah As StringPrivate Sub command1_Click()If Text1.Text = ThenText1.SetFocusMsgBox 姓名未填, , 提示Elsexm = Text1.TextEnd IfIf Not IsNumeric(Text2.Text) Or Val(Text2.Text) = 60 ThenText2.Text = Text2.SetFocusMsgBox 年龄输入错误, , 提示Elsenl = Val(Text2.Text)End IfIf Option1.Value Thenxb = Label4.CaptionElseIf Option2.Value Thenxb = Label5.CaptionElseMsgBox 性别未选, , 提示End IfIf Option3.Value Thenxl = Label6.CaptionElseIf Option4.Value Thenxl = Label7.CaptionElseIf Option5.Value Thenxl = Label8.CaptionElseMsgBox 学历未选, , 提示End IfIf Option6.Value Thenzy = Label9.CaptionElseIf Option7.Value Thenzy = Label10.CaptionElseIf Option8.Value Thenzy = Label11.CaptionElseMsgBox 职业未选, , 提示End IfIf Check1.Value Thenah = Label12.CaptionElseah = End IfIf Check2.Value Thenah = Label13.Caption + + ahElseah = ah + End IfIf Check3.Value Thenah = Label14.Caption + + ahElseah = ah + End IfIf Check4.Value Thenah = Label15.Caption + + ahElseah = ah + End IfLabel3.Caption = 简历 & vbCrLf & 姓名: & xm & vbCrLf & 年龄: & nl & vbCrLf & 性别: & xb & vbCrLf & 学历: & xl & vbCrLf & 职业: & zy & vbCrLf & 爱好: & ahEnd SubPrivate Sub Command2_Click()Text1.Text = Text2.Text = Label3.Caption = Option1.Value = FalseOption2.Value = FalseOption3.Value = FalseOption4.Value = FalseOption5.Value = FalseOption6.Value = FalseOption7.Value = FalseOption8.Value = FalseCheck1.Value = FalseCheck2.Value = FalseCheck3.Value = FalseCheck4.Value = FalseEnd 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 9Print Tab(20 - 2 * i); String(2 * i - 1, )Next iEnd Sub实验4-2用单循环实现如图2.4.2所示的界面。 图2.4.2 实验4.2运行界面提示:利用Chr函数将字母编码值转换成字母。Private Sub Form_Click()For i = 1 To 10 Step 1Print Tab(i); String(20 - 2 * i), Chr(64 + i)Next iEnd 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 Integers = 0For i = 1 To 30x = 0For j = 1 To ix = x + 1s = s + xNext jNext iLabel1.Caption = 前30项的和= & sEnd SubPrivate Sub command2_Click()Dim i As Long, s As Double, x As Doublei = 1s = 1x = 1Doi = i + 1x = x + is = s + xLoop Until (s 5000)Label2.Caption = 前 & i & 项的和= & sEnd 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.TextNext iEnd SubPrivate Sub Command2_Click()Text1.Text = Text2.Text = End SubPrivate Sub Command3_Click()EndEnd 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 = 1s = 0i = 0Do While t 100000 Then Exit Fort = t + iNext iPrint 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=0For i=1 To 9s=s*10+inext i 利用单循环将一个3位数逐位分离后进行判断。例如x是一个3位数,分离为3个一位数i,j,k,方法如下:x=357i=x100 获得百位数结果3j=(x Mod 100)10 获得十位数结果5k=x Mod 10 获得个位数结果7通常,对于若干位数值(例如,s是一个9位数),利用循环从右边开始逐位分离,程序段如下:s = 123456789Do While s 0s1 = s Mod 10s = s10Print s1; 从右边开始显示分离出每一位LoopPrivate Sub Command1_Click()Dim s As Integers = 0For i = 1 To 9For j = 0 To 9For k = 0 To 9s = i * 100 + j * 10 + kIf s = i 3 + j 3 + k 3 ThenPrint s & =; i; 3; +; j; 3; +; k; 3End IfNext kNext jNext iEnd SubPrivate Sub Command2_Click()Dim i As IntegerFor i = 100 To 999If (i 100) 3 + (i 10 Mod 10) 3 + (i Mod 10) 3 = i ThenPrint i & =; i 100; 3; +; i 10 Mod 10; 3; +; i Mod 10; 3End IfNext iEnd Sub实验4-7计算的近似值,的计算公式为:注意: 分别显示当n=50、1000时的结果 同时要防止大数相乘时结果溢出的问题,将变量类型和常数2改为双精度型(即2#)Private Sub Form_Click()Dim n&, x#, i&n = InputBox(输入n值)x = 2For i = 1 To nx = x * (2 * i) / (2 * i - 1) * (2 * i) / (2 * i + 1)Next iPrint 当n= & n & 时,=; xEnd 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=0For i=1 To nTemp=Temp*10+aNext 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.ValueLabel1.Caption = a= & aEnd Sub
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 考试试卷


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!