VB 第一章 练习题_第1页
VB 第一章 练习题_第2页
VB 第一章 练习题_第3页
VB 第一章 练习题_第4页
VB 第一章 练习题_第5页
已阅读5页,还剩114页未读 继续免费阅读

下载本文档

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

文档简介

VB第一章练习题VB第一章练习题/NUMPAGES119VB第一章练习题VB第一章练习题第一章VB.NET环境和程序设计初步一.选择题1.在VisualStudio.NET的集成开发的环境中,下面不属于该环境编程语言的是(C)。A.VBB.C++C.PascalD.J#2.在集成开发环境中有两类窗口,浮动窗口和固定窗口,下面不属于浮动窗口的是(D)。A.工具箱窗口B.属性窗口C.立即窗口D.窗体窗口3.在VB.NET中,在窗体上显示控件的文本,用(A)属性设置。A.TextB.NameC.CaptionD.Image4.不论何种控件,共同具有的是什么属性(D)。A.TextB.NameC.ForeColorD.Text5.对于窗体,可改变窗体的边框性质的属性是(B)。A.MaxButtonB.FormBorderStyleC.NameD.Left6.若要使标签控件显示时不要覆盖窗体的背景图案,要对(A)属性进行设置。A.BackColorB.BorderStyleC.ForeColorD.BackStyle7.若要使命令按钮不可操作,要对(A)属性进行设置。A.EnabledB.VisibleC.BackColorD.Text8.要使文本框中的文字不能被修改,应对(D)属性进行设置。A.LockedB.VisibleC.EnabledD.ReadOnly9.要使当前Form1窗体的标题栏显示“欢迎使用VB.NET”,以下(B)语句是正确的。“欢迎使用VB.NET”B.Me.Text=“欢迎使用VB.NET”“欢迎使用VB.NET”D.Me.Name=“欢迎使用VB.NET”10.当运行程序时,系统自动执行启动窗体的(A)事件过程。A.LoadB.ClickC.UnLoadD.GotFocus11.当文本框的ScrollBars属性设置了非None值,却没有效果,原因是(B)。A.文本框没有内容B.文本框的MulitLine属性为FalseC.文本框的MulitLine属性为TrueD.文本框的Locked属性True12.要判断在文本框中是否按了Enter键,应在文本框的(D)事件中判断。A.ChangeB.KeyDownC.ClickD.KeyPress13.在VB.NE集成环境中创建VB.NET应用程序时,除了工具箱窗口、窗体窗口和属性窗口外,必不可少的窗口是(C)。A.窗体布局窗口B.立即窗口C.代码窗口D.监视窗口14.当创建一个项目名为“引例”的项目时,该项目的所有代码文件将保存在(C)文件夹下。A.MyDocumentsB.VB.NETC.\引例D.Windows15.将调试通过后生成的.exe可执行文件放到其他机器上不能运行的主要原因是(A)。A.运行的机器上面无VB.NET系统B.缺少.frm窗体文件C.该可执行文件有病毒D.以上原因都不对16.对初学者而言,调试程序方便,有效的手段是(A)。A.在可疑的代码处设置断点,逐语句跟踪B.查看资料C.通过”立即”窗口显示变量的值D.找老师问原因17.当需要上下文帮助时,选择要帮助的“难题”,然后按住(D)键,就可出现MSDN窗口及显示所需“难题”的帮助信息。A.HelpB.F10C.EscD.F118.在代码窗口,代码下方有蓝色波浪线表示(B)。A.对代码设置了格式B.编译错误C.逻辑错误D.运行时错误二.填空题是完全面向对象的程序设计语言,其最大的特点是____________。引入了.net框架2.____________技术能让编程人员不必编写代码就可以创建GUI(图形用户界面)。可视化编程技术3.__________________是由一个或几个项目组成VB.NET程序。解决方案4.当___________特性设置后,浮动窗口将自动隐藏。自动隐藏5.当进入VB.NET集成环境,发现没有显示“工具箱”窗口,应选择____________菜单的____________选项,使“工具箱”窗口显示,并最好将其窗口的属性设置为___________。视图、工具箱、可停靠6.新建项目时,要改变默认Option设置,应对__________菜单的__________的___________文件夹进行相应选项的选择。7.对象属性是指_________。对象的性质来描述和反应对象特征的参数8.对象的方法是指_______________。对象的动作行为。9.在刚建立项目时,使窗体上的所有控件具有相同的字体格式,应对_______的_________属性进行设置。Formfont10.属性窗口的属性可以按照___________和__________顺序排列。分类顺序、字母顺序11.当对命令按钮的Image属性装入.bmp图形文件后,按钮上并没有显示所需的图形,原因是对__________属性设置为_________。FlatStyle、system12.若已建立了Form1,Form2两个窗体,默认启动窗体为Form1。通过_______菜单的_________的________选项卡,可将启动对象设置为Form2。项目菜单、属性、常规13.在文本框中,通过__________属性能获得当前插入点所在的位置。SelectionStart14.要对文本框中已有的内容进行编辑,按下键盘上的按钮,就是不起作用,原因是设置了________的属性为True。readlony15.在窗体上已建立多个控件,如TextBox1,Label1,Button1,若要使程序一运行焦点就定位在Button1控件上,应对Button1控件设置____tabindex_____属性的值为____0______。16.要同时保存解决方案中的每个文件,最方便的方法是单击工具栏的____全部保存_____按钮。第二章VB.NET语言基础和顺序结构一.选择题1.在一个语句内写多条语句时,每个语句之间用(B)符号分隔。A.,B.:C.、D.;2.一语句要在下一行继续写,用(C)符号作为续行符。A.+B.-C._D.…3.下面属于合法的变量名的是(A)。A.X_yzB.123abcC.IntegerD.X-Y4.下面属于不合法的整常数的是(D).A.100B.&O100C.&H100D.%1005.下面属于合法的字符常数的是(B)。A.ABC$B.“ABC”C.‘ABC’D.ABC6.下面属于合法的单精度型变量的是(A)。A.mun!B.sum%D.xinte$D.mm#7.下面属于不合法的双精度常数的是(D)。A.1008.表达式16/4-2^5*8/4Mod5\2的值为(B)。A.14B.4C.20D.29.数学关系表达式3≤x<10表示成正确的VB.NET表达式为(B)。A.3<=x<10B.3<=xANDx<10C.x>=3ORx<10D.3<=xAND<1010.\、/、Mod、*四个算术运算符中,优先级别最低的是(C)。A.\B./C.ModD.*11.与数学表达式ab/(3cd)对应,VB.NET的不正确表达式是()。~~~~~~~~~~~~~~~A.a*b/(3*c*d)B.a/3*b/c/dC.a*b/3/c/dD.a*b/3*c*d12.Rnd函数不可能为下列(B)值。13.Int(198.555*100+0.5)/100的值是(C)。14.已知A$=“12345678”,则表达式Val(Mid(A,1,4)+Mid(A,4,2))的值为(B)。A.123456B.123445C.8D.615.MsgBox(DateAdd(“m”,2,#1/28/2005#))语句显示结果是(A)。A.2005-3-28B.2005-1-30C.2007-1-28D.2003-1-2816.表达式DateDiff(“y”,#12/30/1999#,#1/13/2000#)的结果是(C)。A.1B.11C.14D.9917.表达式Len(“123程序设计ABC”)的值是(A)。A.10B.14C.20D.1718.下面正确的赋值语句是(C)。A.x+y=30B.y=∏*r*r;C.y=x+30D.3y=x19.为了给x、y、z三个变量赋初值1,下面正确的赋值语句是(A)。A.x=1:y=1:z=1B.x=1,y=1,z=1C.x=y=z=1D.xyz=120.赋值语句“a=123+MID(“123456”,3,2)”执行后,a变量中的值是(D)。A.“12334”B.123C.12334D.15721.赋值语句“a=123&MID(“123456”,3,2)”执行后,a变量中的值是(A)。A.“12334”B.123C.12334D.15722.已知a=12,b=20,复合赋值语句“a*=b+10”执行后,a变量中的值是(D)。A.50B.250C.30D.360二.填空题1.在VB.NET中,1234,123456&,1.2346E+1.2346D四个常数分别表示_________,_______,________,__________类型。2.整型变量x中存放了一个两位数,要将两位数交换位置,例如,13变成31,实现表达式是_________。3.表示x是5的倍数或是9的倍数的逻辑表达式为_________。4.已知a=3.5,b=5.0,c=2.5,d=True,则表达式a>=0ANDa+c>b+3ORNOTd的值是_______。5.Int(-3.5)、Int(3.5)、Fix(-3.5)、Fix(3.5)、Round(3.5)的值分别是____、____、___、___、___、___。6.表达式UCase(Mid(“abcdefgh”,3,4))的值是_________。7.在直角坐标系中,x、y是坐标系中任意点的位置,用x和y表示在第一象限或第三象限的表达是__________。10.要显示当前机器内日期,函数为_________。11.计算离你毕业(假定2008年6月30日毕业)还有多少个星期的函数表达式是__________。12.表示s字符变量是字母字符(大小写字母不区分)的逻辑表达式为___________。13.下面程序随机产生一个三位正整数,然后逆序输出,产生的数与逆序数同时显示。例如,产生246,输出是642。SubButton1_Click()HandlesButton1.ClickDimx,yAsIntegerx=Int(_________)y=(xMod10)*100+________+x\100MsgBox(“x=”&x&x“y=”&y)EndSub第三章选择结构一.选择题1.VB.NET提供了结构化程序设计的三种基本结构,三种基本结构是(D)。A.递归结构,选择结构,循环结构B.选择结构,过程结构,顺序结构C.过程结构,输入输出结构,转向结构D.选择结构,循环结构,顺序结构2.按照结构化程序设计的要求,下面(C)语句是非结构化程序设计语句。A.if语句B.For语句C.GoTo语句D.SelectCase语句3.下面程序段运行后,显示的结果是(A)。Dimx%IfxThenMsgBox(x)ElseMsgBox(x+1)A.1B.0C.-1D.显示出错信息4.语句“Ifx=1Theny=1”下列说法正确的是(C)。A.“x=1”和“y=1”均为赋值语句B.“x=1”和“y=1”均为关系表达式C.“x=1”为关系表达式“y=1”为赋值语句D.“x=1”为赋值语句“y=1”为关系表达式5.下面程序段显示的结果是(A)。Dimx%x=Int(Rnd)+5SelectCasexCase5MsgBox(“优秀”)Case4MsgBox(“良好”)Case3MsgBox(“通过”)CaseElseMsgBox(“不通过”)EndSelectA.优秀B.良好C.通过D.不通过6.下面If语句统计满足性别(sex)男、职称(duty)为副教授以上、年龄(age)小于40岁条件的人数,正确的语句是(D)。A.Ifsex=“男”Andage<40AndInStr(duty,“教授”)>0Thenn=n+1B.Ifsex=“男”Andage<40Andduty=“教授”orduty=“副教授”Thenn=n+1C.Ifsex=“男”Andage<40AndRight(duty,2)=“教授Thenn=n+1D.Ifsex=“男”Andage<40Andduty=“教授”Andduty=“副教授”Thenn=n+17.下面程序段求两个数中的大数,()不正确。A.Max1=IIf(x>y,x,y)B.Ifx>yThenMax1=xElseMax1=yC.Max1=Math.Max(x,y)C.Ify>=xThenMax1=yMax=x8.下面三个程序设计段计算学生外语附加分:外语6级(lang6)为“优秀”加15分,“通过”加10分;外语4级(lang4)为“优秀”加8分,“通过”加4分。外语附加分只能计一次最高的分数。(A)能正确计算。A.Iflang6=“优秀”Thenlangf=15ElseIflang6=“合格”Thenlangf=10ElseIflang4=“优秀”Thenlangf=8ElseIflang4=“合格”Thenlangf=4EndifBIflang4=“合格”Thenlangf=4ElseIflang4=“优秀”Thenlangf=8ElseIflang6=“合格”Thenlangf=10ElseIflang6=“优秀”Thenlangf=15EndifC.Iflang6=“优秀”Thenlangf=15Iflang6=“合格”Thenlangf=10Iflang4=“优秀”Thenlangf=8Iflang4=“合格”Thenlangf=4langf=0D.Iflang4=“合格”Thenlangf=4Iflang4=“优秀”Thenlangf=8Iflang6=“合格”Thenlangf=10Iflang6=“优秀”Thenlangf=15Elselangf=0Endif9.下面语句执行后,变量w中的值是(B)。w=Choose(Weekday(“2005,5,1”),“Red”,“Green”,“Blue”,“Yellow”)A.NothingB.“Red”C.“Green”D.“Yellow”二.填空题1.当C字符串变量中第三个字符是“C”时,利用MsgBox显示“Yes”,否则显示“No”。If_________ThenMsgBox(“yas”)ElseMsgBox(“No”)Mid(c,3,1)=“C”2.程序运行后输出的结果是___________。x=Int(Rnd)+3Ifx^2>8Theny=x^2+1Ifx^2=9Theny=x^2-2Ifx^2<8Theny=x^3MsgBox(y)3.下面程序的功能是()。Dimn%,m%SubTextBox1_KeyPress()HandlesTextBox1.KeypressIfAsc(e.KeyChar)=13ThenIfIsNumeric(TextBox1.Text)ThenSelectCaseVal(TextBox1.Text)Mod2Case0n=n+Val(TextBox1.Text)Case1m=m+Val(TextBox1.Text)EndSelectEndIfTextBox1.Text=””TextBox1.Focus()EndIfEndSub4.下面的程序段是检查输入的算术表达式中圆括号是否配对,并显示相应的结果。本程序在文本框中输入表达式,边输入边统计,以输入回车符作为表达式输入结束,然后显示结果,如下图所示。Dimcount1%SubTextBox1_KeyPress(……………)HandlesTextBox1.KeyPressIf__________=“(”Thencount1+1ElseIf________=“)”Thencount1=_________EndIfIfAsc(e.KeyChar)=13ThenIf_________ThenMsgBox(“左右括号配对”)ElseIfcount1>0ThenMsgBox(__________)ElseMsgBox(“右括号多于左括号”&count1&“个”)EndIfExitSubEndIfEndSub<注意>该题中统计括号个数的变量count1若在过程内声明,程序会产生什么结果?5.输入若干个字符,统计有多少个元音字母,有多少个其他字母,直到按Enter键结束,显示结果,大、小写不区分。其中CountY中放元音字母个数,CountC中放其他字符数。DimCountY%,CountC%SubTextBox1_KeyPress(……………)HandlesTextBox1.KeyPressDimcAsCharc=________If“A”<=cAndc<=“Z”ThenSelectCase_________Case_________CountY=CountY+1CaseElseCountC=CountC+1EndSelectEndIfIf________ThenMsgBox(“元音字母有”&CountY&“个”)MsgBox(“其他字母有”&CountC&“个”)EndIfEndSub6.用If语句,SelectCase语句两种计算方法计算分段函数x^2+3x+2当x>20y=sqrt(3x)-2当10<=x<=201/2+|x|当x<10SubButton1_Click()HandlesButton1.ClickDimx!,y!x=Val(TextBox1.Text)If________Theny=x*x+3*x+2ElseIf_________Theny=1/2+Math.Abs(x)Elsey=Math.Sqrt(3*x)-2EndIfMsgBox(“y=”&y)EndSubSubButton1_Click()HandlesButton1.Clickx=Val(TextBox1.Text)SelectCasexCase__________y=x*x+3*x+2Case__________y=1/2+Math.Abs(x)CaseElsey=Math.Sqrt(3*x)-2EndSelectMsgBox(“y=”&y)EndSub7.输入三角形的三边a、b、c的值,根据其数值,判断能否构成三角形。若能,还要显示三角形的性质:等边三角形、等腰三角形、直角三角形、任意三角形。SubButton1_Click()HandlesButton3.ClickDimx%,y%,z%x=Val(InputBox(“inputx”))y=Val(InputBox(“inputx”))z=Val(InputBox(“inputx”))If__________ThenMsg(“能构成三角形”)If_________ThenMsg(“是等边三角形”ElseIf________ThenMsg(“是等腰三角形”)ElseIfMath.Sqrt(x*x+y*y)=zOrMath.Sqrt(y*y+z*z)=xOrMath.Sqrt(x*x+z*z)=yThenMsg(“是直角三角形”)Else_________EndIfElseMsgBox(“不能构成三角形”)EndIfEndSub8.输入一个年份,判断它是否为闰年,并显示是否是闰年的有关信息。判断闰年的条件是:年份能被4整除但不能被100整除,或能被400整除。同时请用日期型变量的IsLeepYear成员来验证。SubButton1_Click()HandlesButton3.ClickDimdAsDated=NowIf_________Ord.yearMod400=0ThenMsgBox(d.Year&“是闰年”)ElseMsgBox(d.Year&“是平年”)EndIfIfd.IsLeepYear(________)ThenMsgBox(d.Year&“是闰年”)ElseMsgBox(D.Year&“是平年”)EndIfEndSub第四章循环结构一.选择题1.以下()是正确的For...Next结构。A.Forx=1ToStep10...NextxB.Forx=3To-3Step-3...NextxC.Forx=1To10re:...NextxIfi=10ThenGoToreD.Forx=3To10Step3...Nexty2.下列循环体能正常结束的是(C)。A.i=5Doi=i+1LoopUntili<0B.i=1Doi=i+2LoopUntili=10C.i=10Doi=i+1LoopUntili>0D.i=6Doi=i-2LoopUntili=13.下面程序段的运行结果为()。label1.text=“”Fori=3To1Step-1Label1.Text&=Space(5-i)Forj=1To2*i-1Label1.Text&=”*”NextjLabel1.Text&=vbCrLfNextiA.*B.*****C.*****D.*************************4.当在文本框输入“ABCD”四个字符时,窗体上显示是(C)。SubTextBox1_TextChanged()HandlesTextBox1.TextChangedLabel1.Text&=TextBox.TextEndSubA.ABCDB.AC.AABABCABCDD.ABABCABCDABCD5.下列程序段不能分别正确显示1!、2!、3!、4!的值的是()。A.Fori=1To4n=1Forj=1Toin=n*jNextjMsgBox(n)NextiB.Fori=1To4Forj=1Toin=1n=n*jNextjMsgBox(n)NextiC.n=1Forj=1To4n=n*jMsgBox(n)NextjD.n=1j=1DoWhilej<=4n=n*jMsgBox(n)j=j+1Loop二.填空题1.要使下列For语句循环执行20次,循环变量的初值应当是:Fork=____33____To-5Step-22.下面程序段显示_________个“*”。Fori=1To5Forj=2ToiMsgBox(“*”)NextjNexti3.下列第40句共执行了_____4____次,第41句共执行了__12___次。30Forj=1To12Step340Fork=6To2Step-241MsgBox(j&“”&k)42Nextk43Nextj4.输入任意长度的字符串,要求将字符顺序倒置。例如,将输入的“ABCDEFG”变换成“GFEDCBA”。SubButton1_Click()HandlesButton1.ClickDima$,I%,c$,d$,n%a=InputBox$(“输入字符串”)n=_________d=””ForI=1To__________c=Mid(a,I,1)d=d&cNextIMsgBox(d)EndSub5.找出被3、5、7除,余数为1的最小的5个正整数。SubButton1_Click()HandlesButton1.ClickDimCountN%,n%CountN=0n=1Don=n+1If_________ThenMsgBox(n)countN=CountN+1EndIfLoop________EndSub6.有个长阶梯,如果每步跨2阶最后剩1阶,如果每步跨3阶最后剩2阶,如果每步跨4阶最后剩3阶,如果每步跨5阶最后剩4阶,如果每步跨6阶最后剩5阶,只有当每步跨7阶时恰好走完,显示这个阶梯至少要有多少阶。<提示>利用其肯定是7的倍数这个条件,然后根据同时满足除n余m(n=2,3,4,5,6;m=1,2,3,4,5)的逻辑关系即可。SubButton1_Click()HandlesButton1.ClickDimn%,m%Forn=7To10000Step7IfnMod2=1And_______________________________________________ThenMsgBox(n)_______________EndIfNextEndSub8.某班在一周中6天内考三门分别为x、y、z的考试课程,规定一天只能考一门,先考x,后考y,最后考z,最后一门最早周五考。用计算机排考试,列出满足条件的方案数。SubButton1_Click()HandlesButton1.ClickDimx%,y%,z%,n%n=0Label1.Text=“”Forx=1To4Fory=________To5Forz=5To6If_______Andy<zThenLabel1.Text&=x&space(9)&y&Space(9)&z&vbCrlf____________EndIfNextNextNext________“满足条件的方案为;”&nEndSub9.某次大奖赛,有7个评委打分,以下程序是针对一名参赛者,输入7个评委的打分分数,去掉一个最高分、一个最低分,求出平均分,为该参赛者的得分。SubButton1_Click()HandlesButton1.ClickDimmark!,aver!,max1!,min1!aver=0Fori=1To7mark=InputBox(“输入第”&i&“位评委的打分”)Ifi=1Thenmax1=mark:____________ElseIfmark<min1Then___________ElseIfmark>max1Then___________EndIfEndIf___________Nextiaver=__________MsgBox(aver)EndSub第五章数组一.选择题1.如下数组声明语句中正确的是(B。A.Dima[3,4]AsIntegerB.Dima(3,4)AsIntegerC.Dima{3,4}AsIntegerC.Dima(34)AsInteger2.如下数组声明语句中正确的是(B。A.Dim(9)AsSingle={1,2,3,4,5,6,7,8,9,10}B.Dima()AsSingle={1,2,3,4,5,6,7,8,9,10}C.Dima()AsSingle={1,“a”,“bc”2.,4,5,6,7,8,9,10}D.Dima(,)AsInteger={1,2,3,4,5,6,7,8,9,10}3.如下数组声明语句中,数组a包含元素的个数有(C。Dima(3,0,5)A.15B.8C.24D.164.如下程序输出的结果是()。Dima()AsInteger={1,2,3,4,5,6,7}Fori=0ToUBound(a)a(i)a=(i)*a(i)NextiMsgBox(a(i))A.49B.0C.不确定D.程序出错5.如下程序输出的结果是()。SubButton1_Click(......)HandlesButton1.ClickDimi%,j%Dima()AsInteger={0,1,2,3,4,5,6,7,8,9},b(3,3)AsIntegerLabel1.Text=“”Fori=1To3Label1.Text&=Space(i*3)Forj=iTo3b(i,j)=a(i*j)Label1.Text&=Space(6-Len(b(i,j))&b(i,j)NextjLabel1.Text&=vbCrLfNextiEndSubA.123B.1C.147D.12345645246467897893699二.填空题1.在一维数组中利用移位的方法显示如图所有的结果。SubButton1_Click()HandlesButton1.ClickDima(7)AsInteger,i%,t%,j%Label1.Text=“”Fori=1To7a(i)=iLabel1.Text&=a(i)&“”NextiLabel1.Text&=vbCrLfFori=1To7t=_____________Forj=6To1Step-1__________Nextja(1)=___________Forj=1To7Label1.Text&=a(j)&“”NextjLabel1.Text&=_________NextiEndSub2.下面程序对已知数组a(),删除数组中某个元素。SubButton1_Click(......)HandlesButton1.ClickDima()AsInteger={1,6,8,3,5,9,10,2,7,4},Key%,i%,j%Key=Val(InputBox(“输入要删除的值”))Fori=0ToUBound(a)If______________ThenForj=i+1ToUBound(a)_________________NextjReDim_______________MsgBox(“删除完成”)ExitSubEndIfNextiMsgBox(“找到不要删除的元素”)EndSub3.矩阵相乘两个矩阵能相乘的必要条件是:前一个矩阵的列数等于后一个矩阵的行数。例如,已知A为n×k的矩阵,B为k×m的矩阵,A×B的结果C矩阵为n×m,即:51015520350800A=B=1025C=20253015308001925SubButton1_Click()HandlesButton1.ClickDima%(2,3),b%(3,2),c%(2,2),i%,j%,n%,k%Label1.Text=“”n=5Fori=1To2Forj=1To3a(i,j)=n________________n=____________NextjNextiFori=1To2Forj=1To2c(i,j)=0Fork=1To3c(i,j)=c(i,j)+____________NextkLabel1.Text&=c(i,j)&“”NextjLabel1.Text&=vbCrLfNextiEndSub4.下面的程序是将输入的一个数插入到递减的有序数列中,插入后使该序列仍有序。SubButton1_Click()HandlesButton1.ClickDimi%,n%,m%Dima()AsInteger={9,17,15,13,11,9,7,5,3,1}n=UBound(a)ReDim_____________________m=Val(InputBox(“输出欲插入的数”))Fori=UBound(a)-1ToStep-1Ifm>=a(i)Then________________Ifi=0Thena(i)=mElse___________ExitForEndIfNextiFori=0To__________Label1.Text&=a(i)&“”NextiEndSub5.改进的冒泡法排序。在教材中已介绍选择法、冒泡法。上例使用了插入法排序。本例使用改进的冒泡法排序,冒泡法排序在每一轮排序时将相邻的两个数比较,当次序不对就交换位置,出了内循环,最大数已沉底,小数上浮;每一轮仅使沉底的数确定了位置,有个n个数,外循环要进行n-1轮排序。为了提高效率,若在某一轮排序时,未发生排序位置交换,说明欲排序的序列已有序,排序就可以结束。在程序中增加一个逻辑变量来进行判断即可。程序如下:SubButton1_Click(......)HandlesButton1.ClickDimTagAsBoolean,n%,j%,i%,t%Dima()AsInteger={1,5,6,7,4,13,23,26,31,51}n=UBound(a)Fori=0Ton-1Tag=FalseForj=0Ton-1-iIfa(j)>a(j+1)Then_________________________________a(j+1)=tEndIfNextjIfNotTagThen___________NextiFori=0ToUBound(a)Label1.Text&=a(i)&“”NextiEndSub`6.随机产生15个不重复的A-Z之间的字母(包括A,Z的大写字母),存放在字符数组中。实现的思想是,每产生一个字母,在数组中查找已产生的字母。若找到,刚产生的字母作废,重新产生;如果找不到,则产生字母放入数组中。SubButton1_Click()HandlesButton1.ClickDims(14)AsChar,cAsChar,n%,j%s(0)=Chr(Int(Rnd()*26+65))Forn=1To14re:c=__________Forj=0To__________‘若找到有重复字母,重新产生Ifs(j)=cThen___________Nextjs(n)=___________‘没有重复的加入数组中NextnForj=0To14Label1.Text&=s(j)&“”NextjEndSub7.随机产生15个A-J的大写字母,按字母降序排序后,将连续出现的字母用压缩的形式显示。例如,连续5个H字母显示为5*H,如图所示。数组a()用于存储随机产生字母。SubButton1_Click()Handles.ClickConstN=14Dima(N)AsChar,cAsCharDimcount%,i%,k%Label1.Text=“”Fori=0ToNa(i)=___________Label1.Text&=a(i)&“”NextiLabel1.Text&=vbCrLfFori=0ToN-1k=iForj=i+1ToNIfa(j)>a(k)Then_________Nextjc=a(i):__________:a(k)=cNextiFori=0ToN‘输出排序的结果Label1.Text&=a(i)&“”NextiLabel1.Text&=vbCrLfi=0DoWhilei<=N‘压缩显示相同元素count=1Ifi<NThenj=i+1DoWhilea(i)=a(j)count=___________Ifj<NThenj=j+1ElseExitDoLoopIfcount=1ThenLabel1.Text&=a(i)&“”ElseLabel1.Text&=_________EndIfi=_________LoopEndSub第六章过程一.选择题1.设有如下说明:PublicSubF1(ByRefn%)...n=3*n+4...EndSubSubButton1_Click()HandlesButton1.ClickDimn%,m%n=3m=4...‘调用F1语句...EndSub则在Button1_Click事件中有效的调用语句是()。A.F1(n+m)B.F1(m)C.F1(5)D.F1(m,n)2.下面子过程语句说明最合理的是()。A.Subf1(ByValn%())B.Subf1(ByRefn%)AsIntegerC.Functionf1%(ByReff1%)C.Functionf1(ByValn%)3.要想从子过程调用后返回两个结果,下面子过程语句说明合法的是()。A.Subf2(ByValn%,ByValm%)B.Subf1(ByRefn%,ByValm%)B.Subf1(ByRefn%,ByRefm%)D.Subf1(ByValn%,ByRefm%)4.在过程中定义的变量,若希望在离开该过程后还能保存过程中的局部变量的值,则应使用()关键字在过程中定义过程级变量。A.DimB.PrivateC.PublicD.Static5.下面过程运行后显示的结果是()。PublicSubF1(ByRefn%,ByValm%)n=nMod10m=m\10EndSubSubButton1_Click(......)HandlesButton1_ClickDimx%,y%x=12:y=34CallF1(x,y)MsgBox(x&“”&y)EndSubA.234B.1234C.23D.1236.如下程序,运行的结果是()。SubButton1_Click()HandlesButton1.ClickMsgBox(p1(3.0,7))EndSubPublicFunctionp1!(ByValx!,ByValn%)Ifn=0Thenp1=1ElseIfMod2=1Thenp1=x*p1(x,n\2)Elsep1=p1(x,n\2)\xEndIfEndIfEndFunctionA.18B.7C.14D.277.如下程序,运行的结果是()。Dima%,b%,c%PublicSubp1(ByRefx%,ByRefy%)Dimc%x=2*x:y=y+2:c=x+yEndSubPublicSubp2(ByRefx%,ByValy%)Dimc%x=2*x:y=y+2:c=x+yEndSubSubButton1_Click(......)HandlesButton1.Clicka=2:b=4:c=6Callp1=(a,b)MsgBox(“a=“&a&“b=”&b&“c=”&c)Callp2(a,b)MsgBox(“a=“&a&“b=”&b&“c=”&c)EndSubA.a=2b=4c=6B.a=4b=6c=10a=4b=6c=10a=8b=8c=16C.a=4b=6c=6D.a=4b=6c=14a=8b=6c=6a=8b=8c=68.如下程序,运行后各变量的值依次为()。PublicSubProc(ByRefa%())Statici%Doa(i)=a(i)+a(i+1)i=i+1LoopWhilei<2EndSubSubButton1_Click()HandlesButton1.ClickDimm%,i%,x%(10)Fori=0To4x(i)=i+1NextiFori=1To2CallProc(x)NextiFori=0To4MsgBox(x(i))NextiEndSubA.34756B.35745C.23445D.45678二.填空题1.如下程序,运行显示的值是___________,函数过程的功能是_________PublicFunctionf(ByValn%,ByValr%)Ifn<>0Thenf=f(n\r,r)MsgBox(nModr)EndIfEndFunctionSubButton1_Click()HandlesButton1.ClickMsgBoxf(f(100,8))EndSub2.如下程序,运行显示的值是_________,函数过程的功能是__________。PublicFunctionf(ByValm%,ByValn%)DoWhilem<>nIfm>nThenm=m-nElsen=n-mEndIfLoopf=mEndFunctionSubButton1_Click()HandlesButton1_ClickMsgBox(f(24,18))EndSub3.两个质数的差为2,称此对质数为质数对,下列程序是找出100以内的质数对,并成对显示结果。其中,函数IsP判断参数m是否为质数。PublicFunctionIsP(ByValm)AsBooleanDimi%_______________Fori=2ToInt(Math.Sqrt(m))If_________ThenIsP=FalseNextiEndFunctionSubButton1_Click()HandlesButton1.ClickDimi%,p1,paAsBooleanp1=IsP(3)Fori=5To100Step2p2=IsP(i)If_________ThenLabel1.Text&=i-2&“”&ip1_________NextiEndSub4.子过程MoveStr()是把字符数组移动m个位置。当Tag为True,左移,则前m个字符移到字符数组尾,例如,“abcdefghij”左移三个位置后,结果为“defghijabc”;当Tag为False,右移,则后m个字符移到字符数组前,如“abcdefghij”右移三个位置后,结果为“hijabcdefg”。子过程如下:PublicSubMoveStr(ByRefa$(),ByValm%,ByValTagAsBoolean)Dimi%,j%,t$If____________ThenFori=1Tom____________Forj=0To____________a(j)=a(j+1)Nextj____________NextiElseFori=1Tom_____________Forj=UBound(A)__________a(j)=a(j-1)Nextj___________NextiEndIfEndSub5.子过程CountN用来统计字符串中各数字字符(“0”~“9”)出现的个数;主调程序实现在TextBox1框输入的文本,每次单击“统计”按钮,调用该子过程,在Label1框中显示结果,运行界面如图所示SubButton1_Click()HandlesButton1.ClickDimn(9)AsInteger,i%CallCountN(n,TextBox1.Text)Label2.Text=“”Fori=0To9Ifn(i)ThenLabel2.Text&=_________&vbCrLfEndIfNextiEndSubSubCountN(_________________)DimcAsChar,i%,m%,j%Fori=0To9num(i)=0Nextim=Len(s)Fori=1Tomc=_____________Ifc>=“0”Andc<=”9”Thenj=Val(c)Num(j)=_________EndIfNextiEndSub6.子过程F(n,m,t)对一个四位数的整数n进行判断:已知该整数n,逆向排列获得另一个四位数,m是它自身的倍数(2倍以上),则t为True表示满足上述条件。主调程序调用该函数,显示1000~9999中所有满足该条件的数。提示:根据一个数n,逐一分离得到它的反序数m,然后判断m是否为n的倍数。SubButton1_Clink(......)HandlesButton1.ClickDimtAsBoolean,i%,k%TextBox1.Text=“”TextBox2.Text=“”Fori=1000To9999Callf(________)IftThenTextBox1.Text&=i&vbCrLfTextBox2.Text&=k&“=”&i&“*”&k\i&vbCrLfEndIfNextEndSubSubf(ByValn%,ByRefm%,ByReftagAsBoolean)Dimi%tag=Falsem=0i=nDoWhilei>0m=_________‘求的n的逆序列i=_________LoopIfmModn=0Andm\n>1Then‘是否是倍数tag=_________EndIfEndSub7.下列程序中的子过程Mysplit(s,sAarry(),n)用于实现函数Split()的功能(字符分离到数组),即将数字字符串s按分隔符“,”分离到sArray数组中,分离的个数为n,主调程序将文本框输入的数字字符串进行分离,结果在TextBox2控件显示,如图所示。SubButton1_Clink()HandlesButton1.ClickDimstr1AsString,num(100)AsInteger,n%,i%Str1=Tim(TextBox1.Text)CallMySplit(Str1,num,n)TextBox2.Text=“”Fori=0TonTextBox2.Text&=num(i)&vbCrLfNextEndSubSubMySplit(ByValstr1AsString,ByRefsn()AsInteger,ByRefnAsInteger)Dimi%,j%,ch$i=0j=InStr(str1,”,”)DoWhilej>0sn(i)=Val____________str1=Mid(str1,j+1)i=i+1j=__________Loopsn(i)=Val(str1)n=___________EndSub8.以下过程将一个有序数组中重复出现的数进行删除,删得只剩一个。主调程序运行后结果如图所示。解题思想是从数组最右边往左边两两比较,若相同,右边的数依次往左移,数组上界元素减1,实现删除。SubButton1_Clink()HandlesButton1.ClickDimb()AsInteger={23,45,45,60,70,70,70,90},i%,n%Label1.Text=“”Callp(b,n)Fori=0TonLabel1.Text&=b(i)&“”NextiEndSubSubp(________)Dimm%,k%n=UBound(a)m=nDoWhile(__________)‘从右往左比较,压缩Ifa(m)=a(m-1)ThenFork=_________a(k-1)=a(k)Nextkn=__________EndIfm=___________

温馨提示

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

评论

0/150

提交评论