VisualBasic程序设计教程第版实验答案_第1页
VisualBasic程序设计教程第版实验答案_第2页
VisualBasic程序设计教程第版实验答案_第3页
VisualBasic程序设计教程第版实验答案_第4页
VisualBasic程序设计教程第版实验答案_第5页
已阅读5页,还剩128页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、声明:1-实验所属课本原件为VisualBasic程序设计教程(第4版)(主编龚沛曾编者杨志强陆慰民谢步瀛);实验答案代码采用红色字体突出;仅提供课本前七个实验的代码,之后的实验上课考试均不涉及故不作;教学平台上机实验、课本篇后实验,两者题目操作略有差异,作业以前者要求为准故以下答案代码为前者代码,如对后者代码有所需求请私信;本文为作者原创,复制转载请注明出处;如果对代码有所疑问,或者略感繁琐想直接要已完成实验,请私信;浏览、复制、下载后请给作者一个合理的评价,感激不尽。实验1-1编制简单的欢迎界面程序。要求:在屏幕上显示“欢迎学习VisualBasic”;在文本框Textl中输入姓名;单击命

2、令按钮“你输入的姓名是”,在Label3标签显示在文本框中输入的姓名。“学号-1-1frm”和“学号-1-1.vbp”文件名保存。以后每个实验项目的命名规则都是如此,即“学号-实验号-实验题目”“”和“”)图2.1.1实验1.1运行界面提示:表2.1.1属性设置控件名属性Label1Caption二欢迎学习VisualBasic;Font属性:字号为二号,字体为隶书,Aligment=2(居中)Label2Caption二请输入你的姓名;Font属性:字体为楷体,有下划线Label3Caption二“,BorderStyle=1Text1Text二Command1Caption二你输入的姓名是

3、(2)“欢迎学习VisualBasic要在两行显示,只要将Label1控件的宽度缩小一些PrivateSubCommand1_Click()Label3.Caption=Text1.TextEndSub实验1-2模仿教学篇例1.1,将事件过程中的自上而下移动改为自右向左移动,同时考虑文字超出窗体边界的情况。各个控件及属性窗口的设置见表2.1.2,背景图形文件可以选择自己喜欢的,按钮上的图标可通过Windows搜索功能查找。以“学号-1-2”为项目名保存。表212属性设置控件名属性Form1Caption二实验1.2;Picture:选择自己喜欢的图片Label1Caption二我开始学习程序设

4、计;FontSize=36;BackStyle=0Command1Caption二“;Style=1;Picture二clock02.ico;ToolTipText=自动Command2Caption二;Style=1;Picture二key04.ico;ToolTipText=手动Timer1Interval=0注:因为印刷错误,例题1.1中两个命令按钮的图形与事件过程代码不一致,需要调整。提示:自定义事件过程MyMove代码应调整为,可实现文字移动方向的改变SubMyMoveOLabel1.MoveLabel1.Left50,Label1.TopEndSubEndSubIfLabell.L

5、eft0ThenLabell.Left二Forml.WidthEndSubSubMyMove()Label1.MoveLabel1.Left-50,Label1.TopIfLabel1.Left0ThenLabel1.Left=Form1.WidthEndSubPrivateSubCommand1_Click()Timer1.Interval=200EndSubPrivateSubCommand2_Click()Timer1.Interval=0CallMyMoveEndSubPrivateSubForm_Load()Timer1.Interval=0PrivateSubTimer1_Time

6、r()CallMyMoveEndSub实验1-3“学号T-3”为项目名保存。图2.1.2实验1.3运行界面提示:对窗体编写两个事件:Form_Load事件中对文本框置初值为空;Form_Click事件对鼠标单击文本框计数。对鼠标单击文本框计数计算为:Text1.Text二Val(Text1.Text)+1PrivateSubForm_click()Text1.Text=Val(Text1.Text)+1EndSubPrivateSubForm_Load()Text1.Text=实验1-4按照教学篇例2.2对窗体三个事件过程(Load、Click、DblClick)编程,在3个事件中装入不同的图

