资源简介 中小学教育资源及组卷应用平台4.4.3循环嵌套的应用-粤教版(2019)高中信息技术必修一练习学校:___________姓名:___________班级:___________考号:___________一、选择题1.有10个数据:83、90、96、46、44、36、45、47、55、72依次存放在数组元素a(1)到a(10)中,部分VB程序段如下所示:m=1:k=1Fori=1To9Ifa(i)<a(i+1)Thenk=k+1Ifk>mThenm=kElsek=1EndIfNextiText1.Text=Str(m)执行该程序段,文本框Text1中显示的是()A.2B.3C.4D.5【答案】D【解析】【详解】本题考查循环语句。i123456789k231112345最终m=5。故本题选D。2.有如下VB程序段:Fori=1To3Forj=1To6-iIfa(j)>a(j+1)Thent=a(j):a(j)=a(j+1):a(j+1)=t【来源:21·世纪·教育·网】NextjNexti数组元素a(1)到a(6)的数据依次为“55,31,19,42,37,23”,则此程序运行完成后数组元素的数据依次是()2-1-c-n-j-yA.55,42,37,31,23,19B.19,23,31,55,37,42C.19,23,31,37,42,55D.19,31,23,37,42,55【答案】D【解析】【详解】本题考查冒泡排序。根据外循环语句,该排序只执行三趟,又根据内循环和判断条件Ifa(j)>a(j+1)Then交换,可知将数值较大的数据往下交换。原始数据为55,31,19,42,37,23,经过三趟排序后,最终结果为19,31,23,37,42,55。故本题D选项为正确选项。21cnjy.com3.有如下VB程序段:a(1)=1:a(2)=1b(1)=1:b(2)=2Fori=3To5a(i)=a(i-1)+a(i-2)b(i)=b(i-1)+a(i)Nexti执行该程序段后,数组元素b(5)的值为()A.12B.8C.5D.4【答案】A【解析】【详解】本题考查循环语句和赋值语句。根据初值,以及循环,a(i)=a(i-1)+a(i-2),b(i)=b(i-1)+a(i)得到结果。最后b(5)=12,故本题选A。二、操作题4.小王利用循环排序思想编写了一个VB程序,用于计算下一轮比赛的出场顺序。从数据库中读取本轮比赛的人员姓名存在数组xm中,成绩存在数组cj中(成绩均不重复)。编程实现将这些成绩进行循环升序排列。要求最低成绩的位置不变,然后依次进行升序排序,即从最小值开始向下尾首相连形成升序数列。程序运行界面如图所示。点击“排序”按钮,完成循环升序排序。(1)“排序”按钮的对象名为_(2)请在划线处填入合适代码。(3)加框处代码出错,请改正。Dimxm(1to100)AsString,cj(1to100)AsIntegerDimflag(1to100)AsBooleanPrivateSubForm_Load()'从数据库中读取数据,存储到相应数组中,并输出在列表框Listl。第i个人,姓名为xm(i),成绩为cj(i)。人员数量存储到变量n中()。代码略21教育名师原创作品EndSubPrivateSubCmd__Click()DimminAsInteger,pminAsIntegermin=cj(1):pmin=1Fori=2TonIfcj(i)<minThenmin=cj(i):__①__Nextiflag(pmin)=Truepmin=pmin+1Ifpmin=n+1Thenpmin=1Fori=1Ton-2k=pminForj=1TonIf②Thenk=jNextjIfk<>pminThent=cj(k):cj(k)=cj(pmin):cj(pmin)=tC=xm(k):xm(k)=xm(pmin):xm(pmin)=cEndIfflag(pmin)=Truepmin=pmin+1Nexti'将排序后的人员姓名和成绩输出到列表框List2中,代码略。EndSub【答案】(1)Cmd(2)①pmin=i②cj(j)<cj(k)Andflag(j)=False(3)pmin=pminModn+1【解析】【详解】本题考查VB排序算法。(1)根据代码,排序按钮的对象名为Cmd。(2)将最小值的位置记录在pmin,故填入pmin=i。(3)寻找最小值,并且要保证该值之前没有挑选过,所以填入cj(j)Andflag(j)=False。(4)根据题干是循环排序,所以位置也要构成循环,根据约瑟夫环状类似结构,填入pmin=pminModn+15.均分红包。当前有n堆红包,编号为1,2,3,。。n,每堆有若干个红包,红包总数sum是n的倍数。可以在任一堆上取若干个红包,然后移动,最终使每堆上的红包个数相同。移红包规则:①编号为1的堆上的红包,只能移到编号为2的堆上;②编号为n的堆上的红包,只能移到编号为n-1的堆上;③其它堆上的红包,可以移到相邻左边或右边的堆上。现要求找出最少的移动次数使每堆的红包数-样多。如图所示,在文本框Text1中输入红包堆数n,在文本框Text2中依次输入每堆红包的红包个数(以“,”为分隔符和结束符),单击“移红包次数统计”按钮Command1后,在标签Labe13中显示最少的移动次数。(1)代码“PrivateSubCommand1_Click()”中的Click是______(单选,填字母:A.对象名B.事件名C.事件处理过程名D.方法名)(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。ConstSum=40'红包总个数PrivateSubCommand1_Click()DimnAsInteger'红包的堆数DimsAsString,kAsIntegerDimavgAsInteger'最终每堆的红包个数DimmlAsInteger,m2AsIntegerDimtmpAsInteger,countAsInteger,ansAsInteger21cnjycomn=__________s=Text2.Textavg=Sum/ntmp=0:count=0:ans=0Fork=1ToLen(s)c=Mid(s,k,1)Ifc<>","Thentmp=__________Elsecount=count+1Ifcount=1Thenml=tmpElsem2=tmpIfml<>avgThenm2=m2-(avg-m1)ans=ans+1EndIf________EndIftmp=0EndIfNextkLabe13.Caption=Str(ans)EndSub【答案】B①Val(Textl.text)②tmp10+Val(c)③m1=m2【解析】【详解】本题考查VB综合能力。(1)Click是事件名。(2)从text1中得到堆数,填入Val(Textl.text)。(3)Ifc<>“,”,如果c不是逗号,则累加,将整个数字取出放入tmp,注意数据类型,填入tmp10+Val(c)。(4)继续运算,m1重新赋值,故填入m1=m2。6.某班级学生为毕业晚会的一个节目设计一个仿“V”字造型,先筛选出班级中n名学生的所有男生,然后将参演的男生按照身高,摆出中间低两边高(先右后左)的造型,如下图1所示。王林同学用VB编写模拟“节目造型”程序,功能如下:从数据库中导出所有学生编号、性别和身高数据;单击“筛选排序”按钮Command2,根据身高仿“V”字和造型进行有序排列,并将结果显示在文本框Text2中。程序运行界面如图2所示。举例说明如下:原1-7号男生身高171172180174176179178筛选排序后序列171172174176178179180“造型设计”后序列180178174171172176179图1身高顺序:男3号〉男6号〉男7号〉男5号〉男4号〉男2号〉男1号图2Dimh(1Ton)AsIntegerDimheight1(1Ton)AsIntegerDimheight2(1Ton)AsIntegerDimnAsInteger,iAsInteger,jAsInteger,numAsInteger,tmpAsIntegerDimsex(1Ton)AsStringPrivateSubForm_Load()'n名学生的身高和性别由数据库导出,分别存储在数组h和sex中,代码略!EndSubPrivateSubCommand1_Click()b=0Fori=1Ton'n名学生中的男生Ifsex(i)=“男”Then①:height1(num)=h(i)NextiFori=1Tonum-1Forj=numToi+1Step-1Ifheight1(j)<height1(j-1)Thentmp=height1(j):height1(j)=height1(j-1):height1(j-1)=tmpEndIfNextjNextiFori=1TonumText1.Text=Text1.Text+""+Str(height1(i))【版权所有:21教育】NextiEndSubPrivateSubCommand2_Click()Dimleft,rightAsInteger,iAsInteger,midAsIntegermid=Int((1+num)/2)left=0:right=0height2(mid)=height1(1)Fori=1To(num-1)\2right=right+1height2(mid+right)=height1(2i)left=left+1②NextiIfnumMod2=0Then③Fori=1TonumText2.Text=Text2.Text+""+Str(height2(i))NextiEndSub(1)若参演的8名男生身高为180、171、173、174、178、175、176、170,程序执行结束后height1(5)的值是。2·1·c·n·j·y(2)在程序①、②、③画线处填入适当的语句或表达式。将程序补充完整:程序中①画线处应填入;程序中②画线处应填入;程序中③画线处应填入;【答案】(1)175(2)①num=num+1②height2(mid-left)=height1(2i+1)③height2(num)=height1(num)21世纪教育网版权所有【解析】【详解】本题考查VB综合能力。根据题干,摆出中间低两边高(先右后左)的造型height1(5)=175。(2)如果是男生,则男生数量+1,故填入num=num+1。(3)left表示网左边排序,排序的是奇数位上的数值,故填入height2(mid-left)=height1(2i+1)。(4)如果整体数量是偶数个,则需要把最后一个也添加到数组中,故填入height2(num)=height1(num)。7.小龙同学设计了一个求四则混合运算结果的程序,用于计算不带括号的+、-、、\的运算,\为整除运算,且此处要求和\的优先级相同。在表达式中输入待求解的表达式,以=结尾。按下Command1“计算”按钮后,在标签控件Label1中输出运算结果。程序界面如下图所示:(1)在表达式中输入15-22\52+7=,则输出的结果是。(2)实现上述功能的VB程序如下,请在划线处填入合适代码。Functioncalculate(xAsInteger,yAsInteger,opAsString)AsIntegerIfop="+"Thencalculate=x+yIfop="-"Thencalculate=x-yIfop=""Thencalculate=xyIfop="\"Thencalculate=x\yEndFunctionFunctionstate(opAsString)AsIntegerIfop="#"Thenstate=-1Ifop="="Thenstate=1Ifop="+"Thenstate=1Ifop="-"Thenstate=1'①Ifop=""Thenstate=3EndFunctionPrivateSubCommand1_Click()DimsAsString,lengthAsInteger,tAsStringDimkAsInteger,qAsInteger21·世纪教育网Dimopt(0To3)AsStringDimiAsIntegerDims1AsStringDima(1To3)AsIntegers=Text1.Textlength=Len(s)t="":k=0:q=0:opt(q)="#"Fori=1Tolengths1=Mid(s,i,1)Ifs1>="0"Ands1<="9"Thent=t+s1Elsek=k+1a(k)=Val(t)t=""DoWhile'②a(k-1)=calculate(a(k-1),a(k),opt(q))k=k-1q=q-1Loopq=q+1'③Ifs1="="ThenLabel1.Caption=Str(a(1))EndIfNextiEndSub【答案】(1)14(2)①Ifop=“\”Thenstate=3②state(s1)<=state(opt(q))③opt(q)=slwww-2-1-cnjy-com【解析】【分析】【详解】本题考查VB综合能力。(1)15-22\52+7结果为14。(2)如果运算符是除号,则state=3,故填入Ifop=“\”Thenstate=3。(3)根据优先级进行运算,若前一个运算符的优先级比后一个运算符高或者相等,则可进行a(k-1)和a(k)的运算,故填入state(s1)<=state(opt(q))。(4)将运算符记录在opt数组中。8.若一个三位数abc满足,则称abc为水仙花数。如三位数153满足,则153是水仙花数。以下是找出所有水仙花数的程序,请把程序补充完整。(a为百位数、b为十位数、c为个位数)【来源:21cnjy.com】DimiAsInteger,aAsInteger,bAsInteger,cAsIntegerFori=100To____________a=i\100b=______________c=i-100a-10bIf_______________________ThenPrintiEndIfNexti【答案】999(i-a100)\10或(iMod100)\10i=a^3+b^3+c^3【解析】【详解】本题考查枚举算法。本题考查枚举算法。枚举法的本质就是从所有候选答案中去搜索正确的解,使用该算法需要满足两个条件:可预先确定候选答案的数量;候选答案的范围在求解之前必须有一个确定的集合。(1)三位数的范围是100-999,所以第一空为999。(2)b是三位数的中间那个数字,所以该空代码为(i-a100)\10或(iMod100)\10。(3)如果符合水仙花数的条件,则打印,故该空为i=a^3+b^3+c^3。9.小王基于选择排序算法编写了一个VB程序,功能如下:数组a有nn个元素,按n行n列进行排列,按列进行升序排序。例如66的数组,第一列将a(1),a(7),a(13),a(19),a(25),a(31)进行排序。运行程序,在列表框List1中显示nn个数列单击“排序”按钮Command1,在列表框List2中显示排序后的结果,程序运行界面如图所示。请回答下列问题:(1)n=6时运行结果如图所示,图中1处“47”在数组a中下标是_______(填数字)。(2)为了实现上述功能,请在划线处填写合适的代码。①_______________②_______________(3)程序中加框处代码有错,请改正。_________________Constn=6Dima(1Tonn)AsIntegerPrivateSubForm_Load()'产生nn个数组元素,每行按n个数显示在list1中Fori=1Tonna(i)=Int(Rnd90)+10s=s+Str(a(i))If①____________ThenList1.AddItemss=""EndIfNextiEndSubPrivateSubCommand1_Click()DimiAsInteger,jAsInteger,wAsInteger,sAsStringFori=1Tonnk=iForj=k+nTo②___________Ifa(k)>a(j)Thenk=jNextjIfThent=a(k):a(k)=a(i):a(i)=tNexti'将排序后数组a的元素,按每行n个数显示在list2中,代码略EndSub【答案】12iModn=0nnStepnk<>i或a(k)<>a(i)【解析】【详解】本题考查VB综合能力,选择排序算法等。(1)根据矩阵排列,每行每列都是n个,可知图中1处47在数组a中下标是12。(2)List1中是按每行输出,所以当一行数量达到n个时,输出。则第一空的代码为iModn=0。(3)因为是按照列排序,所以在内循环的终值将所有数组元素包括,限定步长为n,这样就可以保证按列比较,故第二空代码为nnStepn。(4)根据选择排序特性,当a(k)<>a(i)时,交换,故改为a(k)<>a(i)。10.编写VB程序,实现如下功能:在文本框Text1中输入二进制数,单击“转换”命令按钮Command1,在文本框Text2中输出对应的十六进制数。程序运行界面如图所示,请回答下列问题:(1)如果输入的二进制数为“1101010”,则得到的结果为____________。(2)实现上述功能的VB程序如下,请在划线处填入合适代码。PrivateFunctionbw(xAsInteger,yAsString)AsString'函数bw功能:若二进制位数不足,通过在前面添"0"使得位数为4的倍数DimrAsInteger,iAsIntegerr=xMod4Ifr<>0ThenFori=1To4-ry="0"+yNextix=Len(y)EndIfbw=______________EndFunctionPrivateSubCommand1_Click()DimmAsString,nAsInteger,iAsInteger,aAsIntegerDimsAsInteger,s1AsString,jAsIntegerm=Text1.Textn=Len(m)Text2.Text=""m=____________'调整m的位数为4的倍数Fori=1Ton-3Step4s=0Forj=iToi+3a=Val(Mid(m,j,1))s=_______________NextjIfs>=10Thens1=Chr(Asc("A")+s-10)Elses1=CStr(s)'函数CStr类似于Str,但无前导空格EndIfText2.Text=Text2.Text+s1NextiEndSub【答案】6Aybw(n,m)s2+a【解析】【详解】本题考查VB综合能力,进制转换等。(1)根据题意,将1101010转为十六进制,得到结果为6A。(2)在自定义函数内部,需要有返回值,故代码第一空填写为y。(3)此处语句为调用自定义函数,将n和m带入自定义函数,故此空语句为bw(n,m)。(4)此处语句为将二进制转换为十进制,叠加语句可以是结果变量乘以进制数然后加上当前数值,故代码为s2+a。21cnjycom11.某加密算法的明文和密钥均由英文字母组成,且密钥循环使用,其加密规则如下:①明文字符与对应密钥的ASCII码转化为二进制后求异或(对应位相同时结果为0,对应位不同时结果为1,如二进制1001与二进制1100的异或值为0101),并将异或结果转换为十进制p;②如果处在奇数位,则将明文字符循环后移p个位置,否则将明文前移p个位置。移动过程中保持大小写不变。最后把所得到的字符连接起来就是密文。例如,密钥是“abc”,明文“d”的加密过程是:字符“d”的ASCII码表示为二进制是1100100,密钥“a”的ASCII码表示为二进制是1100001,两数进行异或结果是:0000101,转化为十进制为5,因为是第1个位置,所以把明文后移5个位置,则密文是“i”。该加密过程使用VB来实现。具体功能设计如下:在Text1中输入明文,Text2中输入密钥,单击“开始加密”按钮Command1后将密文显示在Text3中,界面设计如图所示。请回答以下问题:(1)如果密钥为“bc”,字符“d”加密后的密文为:_____(字母“a”的ASCII码为97)(2)请完善以下程序代码。PrivateSubCommand1_Click()DimsAsString,snAsStringDimiAsInteger,tAsInteger,uAsIntegerDimpAsInteger,gAsIntegersn=""Fori=1ToLen(Text1.Text)t=Asc(Mid(Text1.Text,i,1))Ift>=Asc("a")Theng=Asc("a")Elseg=Asc("A")EndIfu=Asc(Mid(Text2.Text,(i-1)ModLen(Text2.Text)+1,1))p=_________t=t-gIfiMod2=1Thent=(t+p)Mod26Elset=__________EndIfsn=sn+Chr(t+g)NextiText3.Text=snEndSubFunctiontxor(xAsInteger,yAsInteger)AsInteger'x、y求异或并返回十进制DimaAsInteger,bAsInteger,rAsInteger,iAsInteger21教育网a=x:b=yr=1Fori=1To7IfaMod2<>bMod2Then________a=a\2b=b\2r=r2NextiEndFunction【答案】j①txor(t,u)Mod26或txor(u,t)Mod26②(t-p+26)Mod26③txor=txor+r21·cn·jy·com【解析】【详解】本题考查VB综合能力。(1)根据题干,如果密钥为bc,字符d加密后的密文,字符“d”的ASCII码表示为二进制是1100100,密钥“b”的ASCII码表示为二进制是1100010,两数进行异或结果是:0000110,转化为十进制为6,因为是第1个位置,所以把明文后移6个位置,则密文是“j”。(2)代入自定义函数txor求异或并返回十进制,则填入txor(t,u)Mod26。(3)当i是偶数时,向前循环移动,故填入(t-p+26)Mod26。(4)得到返回值结果,填入txor=txor+r。【出处:21教育名师】12.小李基于选择排序算法编写了一个VB程序,功能如下:在文本框Text1中显示排序前的数据,单击“排序”按钮Command1,在文本框Text2中显示剔除重复数据后的升序排序结果。程序运行界面如下图所示。算法的思路:第i趟排序从a(i)….a(bottom)中查找最小值并记录其下标k,同时将后面的每个元素与a(i)比较是否重复,若发现重复数据,进行剔除处理;找到最小值与a(i)交换。实现上述功能的VB程序如下,在划线处填入合适的代码,并将答案写在答题卡上。Constn=10Dima(1Ton)AsIntegerPrivateSubCommand1_Click()DimiAsInteger,jAsInteger,tAsIntegerDimkAsInteger,bottomAsInteger'获取排序前数据,依次存储在数组a中,并在文本框Text1中显示。代码略bottom=n:i=1DoWhilei<=bottom-1k=i:j=bottomDoWhilej>iIfa(j)<a(k)Thenk=jElseIfa(j)=a(i)Then'若发现重复数据,进行剔除处理a(j)=a(bottom)If__________________Thenk=jbottom=bottom-1EndIfj=j-1LoopIfk<>iThent=a(k):a(k)=a(i):a(i)=tElse______________________EndIFLoopFori=1To________________Text2.Text=Text2.Text+Str(a(i))NextiEndSub【答案】k=bottomi=i+1bottom【解析】【详解】本题考查VB综合能力,选择排序,循环语句等。(1)根据题干,需要进行排序和去重。若此时,标记最小值的变量k=bottom,也就是k指在最后,而此时又发生重复,即a(j)=a(i),那么需要剔除,将最后面的元素覆盖到重复位置,即a(j)=a(bottom),于是,变量k需要跟着移动到此时j的位置,否则当执行bottom=bottom-1的时候,k变量指向的位置就会丢掉。所以第一空填入k=bottom。(2)此时块IF中Else是指k=i,当k=i时,无需交换,也已经将重复元素剔除,从而进行下一个数据的判断,将i往下移动,即i=i+1。(3)最后的输出,从1到bottom,故第三空填入bottom。www.21-cn-jy.com三、填空题13.运行以下VB程序,输出结果是_____________。PrivateSubCommand1_Click()DimsAsInteger,xAsIntegers=0x=20Forx=20To1Step-3s=s+xNextxPrintxEndSub【答案】77【解析】【详解】本题考查VB程序段。x=20,s=20,x=17,s=37,x=14,s=51,x=11,s=62,x=8,s=70,x=5,s=75,x=2,s=77x=1,循环结束,最后x=77。21世纪教育网www.21cnjy.com精品试卷·第2页(共2页)21世纪教育网(www.21cnjy.com)中小学教育资源及组卷应用平台4.4.3循环嵌套的应用-粤教版(2019)高中信息技术必修一练习学校:___________姓名:___________班级:___________考号:___________一、选择题1.有10个数据:83、90、96、46、44、36、45、47、55、72依次存放在数组元素a(1)到a(10)中,部分VB程序段如下所示:www.21-cn-jy.comm=1:k=1Fori=1To9Ifa(i)<a(i+1)Thenk=k+1Ifk>mThenm=kElsek=1EndIfNextiText1.Text=Str(m)执行该程序段,文本框Text1中显示的是()A.2B.3C.4D.52.有如下VB程序段:Fori=1To3Forj=1To6-iIfa(j)>a(j+1)Thent=a(j):a(j)=a(j+1):a(j+1)=t2-1-c-n-j-yNextjNexti数组元素a(1)到a(6)的数据依次为“55,31,19,42,37,23”,则此程序运行完成后数组元素的数据依次是()21cnjycomA.55,42,37,31,23,19B.19,23,31,55,37,42C.19,23,31,37,42,55D.19,31,23,37,42,553.有如下VB程序段:a(1)=1:a(2)=1b(1)=1:b(2)=2Fori=3To5a(i)=a(i-1)+a(i-2)b(i)=b(i-1)+a(i)Nexti执行该程序段后,数组元素b(5)的值为()A.12B.8C.5D.4二、操作题4.小王利用循环排序思想编写了一个VB程序,用于计算下一轮比赛的出场顺序。从数据库中读取本轮比赛的人员姓名存在数组xm中,成绩存在数组cj中(成绩均不重复)。编程实现将这些成绩进行循环升序排列。要求最低成绩的位置不变,然后依次进行升序排序,即从最小值开始向下尾首相连形成升序数列。程序运行界面如图所示。点击“排序”按钮,完成循环升序排序。(1)“排序”按钮的对象名为_(2)请在划线处填入合适代码。(3)加框处代码出错,请改正。Dimxm(1to100)AsString,cj(1to100)AsIntegerDimflag(1to100)AsBooleanPrivateSubForm_Load()'从数据库中读取数据,存储到相应数组中,并输出在列表框Listl。第i个人,姓名为xm(i),成绩为cj(i)。人员数量存储到变量n中()。代码略21·世纪教育网EndSubPrivateSubCmd__Click()DimminAsInteger,pminAsIntegermin=cj(1):pmin=1Fori=2TonIfcj(i)<minThenmin=cj(i):__①__Nextiflag(pmin)=Truepmin=pmin+1Ifpmin=n+1Thenpmin=1Fori=1Ton-2k=pminForj=1TonIf②Thenk=jNextjIfk<>pminThent=cj(k):cj(k)=cj(pmin):cj(pmin)=tC=xm(k):xm(k)=xm(pmin):xm(pmin)=cEndIfflag(pmin)=Truepmin=pmin+1Nexti'将排序后的人员姓名和成绩输出到列表框List2中,代码略。EndSub5.均分红包。当前有n堆红包,编号为1,2,3,。。n,每堆有若干个红包,红包总数sum是n的倍数。可以在任一堆上取若干个红包,然后移动,最终使每堆上的红包个数相同。【来源:21cnjy.com】移红包规则:①编号为1的堆上的红包,只能移到编号为2的堆上;②编号为n的堆上的红包,只能移到编号为n-1的堆上;③其它堆上的红包,可以移到相邻左边或右边的堆上。现要求找出最少的移动次数使每堆的红包数-样多。如图所示,在文本框Text1中输入红包堆数n,在文本框Text2中依次输入每堆红包的红包个数(以“,”为分隔符和结束符),单击“移红包次数统计”按钮Command1后,在标签Labe13中显示最少的移动次数。21世纪教育网版权所有(1)代码“PrivateSubCommand1_Click()”中的Click是______(单选,填字母:A.对象名B.事件名C.事件处理过程名D.方法名)(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。ConstSum=40'红包总个数PrivateSubCommand1_Click()DimnAsInteger'红包的堆数DimsAsString,kAsIntegerDimavgAsInteger'最终每堆的红包个数DimmlAsInteger,m2AsIntegerDimtmpAsInteger,countAsInteger,ansAsInteger【版权所有:21教育】n=__________s=Text2.Textavg=Sum/ntmp=0:count=0:ans=0Fork=1ToLen(s)c=Mid(s,k,1)Ifc<>","Thentmp=__________Elsecount=count+1Ifcount=1Thenml=tmpElsem2=tmpIfml<>avgThenm2=m2-(avg-m1)ans=ans+1EndIf________EndIftmp=0EndIfNextkLabe13.Caption=Str(ans)EndSub6.某班级学生为毕业晚会的一个节目设计一个仿“V”字造型,先筛选出班级中n名学生的所有男生,然后将参演的男生按照身高,摆出中间低两边高(先右后左)的造型,如下图1所示。王林同学用VB编写模拟“节目造型”程序,功能如下:从数据库中导出所有学生编号、性别和身高数据;单击“筛选排序”按钮Command2,根据身高仿“V”字和造型进行有序排列,并将结果显示在文本框Text2中。程序运行界面如图2所示。举例说明如下:原1-7号男生身高171172180174176179178筛选排序后序列171172174176178179180“造型设计”后序列180178174171172176179图1身高顺序:男3号〉男6号〉男7号〉男5号〉男4号〉男2号〉男1号图2Dimh(1Ton)AsIntegerDimheight1(1Ton)AsIntegerDimheight2(1Ton)AsIntegerDimnAsInteger,iAsInteger,jAsInteger,numAsInteger,tmpAsIntegerDimsex(1Ton)AsStringPrivateSubForm_Load()'n名学生的身高和性别由数据库导出,分别存储在数组h和sex中,代码略!EndSubPrivateSubCommand1_Click()b=0Fori=1Ton'n名学生中的男生Ifsex(i)=“男”Then①:height1(num)=h(i)NextiFori=1Tonum-1Forj=numToi+1Step-1Ifheight1(j)<height1(j-1)Thentmp=height1(j):height1(j)=height1(j-1):height1(j-1)=tmpEndIfNextjNextiFori=1TonumText1.Text=Text1.Text+""+Str(height1(i))21教育网NextiEndSubPrivateSubCommand2_Click()Dimleft,rightAsInteger,iAsInteger,midAsInteger2·1·c·n·j·ymid=Int((1+num)/2)left=0:right=0height2(mid)=height1(1)Fori=1To(num-1)\2right=right+1height2(mid+right)=height1(2i)left=left+1②NextiIfnumMod2=0Then③Fori=1TonumText2.Text=Text2.Text+""+Str(height2(i))【来源:21·世纪·教育·网】NextiEndSub(1)若参演的8名男生身高为180、171、173、174、178、175、176、170,程序执行结束后height1(5)的值是。www-2-1-cnjy-com(2)在程序①、②、③画线处填入适当的语句或表达式。将程序补充完整:程序中①画线处应填入;程序中②画线处应填入;程序中③画线处应填入;7.小龙同学设计了一个求四则混合运算结果的程序,用于计算不带括号的+、-、、\的运算,\为整除运算,且此处要求和\的优先级相同。在表达式中输入待求解的表达式,以=结尾。按下Command1“计算”按钮后,在标签控件Label1中输出运算结果。程序界面如下图所示:【出处:21教育名师】(1)在表达式中输入15-22\52+7=,则输出的结果是。(2)实现上述功能的VB程序如下,请在划线处填入合适代码。Functioncalculate(xAsInteger,yAsInteger,opAsString)AsIntegerIfop="+"Thencalculate=x+y21cnjycomIfop="-"Thencalculate=x-yIfop=""Thencalculate=xyIfop="\"Thencalculate=x\yEndFunctionFunctionstate(opAsString)AsIntegerIfop="#"Thenstate=-1Ifop="="Thenstate=1Ifop="+"Thenstate=1Ifop="-"Thenstate=1'①Ifop=""Thenstate=3EndFunctionPrivateSubCommand1_Click()DimsAsString,lengthAsInteger,tAsStringDimkAsInteger,qAsIntegerDimopt(0To3)AsStringDimiAsIntegerDims1AsStringDima(1To3)AsIntegers=Text1.Textlength=Len(s)t="":k=0:q=0:opt(q)="#"Fori=1Tolengths1=Mid(s,i,1)Ifs1>="0"Ands1<="9"Thent=t+s1Elsek=k+1a(k)=Val(t)t=""DoWhile'②a(k-1)=calculate(a(k-1),a(k),opt(q))k=k-1q=q-1Loopq=q+1'③Ifs1="="ThenLabel1.Caption=Str(a(1))EndIfNextiEndSub8.若一个三位数abc满足,则称abc为水仙花数。如三位数153满足,则153是水仙花数。以下是找出所有水仙花数的程序,请把程序补充完整。(a为百位数、b为十位数、c为个位数)21·cn·jy·comDimiAsInteger,aAsInteger,bAsInteger,cAsIntegerFori=100To____________a=i\100b=______________c=i-100a-10bIf_______________________ThenPrintiEndIfNexti9.小王基于选择排序算法编写了一个VB程序,功能如下:数组a有nn个元素,按n行n列进行排列,按列进行升序排序。例如66的数组,第一列将a(1),a(7),a(13),a(19),a(25),a(31)进行排序。运行程序,在列表框List1中显示nn个数列单击“排序”按钮Command1,在列表框List2中显示排序后的结果,程序运行界面如图所示。请回答下列问题:(1)n=6时运行结果如图所示,图中1处“47”在数组a中下标是_______(填数字)。(2)为了实现上述功能,请在划线处填写合适的代码。①_______________②_______________(3)程序中加框处代码有错,请改正。_________________Constn=6Dima(1Tonn)AsIntegerPrivateSubForm_Load()'产生nn个数组元素,每行按n个数显示在list1中Fori=1Tonna(i)=Int(Rnd90)+10s=s+Str(a(i))If①____________ThenList1.AddItemss=""EndIfNextiEndSubPrivateSubCommand1_Click()DimiAsInteger,jAsInteger,wAsInteger,sAsStringFori=1Tonnk=iForj=k+nTo②___________Ifa(k)>a(j)Thenk=jNextjIfThent=a(k):a(k)=a(i):a(i)=tNexti'将排序后数组a的元素,按每行n个数显示在list2中,代码略EndSub10.编写VB程序,实现如下功能:在文本框Text1中输入二进制数,单击“转换”命令按钮Command1,在文本框Text2中输出对应的十六进制数。程序运行界面如图所示,请回答下列问题:(1)如果输入的二进制数为“1101010”,则得到的结果为____________。(2)实现上述功能的VB程序如下,请在划线处填入合适代码。PrivateFunctionbw(xAsInteger,yAsString)AsString'函数bw功能:若二进制位数不足,通过在前面添"0"使得位数为4的倍数DimrAsInteger,iAsIntegerr=xMod4Ifr<>0ThenFori=1To4-ry="0"+yNextix=Len(y)EndIfbw=______________EndFunctionPrivateSubCommand1_Click()DimmAsString,nAsInteger,iAsInteger,aAsIntegerDimsAsInteger,s1AsString,jAsIntegerm=Text1.Textn=Len(m)Text2.Text=""m=____________'调整m的位数为4的倍数Fori=1Ton-3Step4s=0Forj=iToi+3a=Val(Mid(m,j,1))s=_______________NextjIfs>=10Thens1=Chr(Asc("A")+s-10)Elses1=CStr(s)'函数CStr类似于Str,但无前导空格EndIfText2.Text=Text2.Text+s1NextiEndSub11.某加密算法的明文和密钥均由英文字母组成,且密钥循环使用,其加密规则如下:①明文字符与对应密钥的ASCII码转化为二进制后求异或(对应位相同时结果为0,对应位不同时结果为1,如二进制1001与二进制1100的异或值为0101),并将异或结果转换为十进制p;21cnjy.com②如果处在奇数位,则将明文字符循环后移p个位置,否则将明文前移p个位置。移动过程中保持大小写不变。最后把所得到的字符连接起来就是密文。例如,密钥是“abc”,明文“d”的加密过程是:字符“d”的ASCII码表示为二进制是1100100,密钥“a”的ASCII码表示为二进制是1100001,两数进行异或结果是:0000101,转化为十进制为5,因为是第1个位置,所以把明文后移5个位置,则密文是“i”。该加密过程使用VB来实现。具体功能设计如下:在Text1中输入明文,Text2中输入密钥,单击“开始加密”按钮Command1后将密文显示在Text3中,界面设计如图所示。请回答以下问题:(1)如果密钥为“bc”,字符“d”加密后的密文为:_____(字母“a”的ASCII码为97)(2)请完善以下程序代码。PrivateSubCommand1_Click()DimsAsString,snAsStringDimiAsInteger,tAsInteger,uAsIntegerDimpAsInteger,gAsIntegersn=""Fori=1ToLen(Text1.Text)t=Asc(Mid(Text1.Text,i,1))Ift>=Asc("a")Theng=Asc("a")Elseg=Asc("A")EndIfu=Asc(Mid(Text2.Text,(i-1)ModLen(Text2.Text)+1,1))p=_________t=t-gIfiMod2=1Thent=(t+p)Mod26Elset=__________EndIfsn=sn+Chr(t+g)NextiText3.Text=snEndSubFunctiontxor(xAsInteger,yAsInteger)AsInteger'x、y求异或并返回十进制DimaAsInteger,bAsInteger,rAsInteger,iAsInteger21教育名师原创作品a=x:b=yr=1Fori=1To7IfaMod2<>bMod2Then________a=a\2b=b\2r=r2NextiEndFunction12.小李基于选择排序算法编写了一个VB程序,功能如下:在文本框Text1中显示排序前的数据,单击“排序”按钮Command1,在文本框Text2中显示剔除重复数据后的升序排序结果。程序运行界面如下图所示。算法的思路:第i趟排序从a(i)….a(bottom)中查找最小值并记录其下标k,同时将后面的每个元素与a(i)比较是否重复,若发现重复数据,进行剔除处理;找到最小值与a(i)交换。实现上述功能的VB程序如下,在划线处填入合适的代码,并将答案写在答题卡上。Constn=10Dima(1Ton)AsIntegerPrivateSubCommand1_Click()DimiAsInteger,jAsInteger,tAsIntegerDimkAsInteger,bottomAsInteger'获取排序前数据,依次存储在数组a中,并在文本框Text1中显示。代码略bottom=n:i=1DoWhilei<=bottom-1k=i:j=bottomDoWhilej>iIfa(j)<a(k)Thenk=jElseIfa(j)=a(i)Then'若发现重复数据,进行剔除处理a(j)=a(bottom)If__________________Thenk=jbottom=bottom-1EndIfj=j-1LoopIfk<>iThent=a(k):a(k)=a(i):a(i)=tElse______________________EndIFLoopFori=1To________________Text2.Text=Text2.Text+Str(a(i))NextiEndSub三、填空题13.运行以下VB程序,输出结果是_____________。PrivateSubCommand1_Click()DimsAsInteger,xAsIntegers=0x=20Forx=20To1Step-3s=s+xNextxPrintxEndSub21世纪教育网www.21cnjy.com精品试卷·第2页(共2页)21世纪教育网(www.21cnjy.com) 展开更多...... 收起↑ 资源列表 4.4.3循环嵌套的应用-粤教版(2019)高中信息技术必修一练习(原卷版).doc 4.4.3循环嵌套的应用-粤教版(2019)高中信息技术必修一练习(解析版).doc