7、片(自己选择);在属性窗口练习鼠标指针改变:MousePointer(值为99,用户自定义)、Mouseicon为Key04.ico图标文件,练习窗体图标(Icon)、边框线类型(BorderStyle)、最大化按钮和最小化按钮的改变,运行观察其效果。以“学号-1-4”为项目名保存。提示:例题中Form_Resize事件可以不考虑,Picture属性设置中注意图片文件有后缀名,运行测试前需要先保存项目名,保证图片文件和程序文件在同一个文件夹下,否则会出现图片找不到的错误提示。PrivateSubForm_Click()Caption=单击窗体Picture=LoadPicture(App.Pa

8、th+p2.jpg)Print欢迎使用VBEndSubPrivateSubForm_DblClick()ClsCaption=双击窗体Picture=LoadPicture(App.Path+p3.jpg)Print结束使用VBEndSubPrivateSubForm_Load()Caption=装入窗体Picture=LoadPicture(App.Path+p1.jpg)Print装入图片EndSub实验1-5命令按钮、字号、内容和格式的复制练习,效果如下图所示。有关控件及属性参见下表。以“学号-1-5”为项目名保存。图2.1.3实验1.5运行界面表2.1.3属性设置控件名属性Form1C

9、aption二实验1.5Label1Caption二输入文本复制文本Text1Text=VB功能强大,但要下功夫学习才能学好;MultiLine二True;ScrollBar=2Text2Text二;MultiLine二TrueCommand1Caption=隶书25磅Command2Caption二复制二要求:Commandl:使得Textl的字体和字号根据命令按钮显示的要求改变Command2:要求将Text1选中的内容及其格式复制到Text2。选中的内容通过Text1的SelText属性获得提示:为使Text2文本框保持Text1中的字符格式,通过Text2.FontSize二Text1

10、.FontSize和Text2.FontName=Text1.FontName实现PrivateSubCommand1_Click()Text1.FontName=隶书Text1.FontSize=25EndSubPrivateSubCommand2_Click()Text2=Text1.SelTextText2.FontName=Text1.FontNameText2.FontSize=Text1.FontSizeEndSub实验1-6图片缩小、还原的设置。“学号T-6”为项目名保存。图2.1.4实验1.6运行界面要求:(1)单击“缩小一半”按钮,图片纵、横均缩小一半。(2)单击“还原”按钮

11、,图片与初始装入时同大。提示:为了实现还原效果,要做以下3件事。(1)必须在事件过程外,即程序代码最上方声明窗体级变量:Dimh%,w%用户输入的变量声明语句(2)在Forml_Load事件中保存图像控件的初始值:w=Imagel.Widthh=Imagel.Height在Command2_Click事件中还原为初始值:Imagel.Width二wImagel.Height二h缩小一半Command1_Click事件请读者自行完成。思考:若要设置图片放大效果,如何修改代码?Dimh%,w%PrivateSubCommand1_Click()Image1.Width=Image1.Width*0

12、.5Image1.Height=Image1.Height*0.5EndSubPrivateSubCommand2_Click()Image1.Width=wImage1.Height=hEndSubPrivateSubForm_Load()w=Image1.Widthh=Image1.HeightEndSub实验2-1图2.2.1实验2.1运行界面提示:随机数生成某范围内的正整数公式为Int(Rnd*范围+基数)其中范围二数的上限-下限+1,基数二数的下限。例如,要生成2位数,语句为Int(Rnd*(99-10+1)+10)=Int(Rnd*90+10)保留两位小数,利用Format函数,形

13、式为Format(要显示的数值,0.00)。PrivateSubCommand1_Click()Text1.Text=Int(Rnd*9+1)Text2.Text=Int(Rnd*90+10)Text3.Text=Int(Rnd*900+100)EndSubPrivateSubCommand2_Click()Text4.Text=Format(Val(Text1.Text)+Val(Text2.Text)+Val(Text3.Text)/3,0.00)EndSubPrivateSubCommand3_Click()Text1.Text=Text2.Text=Text3.Text=Text4.T

14、ext=EndSub实验2-2我国有13亿人口,假定按人口年增长0.8%计算,多少年后我国人口超过26亿。提示:(1)已知年增长率r=0.8%,求人数超过26亿的年数n公式为:其中:Log(x)为对数函数,Log(2)缘由Log(13/26),0.8%需写成0.008(2)该题目的界面设计由读者自行设计。PrivateSubCommand1_Click()n=Int(Log(2)/Log(1+0.008)+1)Text1=n&年后人口超过26亿EndSub实验2-3输入一个合法的3位正整数,测试其数值合法性后,逆序输出并显示。例如,输入“734”,输出是“437”提示:(2)利用“MOD”和“

15、”运算符将一个3位数分离出3个1位数,然后利用乘法和加法运算将3个1位数连接成一个逆序的3位数。图2.2.2实验2.3运行界面图2.2.3出错信息PrivateSubCommand1_Click()Dimx%,x1%,x2%,x3%x=Val(Text1)x1=xMod10 x2=(xMod100)10EndIfEndIfx3=x100Label2=x1*100+x2*10+x3EndSubPrivateSubText1_KeyPress(KeyAsciiAsInteger)IfKeyAscii=13ThenIfNotIsNumeric(Text1.Text)ThenText1.Text=En

16、dIfEndIfEndSubPrivateSubText1_LostFocus()IfNotIsNumeric(Text1.Text)ThenMsgBox输入非数值数据,请重新输入,数据检验Text1.Text=Text1.SetFocusEndSub实验2-4图2.2.4实验2.4运行界面提示:事件过程可以在Form_Click中编码,输出控件可以使用标签控件。PrivateSubForm_click()Label1=UCase(Text1.Text)Label2=Len(Text1.Text)Label3=Left(Text1,11)Label4=Mid(Text1,12,6)Label5

17、=Right(Text1,5)EndSub实验2-5图2.2.5实验2.5运行界面PrivateSubCommand1_Click()Label2=Val函数的结果Text2=Val(Text1.Text)EndSubPrivateSubCommand2_Click()Label2=Str函数的结果Text2=Str(Text1.Text)EndSubPrivateSubCommand3_Click()Label2=Chr函数的结果Text2=Chr(Text1.Text)EndSubPrivateSubCommand4_Click()Label2=Asc函数的结果Text2=Asc(Text

18、1.Text)EndSub实验2-6“清屏”按钮后,清除窗体所显示的图形。提示:利用循环语句和String函数。读者也可以发挥自己的想像力,设计更美观的图形。图2.2.6实验2.6运行界面图2.2.7进一步要求运行界面PrivateSubCommand1_Click()PrintFori=1To5PrintTab(15-i*2);String(2*i-1,);String(10-(2*i-1),);String(2*i-1,)NextiEndSubPrivateSubCommand2_Click()ClsEndSub实验2-7用InputBox输入一个正实数,用Print方法在一行上显示出它的

19、平方和平方根、立方和立方根,每个数保留三位小数,其间有间隔。PrivateSubcommand1_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);立方根为:;lfgEndSub实验3-1广在购买某物品时,若所标明的价钱x在下述范围内,Xi10000.9k1000000所付钱y按对

20、应折扣支付:O.Sxaooorfooo,0.7k提示:此例用多分支结构实现,注意计算公式和条件表达式的正确书写。PrivateSubForm_Click()Dimx!,y!x=Val(InputBox(输入x的值)Ifx1000Theny=xElseIfx2000Theny=0.9*xElseIfx3000Theny=0.8*xElsey=0.7*xEndIfPrintyEndSub实验3-2编一个程序输入上网的时间并计算上网费用,计算方法如下:*基馥犯元匚费用=v母少时2一5元=.每小时2元:.SXil同时为了鼓励多上网,每月收费最多上洌时间去亟卜时不超过150元。提示:首先利用多分支If语

21、句根据3个时间段算出费用,然后再用单分支If语句对超过150元的费用设置为150元。PrivateSubForm_Click()Dimx!,y!x=Val(InputBox(输入上网时间)Ifx10Theny=30ElseIfx150Theny=150EndIfPrintyEndSub实验3-3输入x,y,z图2.3.1实验3.3运行界面提示:利用InputBox函数输入3个数,存放到数值型变量中,然后对其进行比较;若放在字符串变量中,有时会得到不正确的结果(因为字符串是从左到右的规则比较,例如会出现“34”“2345”“126789”的情况)。对三个数进行排序,只能通过两两比较,一般可用三条

22、单分支if语句来实现。方法如下:先将x与y比较,使得xy;然后将x与z比较,使得xz,此时x最大;最后将y与z比较,使得yz。要显示多个数据,可以用“;”逐一显示,也可利用“&”字符串连接符将多个变量连接显示。例如要输出X、y、z:Print”排序后”;x;”;y;”;z用分号将多个变量显示也可Print”排序后”&x&”&y&”&z用”&”字符串连接符思考:若要按从小到大的次序显示,程序将如何修改?PrivateSubCommand1_Click()Dimx!,y!,z!x=InputBox(inputx)y=InputBox(inputy)z=InputBox(inputz)Printxy

23、zPrintx;y;IfxyThent=x:y:yIfxzThent=x:z:zIfyzThent=y:y=z:z=tPrint排序后;x;y;zEndSub实验3-4图2.3.2实验3.4运行界面提示:对于存放操作符的文本框Text3,利用SelectCase语句实现相应的运算。PrivateSubCommand2_Click()Text1.Text=Text2.Text=Text3.Text=Text4.Text=EndSubPrivateSubText3_LostFocus()SelectCaseTrim(Text3)Case+Text4=Val(Text1)+Val(Text2)cCa

24、se-Text4=Val(Text1)-Val(Text2)Case*Text4=Val(Text1)*Val(Text2)Case/IfVal(Text2)=0ThenMsgBox分母为零,重新输入Text2=Text2.SetFocusElseText4=Val(Text1)/Val(Text2)EndIfEndSelectEndSub实验3-5利用计算机解决古代数学问题”鸡兔同笼问题”。即已知在同一个笼子里有总数为M只鸡和兔,鸡和兔的总脚数为N只,求鸡和兔各有多少只?提示:鸡、兔的只数通过已知输入的M,N列出方程可解,设鸡为x只,兔为y只,则计算公式为:但不要求出荒唐的解(如3.5只鸡、

25、4.5只兔,或者求得的只数为负数)。因此,在Text2_LostFocus事件中要考虑下面两个条件:输入的总脚数N必须是偶数,否则提示数据错误的原因,要求重新输入数据。(使用求余方法判断,即NMod20)图2.3.3实验3.5运行界面PrivateSubText2_LostFocus()DimM%,N%,y%M=Val(Text1)N=Val(Text2)IfNMod20ThenMsgBox(脚数必须是偶数)Text2=Text2.SetFocusElsey=N/2-MIfN4*MOrN=0。PrivateSubCommand1_Click()Dima!,b!,c!,x1!,x2!,de!a=

26、Text1b=Text2Text1=Text1=c=Text3de=b*b-4*a*ct=2*aIfde=0ThenText4=Format(-b/t,0.00)Text5=Format(-b/t,0.00)ElseIfde0ThenText4=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)&iEndIfEndS

27、ubPrivateSubCommand2_Click()Text2=Text3=Text4=Text5=EndSub实验3-7“重置”按钮,清除文本框输入的内容、窗体显示的信息和计算,并对窗体级变量赋初值零,便于再次输入和统计。提示:在过程外最上方声明一个窗体级变量n存放统计括号配对的情况;在Textl_KeyPress(KeyAsciiAsinteger)事件过程中进行如下处理:IfChr(KeyAscii)不是等号Then若是左括号”(”则n=n+1;若是右括号”)”则n=n-1;Else结束表达式输入,对n的3种情况:=n、0、0用Print方法显示相应的信息EndIf用一个嵌套的双分支

28、和内嵌两个多分支结构来实现。Dimn!PrivateSubCommand1_Click()Text1.Text=n=0ClsEndSubPrivateSubText1_KeyPress(KeyAsciiAsInteger)IfChr(KeyAscii)=ThenIfChr(KeyAscii)=(Thenn=n+1EndIfIfChr(KeyAscii)=)Thenn=n-1EndIfElseIfn=0ThenPrint括号配对成功;ElseIfn0ThenPrint左括号多于右括号&n&个,按“重置”按钮,重新输入EndIfIfn7,Is7OrText11ThenMsgBox数字为17,重新输

29、入Text1=Text1.SetFocusElseLabel3=Choose(Text1,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday)EndIfEndSub实验3-9“函数”和“字形”后单击“计算”按钮,在Label3以选择的字形显示计算的结果。提示:关于“字形”复选框的选用采用逐个判断选择,进行属性值的对应设置。字形的属性见表2.3.1,设置属性值为True时其属性起作用。图2.3.6实验3.9运行界面PrivateSubCommand1_Click()IfOption1.ValueThenLabel3.Caption=S

30、in(&Text1.Text&)=&Sin(Val(Text1.Text)ElseIfOption2.ValueThenLabel3.Caption=Exp(&Text1.Text&)=&Exp(Val(Text1.Text)Else&Sqr(Val(Text1.Text)Label3.Caption=Sqr(&Text1.Text&)=EndIfIfCheck1.ValueThenLabel3.FontBold=TrueElseLabel3.FontBold=FalseEndIfIfCheck2.ValueThenLabel3.FontItalic=TrueElseLabel3.FontIt

31、alic=FalseElseEndIfIfCheck3.ValueThenLabel3.FontUnderline=TrueElseLabel3.FontUnderline=FalseEndIfEndSub实验3-10表2.3.2票价目的地高铁高铁动车快车南京1409347北京555410179图2.3.7实验3.10运行界面提示:Commandl_Click事件采用一个双分支(目的地)结构分别嵌套一个多分支(车速类型)来实现;显示的内容通过各单选按钮的Caption属性来获得。PrivateSubCommand1_Click()IfOption1.Value=TrueThenIfOption

32、3.Value=TrueThenLabel1.Caption=从上海到南京高铁价格140元ElseIfOption4.Value=TrueThenLabel1.Caption=从上海到南京动车价格93元ElseLabel1.Caption=从上海到南京快车价格47元EndIfElseIfOption3.Value=TrueThenLabel1.Caption=从上海到北京高铁价格555元ElseIfOption4.Value=TrueThenLabel1.Caption=从上海到北京动车价格410元Label1.Caption=从上海到北京快车价格179元EndIfEndIfEndSub实验3

33、-11编写一个“个人简历表”程序。该程序运行后,用户在文本框中输入姓名和年龄,选择性别、职业、学历和个人兴趣等个人信息。单击“递交”按钮运行后,在右侧Labell控件显示具体个人信息;单击“重置”图2.3.8个人简历表提示:利用xb,xl,zy,ah字符串变量分别保存性别、学历、职业和爱好的选择信息。Dimxm,xb,xl,zy,ahAsStringPrivateSubcommandl_Click()IfTextl.Text=ThenTextl.SetFocusMsgBox姓名未填,提示Elsexm=Text1.TextEndIfIfNotIsNumeric(Text2.Text)OrVal(

34、Text2.Text)=60ThenText2.Text=Text2.SetFocusMsgBox年龄输入错误,提示Elsenl=Val(Text2.Text)EndIfIfOption1.ValueThenxb=Label4.CaptionElseIfOption2.ValueThenxb=Label5.CaptionMsgBox性别未选,提示EndIfIfOption3.ValueThenxl=Label6.CaptionElseIfOption4.ValueThenxl=Label7.CaptionElseIfOption5.ValueThenxl=Label8.CaptionElseM

35、sgBox学历未选,提示EndIfIfOption6.ValueThenzy=Label9.CaptionElseIfOption7.ValueThenzy=Label10.CaptionElseIfOption8.ValueThenzy=Label11.CaptionElseMsgBox职业未选,提示EndIfIfCheck1.ValueThenah=Label12.CaptionElse1ah=EndIfIfCheck2.ValueThenah=Label13.Caption+ahElseah=ah+EndIfIfCheck3.ValueThenah=Label14.Caption+ahE

36、lseah=ah+EndIfIfCheck4.ValueThenah=Label15.Caption+ahElseah=ah+EndIfLabel3.Caption=简历&vbCrLf&姓名:&xm&vbCrLf&年龄:&nl&vbCrLf&性别:&xb&vbCrLf&学历:&xl&vbCrLf&职业:&zy&vbCrLf&爱好:&ahEndSubPrivateSubCommand2_Click()Text1.Text=Text2.Text=Label3.Caption=Option1.Value=FalseOption2.Value=FalseOption3.Value=FalseOptio

37、n4.Value=FalseOption5.Value=FalseOption6.Value=FalseOption7.Value=FalseOption8.Value=FalseCheck1.Value=FalseCheck2.Value=FalseCheck3.Value=FalseCheck4.Value=FalseEndSub实验4-1提示:对于特殊字符、通过汉字标准输入的软键盘菜单中的特殊符号命令来实现。用String(n,)函数产生重复字符串,如:String(5,“)将产生。通过循环结构确定显示的起始位Tab(20-2*i),显示有规律的子串,“的列宽约为2。图2.4.1实验4.

38、1运行界面PrivateSubForm_Click()Fori=1To9PrintTab(20-2*i);String(2*i-1,)NextiEndSub实验4-2图2.4.2实验4.2运行界面提示:利用Chr函数将字母编码值转换成字母。PrivateSubForm_Click()Fori=1To10Step1PrintTab(i);String(20-2*i),Chr(64+i)NextiEndSub实验4-3求s=l+(l+2)+(l+2+3)+(l+2+3+4)+(l+2+3+4+n)。要求:用For单循环求前30项和。用Until求多项式和,直到和大于5000为止。图2.4.3实验4

39、.3运行界面PrivateSubCommand1_Click()DimsAsDouble,xAsDouble,iAsInteger,jAsIntegerFori=1To30 x=0Forj=1Toix=x+1s=s+xNextjNextiLabel1.Caption=前30项的和=&sEndSubPrivateSubcommand2_Click()DimiAsLong,sAsDouble,xAsDoublei=1s=1x=1Dox=x+is=s+xLoopUntil(s5000)Label2.Caption=前&i&项的和=&sEndSub实验4-4图2.4.4实验4.4运行界面提示:要考虑字

40、母的大写和小写。首先利用Len函数求Textl.Text字符串长度,然后利用For循环结构和Mid函数逐一取字符进行判断是否为字母,若是字母,则利用语句“Text2.Tex七=字母&Text2.Text将字母连接到Text文本框前面,实现反序。思考:若连接表达式为“Text2.Text&=字母”,效果如何?PrivateSubCommand1_Click()Text2.Text=Fori=1ToLen(Text1.Text)Text2.Text=Mid(Text1.Text,i,1)&Text2.TextNextiEndSubPrivateSubCommand2_Click()Text1.Te

41、xt=Text2.Text=EndSubPrivateSubCommand3_Click()EndEndSub实验4-5计算当第i项的值10-4时结束提示:本题的关键是找规律写通项。本题规律为:第i项的分母是前一项的分母加i,即分母通项为:T=T+i。ii-1图2.4.5实验4.5运行界面Dims!,t!,i&PrivateSubcommand1_click()t=1s=0i=0DoWhilet100000ThenExitFort=t+iNextiPrintFor结构;s,i;项EndSub实验4-6编一程序,显示出所有的水仙花数。所谓水仙花数,是指一个3位数,其各位数巧U十+字立方和等于该数

42、字本身。例如,153是水仙花数,因为提示:解该题的方法有两种:利用三重循环,将三个数连接成一个3位数进行判断。例如,将i,j,k,3个一位数连成一个3位数的表达式为:i*100+j*10+k;i,j,k分别为三重循环的循环控制变量s=0Fori=1To9s=s*10+inexti利用单循环将一个3位数逐位分离后进行判断。例如x是一个3位数,分离为3个一位数i,j,k,方法如下:x=357i=x100获得百位数结果3j=(xMod100)10获得十位数结果5k=xMod10获得个位数结果7通常,对于若干位数值(例如,s是一个9位数),利用循环从右边开始逐位分离,程序段如下:DoWhiles0s1

43、=sMod10NextiNextis=s10Printsi;从右边开始显示分离出每一位LoopPrivateSubCommand1_Click()DimsAsIntegers=0Fori=iTo9Forj=0To9Fork=0To9s=i*i00+j*i0+kIfs=i八3+j八3+k八3Thenn丄o八c)|八|i八c)Prints&二;i;3;+;j;3;+;k;3EndIfNextkNextjEndSubPrivateSubCommand2_Click()DimiAsIntegerFori=100To999If(i100)八3+(i10Mod10)八3+(iMod10)八3=iThenP

44、rinti&=;i100;;+;i10Mod10;;+;iMod10;3EndIfNextiEndSub实验4-7计算n的近似值,n的计算公式为:分别显示当n=50、1000时的结果同时要防止大数相乘时结果溢出的问题,将变量类型和常数2改为双精度型(即2#)PrivateSubForm_Click()Dimn&,x#,i&NextiNextin=InputBox(输入n值)x=2Fori=1Tonx=x*(2*i)/(2*i-1)*(2*i)/(2*i+1)NextiPrint当n二&n&时,n二;xEndSub实验4-8求Sn二a+aa+aaa+aaa+aaaaa(n个a),其中a是-个由随

45、机数产生的19(包括1,9)中的一个正整数,n是一个由滚动条产生的510(包括5,10)中的一个数。例如:当a=2,n=5时,Sn=2+22+222+2222+22222。提示:为了得到不断重复a的n位数Temp,可用如下程序段实现:Temp=0Fori=1TonTemp=Temp*10+ay=图2.4.6实验4.8运行界面图2.4.7实验4.8运行界面Dima%,n%,i!PrivateSubHScroll1_Change()a=HScroll1.ValueLabel1.Caption=a=&aEndSubPrivateSubHScroll2_Change()n=HScroll2.Value

46、Label2.Caption=n=&nEndSubPrivateSubForm_click()Dimx$,y$,Temp#,sum#x=sum=sum=0Temp=0Fori=1TonTemp=Temp*10+asum=sum+Tempx=x&CStr(Temp)&+Ifi=1Theny=y&Right(Space(20)&CStr(Temp),19)&vbCrLfElsey=y&Right(Space(20)&CStr(Temp),20)&vbCrLfEndIfNextiLabel3.Caption=Left(x,Len(x)-1)&=&CStr(sum)Label4.Caption=Lef

47、t(y,Len(y)-1)&String(20,-)&vbCrLf&Right(Space(20)&CStr(sum),20)EndSub实验4-9提示:将滚动条的Min、Max分别设置为字号的最小值和最大值;当拖动滑块时,字体取原来值,字号跟着变化。图2.4.8实验4.9运行界面PrivateSubHScroll1_Change()n=HScroll1.ValueLabel1.FontSize=nLabel1.Caption=n&号字EndSub实验4-10提示:将Image图像Stretch属性设置为True,使得图片随着图像控件大小的改变而变化;将滚动条的最大值和最小值与图像控件放大和缩

48、小的大小相关联。图2.4.9实验4.10运行界面PrivateSubHScroll1_Change()Image1.Width=HScroll1.ValueEndSubPrivateSubVScroll1_Change()Image1.Height=VScroll1.ValueEndSub实验4-11当在文本框输入分钟数按回车键时,开始进入倒计时,进度条也随之减少。图实验4.11运行界面PrivateSubText1_KeyPress(KeyAsciiAsInteger)IfKeyAscii=13ThenProgressBar1.Max=Val(Text1.Text)*60ProgressBa

49、r1.Value=ProgressBar1.MaxTimer1.Enabled=TrueEndIfEndSubPrivateSubTimer1_Timer()ProgressBar1.Value=ProgressBar1.Value-1Text1.Text=Format(Int(ProgressBar1.Value/60),00)&:&ProgressBar1.ValueMod60IfProgressBar1.Value=0ThenTimer1.Enabled=FalseEndSub实验4-12参阅教材例4.20,用迭代法求X=需求立方根的迭代公式为:迭代到为方程的近似解。显示a=3、27的值

50、,并通过求a,l/3)的表达式加以验证。提示:假定X的初值为a,根据迭代公式得X,若迭代结束;否则用X代替X0110PrivateSubForm_Click()Dimi%X1=27Fori=1To10000X2=2/3*XI+27/(3*XI八2)IfAbs(X2-X1)10八(-5)ThenEXitForElse:X1=X2EndIfNextiPrintX2;为求得的根EndSub实验4-13一个富翁试图与陌生人做一笔换钱生意,换钱规则为:陌生人每天给富翁10万元钱,直到满一个月(30天);而富翁第一天给陌生人1分钱,第二天2分,第三天4分,富翁每天给陌生人的钱是前一天的两倍,直到满一个月。

51、分别显示富翁给陌生人的钱和陌生人给富翁的钱为多少?提示:设富翁第一天给出的钱为0.01,第2天给出的钱为前一天的两倍,即,如此重复到30天,累计求得富翁给出的钱远远超出陌生人给出的10万*30=3007万OPrivateSubcommand1_click()Dimx#,i%x=0.01Fori=1To29NextiText1.Text=x&元Text2.Text=100000*30&元EndSub实验4-14用计算机安排考试日程。期末某专业在周一周六的6天时间内要考x,y,z三门课程,考试顺序为先考x,然后考y,最后考z,规定一天只能考一门,且z课程只能安排在周五或周六考。编写程序安排考试日程

52、(即x,y,z三门课程各在那一天考),要求列出满足条件的所有方案。PrivateSubForm_Click()Forx=1To6Fory=2To6Forz=5To6IfxyAndyMaxThenMax=a(i)Ifa(i)MinThenMin=a(i)Avg=Avg+a(i)NextiAvg=Avg/10Fori=1To10Printa(i);NextiPrintPrintMax=;Max,Min=;Min,Avg=;AvgEndSub实验5-2已知6个学生的成绩,通过对数组赋初值的方法,利用String函数,以每5分为一个“显示,并显示学生的成绩,如图E.2所示。图E.2:实验E.2运行界面

53、PrivateSubForm_click()Dimaa=Array(56,78,98,88,76,78)Fori=0To5PrintString(a(i)5,);a(i)PrintNextiEndSub实验5-3随机产生20个学生的成绩,统计各分数段人数。即059、6069、7079、8089、90100,并显示结果。产生的数据在Picturel显示,统计结果在Picture2显示,如图E.3所示。图E.3:实验E.3运行界面提示:本程序有两个事件过程,都要用到存放20个学生的数组,因此在通用声明段声明一个数组,例,Dimmark%(19);在Command2事件过程中声明一个数组s(9),分

54、别存放分数段的人数。统计时的关键在于确定每个人的分数mark(i)与数组s下标之间的关系,即:Fori=0to19k二mark(i)10SelectCasekCase0To5059分不及格的人数s(5)=s(5)+lCase9To1090100分的人数s(9)=s(9)+1Case6To8存放其他三个分数段的数组元素的下标有规律,根据k获得s(k)=s(k)+1EndSelectNextiDimmark%(19)PrivateSubCommand1_click()Picture1.ClsFori=0To19Case0To5Case0To5mark(i)=Int(Rnd*101)NextiFor

55、i=0To19Picture1.Printmark(i);If(i+1)Mod4=0ThenPicture1.PrintEndIfNextiEndSubPrivateSubCommand2_Click()Picture2.ClsDims%(9)Fori=0To19k=mark(i)10SelectCaseks(5)=s(5)+1Case9To10s(9)=s(9)+1Case6To8s(k)=s(k)+1EndSelectNextiFori=0To9Ifs(i)0ThenPicture2.Prints(;i;)的人数有;Format(s(i),0);个EndIfNextiEndSub实验5-4

56、随机产生10个2位数,按从大到小递减的顺序排列,并显示排序结果。PrivateSubForm_Click()Dima(1To10)AsIntegerFori=1To10a(i)=Int(Rnd*90+10)NextiFori=1To9Forj=9ToiStep-1Ifa(j)a(j+1)Thent=a(j)a(j)=a(j+1)a(j+1)=tEndIfNextjNextiFori=1To10Printa(i);IfiMod10=0ThenPrintNextiEndSub实验5-5参照教材例5.3,在通用声明段声明两个数组,利用随机函数形成如下两个数组要求:以下三角形式显示A数组、上三角形式显

57、示B数组。求A数组主对角线元素之和和B数组副对角线元素之和。图E.4:实验E.5运行界面Dima(4,4)AsInteger,b(4,4)AsIntegerPrivateSubCommand1_Click()Picture1.ClsFori=1To4Forj=1To4NextjNextja(i,j)=Int(Rnd*41+30)NextjNextiFori=1To4Forj=1ToiPicture1.Printa(i,j);NextjPicture1.PrintNextiEndSubPrivateSubCommand2_Click()Picture2.ClsFori=1To4Forj=1To4

58、b(i,j)=Int(Rnd*41+100)NextiFori=1To4Picture2.PrintTab(5*i-4);Forj=iTo4Picture2.Printb(i,j);NextjPicture2.PrintNextiEndSubPrivateSubCommand3_Click()Picture3.Clssum1=0Fori=1To4Forj=1To4Ifi=jThensum1=sum1+a(i,j)Nextisum2=0Fori=1To4Forj=1To4Ifi+j=5Thensum2=sum2+b(i,j)NextjNextiPicture3.PrintA数组主对角线元素和为:

59、;sumlPicture3.PrintB数组主对角线元素和为:;sum2EndSub实验5-6输入整数n,显示出具有n行的杨辉三角形。图E.5显示n=8的效果。提示:定义一个二维数组(若用定长数组实现,则数组大一些;若用动态数组,则数组大小用ReDim命令重新定义)。对下三角各元素进行设置:第一列及对角线上均为1,其余每一个元素正好等于它上面一行的同一列和前一列的两个元素之和。即a(i,j)=a(i-1,j-l)+a(iT,j)。利用TAB函数确定每列的宽度,使得列对齐。图E.5:实验E.6杨辉三角形运行界面PrivateSubForm_Click()Dima()AsIntegern=Val(

60、Text1.Text)ReDima(1Ton,1Ton)Fori=1TonForj=1TonIfj=1Ori=jThena(i,j)=1EndIfNextjNextiFori=3TonForj=2Ton-1a(i,j)=a(i-1,j-1)+a(i-1,j)NextjNextiFori=1TonForj=1ToiPicture1.PrintTab(j*5);a(i,j);NextjPicture1.PrintNextiEndSub实验5-7设计一个选课的运行界面如图E.6所示。它包含2个列表框,左边为已开设的课程名称,通过Forml_Load时间加入,并按拼音字母排序;当单击某课程名称后,将该

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论