資源簡介 中小學(xué)教育資源及組卷應(yīng)用平臺(tái)4.4.3循環(huán)嵌套的應(yīng)用-粵教版(2019)高中信息技術(shù)必修一練習(xí)學(xué)校:___________姓名:___________班級(jí):___________考號(hào):___________一、選擇題1.有10個(gè)數(shù)據(jù):83、90、96、46、44、36、45、47、55、72依次存放在數(shù)組元素a(1)到a(10)中,部分VB程序段如下所示:m=1:k=1Fori=1To9Ifa(i)<a(i+1)Thenk=k+1Ifk>mThenm=kElsek=1EndIfNextiText1.Text=Str(m)執(zhí)行該程序段,文本框Text1中顯示的是()A.2B.3C.4D.5【答案】D【解析】【詳解】本題考查循環(huán)語句。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·世紀(jì)·教育·網(wǎng)】NextjNexti數(shù)組元素a(1)到a(6)的數(shù)據(jù)依次為“55,31,19,42,37,23”,則此程序運(yùn)行完成后數(shù)組元素的數(shù)據(jù)依次是()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【解析】【詳解】本題考查冒泡排序。根據(jù)外循環(huán)語句,該排序只執(zhí)行三趟,又根據(jù)內(nèi)循環(huán)和判斷條件Ifa(j)>a(j+1)Then交換,可知將數(shù)值較大的數(shù)據(jù)往下交換。原始數(shù)據(jù)為55,31,19,42,37,23,經(jīng)過三趟排序后,最終結(jié)果為19,31,23,37,42,55。故本題D選項(xiàng)為正確選項(xiàng)。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執(zhí)行該程序段后,數(shù)組元素b(5)的值為()A.12B.8C.5D.4【答案】A【解析】【詳解】本題考查循環(huán)語句和賦值語句。根據(jù)初值,以及循環(huán),a(i)=a(i-1)+a(i-2),b(i)=b(i-1)+a(i)得到結(jié)果。最后b(5)=12,故本題選A。二、操作題4.小王利用循環(huán)排序思想編寫了一個(gè)VB程序,用于計(jì)算下一輪比賽的出場順序。從數(shù)據(jù)庫中讀取本輪比賽的人員姓名存在數(shù)組xm中,成績存在數(shù)組cj中(成績均不重復(fù))。編程實(shí)現(xiàn)將這些成績進(jìn)行循環(huán)升序排列。要求最低成績的位置不變,然后依次進(jìn)行升序排序,即從最小值開始向下尾首相連形成升序數(shù)列。程序運(yùn)行界面如圖所示。點(diǎn)擊“排序”按鈕,完成循環(huán)升序排序。(1)“排序”按鈕的對(duì)象名為_(2)請(qǐng)?jiān)趧澗€處填入合適代碼。(3)加框處代碼出錯(cuò),請(qǐng)改正。Dimxm(1to100)AsString,cj(1to100)AsIntegerDimflag(1to100)AsBooleanPrivateSubForm_Load()'從數(shù)據(jù)庫中讀取數(shù)據(jù),存儲(chǔ)到相應(yīng)數(shù)組中,并輸出在列表框Listl。第i個(gè)人,姓名為xm(i),成績?yōu)閏j(i)。人員數(shù)量存儲(chǔ)到變量n中()。代碼略21教育名師原創(chuàng)作品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)根據(jù)代碼,排序按鈕的對(duì)象名為Cmd。(2)將最小值的位置記錄在pmin,故填入pmin=i。(3)尋找最小值,并且要保證該值之前沒有挑選過,所以填入cj(j)Andflag(j)=False。(4)根據(jù)題干是循環(huán)排序,所以位置也要構(gòu)成循環(huán),根據(jù)約瑟夫環(huán)狀類似結(jié)構(gòu),填入pmin=pminModn+15.均分紅包。當(dāng)前有n堆紅包,編號(hào)為1,2,3,。。n,每堆有若干個(gè)紅包,紅包總數(shù)sum是n的倍數(shù)。可以在任一堆上取若干個(gè)紅包,然后移動(dòng),最終使每堆上的紅包個(gè)數(shù)相同。移紅包規(guī)則:①編號(hào)為1的堆上的紅包,只能移到編號(hào)為2的堆上;②編號(hào)為n的堆上的紅包,只能移到編號(hào)為n-1的堆上;③其它堆上的紅包,可以移到相鄰左邊或右邊的堆上。現(xiàn)要求找出最少的移動(dòng)次數(shù)使每堆的紅包數(shù)-樣多。如圖所示,在文本框Text1中輸入紅包堆數(shù)n,在文本框Text2中依次輸入每堆紅包的紅包個(gè)數(shù)(以“,”為分隔符和結(jié)束符),單擊“移紅包次數(shù)統(tǒng)計(jì)”按鈕Command1后,在標(biāo)簽Labe13中顯示最少的移動(dòng)次數(shù)。(1)代碼“PrivateSubCommand1_Click()”中的Click是______(單選,填字母:A.對(duì)象名B.事件名C.事件處理過程名D.方法名)(2)實(shí)現(xiàn)上述功能的VB程序如下,請(qǐng)?jiān)趧澗€處填入合適的代碼。ConstSum=40'紅包總個(gè)數(shù)PrivateSubCommand1_Click()DimnAsInteger'紅包的堆數(shù)DimsAsString,kAsIntegerDimavgAsInteger'最終每堆的紅包個(gè)數(shù)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中得到堆數(shù),填入Val(Textl.text)。(3)Ifc<>“,”,如果c不是逗號(hào),則累加,將整個(gè)數(shù)字取出放入tmp,注意數(shù)據(jù)類型,填入tmp10+Val(c)。(4)繼續(xù)運(yùn)算,m1重新賦值,故填入m1=m2。6.某班級(jí)學(xué)生為畢業(yè)晚會(huì)的一個(gè)節(jié)目設(shè)計(jì)一個(gè)仿“V”字造型,先篩選出班級(jí)中n名學(xué)生的所有男生,然后將參演的男生按照身高,擺出中間低兩邊高(先右后左)的造型,如下圖1所示。王林同學(xué)用VB編寫模擬“節(jié)目造型”程序,功能如下:從數(shù)據(jù)庫中導(dǎo)出所有學(xué)生編號(hào)、性別和身高數(shù)據(jù);單擊“篩選排序”按鈕Command2,根據(jù)身高仿“V”字和造型進(jìn)行有序排列,并將結(jié)果顯示在文本框Text2中。程序運(yùn)行界面如圖2所示。舉例說明如下:原1-7號(hào)男生身高171172180174176179178篩選排序后序列171172174176178179180“造型設(shè)計(jì)”后序列180178174171172176179圖1身高順序:男3號(hào)〉男6號(hào)〉男7號(hào)〉男5號(hào)〉男4號(hào)〉男2號(hào)〉男1號(hào)圖2Dimh(1Ton)AsIntegerDimheight1(1Ton)AsIntegerDimheight2(1Ton)AsIntegerDimnAsInteger,iAsInteger,jAsInteger,numAsInteger,tmpAsIntegerDimsex(1Ton)AsStringPrivateSubForm_Load()'n名學(xué)生的身高和性別由數(shù)據(jù)庫導(dǎo)出,分別存儲(chǔ)在數(shù)組h和sex中,代碼略!EndSubPrivateSubCommand1_Click()b=0Fori=1Ton'n名學(xué)生中的男生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))【版權(quán)所有: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,程序執(zhí)行結(jié)束后height1(5)的值是。2·1·c·n·j·y(2)在程序①、②、③畫線處填入適當(dāng)?shù)恼Z句或表達(dá)式。將程序補(bǔ)充完整:程序中①畫線處應(yīng)填入;程序中②畫線處應(yīng)填入;程序中③畫線處應(yīng)填入;【答案】(1)175(2)①num=num+1②height2(mid-left)=height1(2i+1)③height2(num)=height1(num)21世紀(jì)教育網(wǎng)版權(quán)所有【解析】【詳解】本題考查VB綜合能力。根據(jù)題干,擺出中間低兩邊高(先右后左)的造型height1(5)=175。(2)如果是男生,則男生數(shù)量+1,故填入num=num+1。(3)left表示網(wǎng)左邊排序,排序的是奇數(shù)位上的數(shù)值,故填入height2(mid-left)=height1(2i+1)。(4)如果整體數(shù)量是偶數(shù)個(gè),則需要把最后一個(gè)也添加到數(shù)組中,故填入height2(num)=height1(num)。7.小龍同學(xué)設(shè)計(jì)了一個(gè)求四則混合運(yùn)算結(jié)果的程序,用于計(jì)算不帶括號(hào)的+、-、、\的運(yùn)算,\為整除運(yùn)算,且此處要求和\的優(yōu)先級(jí)相同。在表達(dá)式中輸入待求解的表達(dá)式,以=結(jié)尾。按下Command1“計(jì)算”按鈕后,在標(biāo)簽控件Label1中輸出運(yùn)算結(jié)果。程序界面如下圖所示:(1)在表達(dá)式中輸入15-22\52+7=,則輸出的結(jié)果是。(2)實(shí)現(xiàn)上述功能的VB程序如下,請(qǐng)?jiān)趧澗€處填入合適代碼。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·世紀(jì)教育網(wǎng)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結(jié)果為14。(2)如果運(yùn)算符是除號(hào),則state=3,故填入Ifop=“\”Thenstate=3。(3)根據(jù)優(yōu)先級(jí)進(jìn)行運(yùn)算,若前一個(gè)運(yùn)算符的優(yōu)先級(jí)比后一個(gè)運(yùn)算符高或者相等,則可進(jìn)行a(k-1)和a(k)的運(yùn)算,故填入state(s1)<=state(opt(q))。(4)將運(yùn)算符記錄在opt數(shù)組中。8.若一個(gè)三位數(shù)abc滿足,則稱abc為水仙花數(shù)。如三位數(shù)153滿足,則153是水仙花數(shù)。以下是找出所有水仙花數(shù)的程序,請(qǐng)把程序補(bǔ)充完整。(a為百位數(shù)、b為十位數(shù)、c為個(gè)位數(shù))【來源: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【解析】【詳解】本題考查枚舉算法。本題考查枚舉算法。枚舉法的本質(zhì)就是從所有候選答案中去搜索正確的解,使用該算法需要滿足兩個(gè)條件:可預(yù)先確定候選答案的數(shù)量;候選答案的范圍在求解之前必須有一個(gè)確定的集合。(1)三位數(shù)的范圍是100-999,所以第一空為999。(2)b是三位數(shù)的中間那個(gè)數(shù)字,所以該空代碼為(i-a100)\10或(iMod100)\10。(3)如果符合水仙花數(shù)的條件,則打印,故該空為i=a^3+b^3+c^3。9.小王基于選擇排序算法編寫了一個(gè)VB程序,功能如下:數(shù)組a有nn個(gè)元素,按n行n列進(jìn)行排列,按列進(jìn)行升序排序。例如66的數(shù)組,第一列將a(1),a(7),a(13),a(19),a(25),a(31)進(jìn)行排序。運(yùn)行程序,在列表框List1中顯示nn個(gè)數(shù)列單擊“排序”按鈕Command1,在列表框List2中顯示排序后的結(jié)果,程序運(yùn)行界面如圖所示。請(qǐng)回答下列問題:(1)n=6時(shí)運(yùn)行結(jié)果如圖所示,圖中1處“47”在數(shù)組a中下標(biāo)是_______(填數(shù)字)。(2)為了實(shí)現(xiàn)上述功能,請(qǐng)?jiān)趧澗€處填寫合適的代碼。①_______________②_______________(3)程序中加框處代碼有錯(cuò),請(qǐng)改正。_________________Constn=6Dima(1Tonn)AsIntegerPrivateSubForm_Load()'產(chǎn)生nn個(gè)數(shù)組元素,每行按n個(gè)數(shù)顯示在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'將排序后數(shù)組a的元素,按每行n個(gè)數(shù)顯示在list2中,代碼略EndSub【答案】12iModn=0nnStepnk<>i或a(k)<>a(i)【解析】【詳解】本題考查VB綜合能力,選擇排序算法等。(1)根據(jù)矩陣排列,每行每列都是n個(gè),可知圖中1處47在數(shù)組a中下標(biāo)是12。(2)List1中是按每行輸出,所以當(dāng)一行數(shù)量達(dá)到n個(gè)時(shí),輸出。則第一空的代碼為iModn=0。(3)因?yàn)槭前凑樟信判颍栽趦?nèi)循環(huán)的終值將所有數(shù)組元素包括,限定步長為n,這樣就可以保證按列比較,故第二空代碼為nnStepn。(4)根據(jù)選擇排序特性,當(dāng)a(k)<>a(i)時(shí),交換,故改為a(k)<>a(i)。10.編寫VB程序,實(shí)現(xiàn)如下功能:在文本框Text1中輸入二進(jìn)制數(shù),單擊“轉(zhuǎn)換”命令按鈕Command1,在文本框Text2中輸出對(duì)應(yīng)的十六進(jìn)制數(shù)。程序運(yùn)行界面如圖所示,請(qǐng)回答下列問題:(1)如果輸入的二進(jìn)制數(shù)為“1101010”,則得到的結(jié)果為____________。(2)實(shí)現(xiàn)上述功能的VB程序如下,請(qǐng)?jiān)趧澗€處填入合適代碼。PrivateFunctionbw(xAsInteger,yAsString)AsString'函數(shù)bw功能:若二進(jìn)制位數(shù)不足,通過在前面添"0"使得位數(shù)為4的倍數(shù)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=____________'調(diào)整m的位數(shù)為4的倍數(shù)Fori=1Ton-3Step4s=0Forj=iToi+3a=Val(Mid(m,j,1))s=_______________NextjIfs>=10Thens1=Chr(Asc("A")+s-10)Elses1=CStr(s)'函數(shù)CStr類似于Str,但無前導(dǎo)空格EndIfText2.Text=Text2.Text+s1NextiEndSub【答案】6Aybw(n,m)s2+a【解析】【詳解】本題考查VB綜合能力,進(jìn)制轉(zhuǎn)換等。(1)根據(jù)題意,將1101010轉(zhuǎn)為十六進(jìn)制,得到結(jié)果為6A。(2)在自定義函數(shù)內(nèi)部,需要有返回值,故代碼第一空填寫為y。(3)此處語句為調(diào)用自定義函數(shù),將n和m帶入自定義函數(shù),故此空語句為bw(n,m)。(4)此處語句為將二進(jìn)制轉(zhuǎn)換為十進(jìn)制,疊加語句可以是結(jié)果變量乘以進(jìn)制數(shù)然后加上當(dāng)前數(shù)值,故代碼為s2+a。21cnjycom11.某加密算法的明文和密鑰均由英文字母組成,且密鑰循環(huán)使用,其加密規(guī)則如下:①明文字符與對(duì)應(yīng)密鑰的ASCII碼轉(zhuǎn)化為二進(jìn)制后求異或(對(duì)應(yīng)位相同時(shí)結(jié)果為0,對(duì)應(yīng)位不同時(shí)結(jié)果為1,如二進(jìn)制1001與二進(jìn)制1100的異或值為0101),并將異或結(jié)果轉(zhuǎn)換為十進(jìn)制p;②如果處在奇數(shù)位,則將明文字符循環(huán)后移p個(gè)位置,否則將明文前移p個(gè)位置。移動(dòng)過程中保持大小寫不變。最后把所得到的字符連接起來就是密文。例如,密鑰是“abc”,明文“d”的加密過程是:字符“d”的ASCII碼表示為二進(jìn)制是1100100,密鑰“a”的ASCII碼表示為二進(jìn)制是1100001,兩數(shù)進(jìn)行異或結(jié)果是:0000101,轉(zhuǎn)化為十進(jìn)制為5,因?yàn)槭堑?br/>1個(gè)位置,所以把明文后移5個(gè)位置,則密文是“i”。該加密過程使用VB來實(shí)現(xiàn)。具體功能設(shè)計(jì)如下:在Text1中輸入明文,Text2中輸入密鑰,單擊“開始加密”按鈕Command1后將密文顯示在Text3中,界面設(shè)計(jì)如圖所示。請(qǐng)回答以下問題:(1)如果密鑰為“bc”,字符“d”加密后的密文為:_____(字母“a”的ASCII碼為97)(2)請(qǐng)完善以下程序代碼。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求異或并返回十進(jìn)制DimaAsInteger,bAsInteger,rAsInteger,iAsInteger21教育網(wǎng)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)根據(jù)題干,如果密鑰為bc,字符d加密后的密文,字符“d”的ASCII碼表示為二進(jìn)制是1100100,密鑰“b”的ASCII碼表示為二進(jìn)制是1100010,兩數(shù)進(jìn)行異或結(jié)果是:0000110,轉(zhuǎn)化為十進(jìn)制為6,因?yàn)槭堑?個(gè)位置,所以把明文后移6個(gè)位置,則密文是“j”。(2)代入自定義函數(shù)txor求異或并返回十進(jìn)制,則填入txor(t,u)Mod26。(3)當(dāng)i是偶數(shù)時(shí),向前循環(huán)移動(dòng),故填入(t-p+26)Mod26。(4)得到返回值結(jié)果,填入txor=txor+r。【出處:21教育名師】12.小李基于選擇排序算法編寫了一個(gè)VB程序,功能如下:在文本框Text1中顯示排序前的數(shù)據(jù),單擊“排序”按鈕Command1,在文本框Text2中顯示剔除重復(fù)數(shù)據(jù)后的升序排序結(jié)果。程序運(yùn)行界面如下圖所示。算法的思路:第i趟排序從a(i)….a(bottom)中查找最小值并記錄其下標(biāo)k,同時(shí)將后面的每個(gè)元素與a(i)比較是否重復(fù),若發(fā)現(xiàn)重復(fù)數(shù)據(jù),進(jìn)行剔除處理;找到最小值與a(i)交換。實(shí)現(xiàn)上述功能的VB程序如下,在劃線處填入合適的代碼,并將答案寫在答題卡上。Constn=10Dima(1Ton)AsIntegerPrivateSubCommand1_Click()DimiAsInteger,jAsInteger,tAsIntegerDimkAsInteger,bottomAsInteger'獲取排序前數(shù)據(jù),依次存儲(chǔ)在數(shù)組a中,并在文本框Text1中顯示。代碼略bottom=n:i=1DoWhilei<=bottom-1k=i:j=bottomDoWhilej>iIfa(j)<a(k)Thenk=jElseIfa(j)=a(i)Then'若發(fā)現(xiàn)重復(fù)數(shù)據(jù),進(jìn)行剔除處理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綜合能力,選擇排序,循環(huán)語句等。(1)根據(jù)題干,需要進(jìn)行排序和去重。若此時(shí),標(biāo)記最小值的變量k=bottom,也就是k指在最后,而此時(shí)又發(fā)生重復(fù),即a(j)=a(i),那么需要剔除,將最后面的元素覆蓋到重復(fù)位置,即a(j)=a(bottom),于是,變量k需要跟著移動(dòng)到此時(shí)j的位置,否則當(dāng)執(zhí)行bottom=bottom-1的時(shí)候,k變量指向的位置就會(huì)丟掉。所以第一空填入k=bottom。(2)此時(shí)塊IF中Else是指k=i,當(dāng)k=i時(shí),無需交換,也已經(jīng)將重復(fù)元素剔除,從而進(jìn)行下一個(gè)數(shù)據(jù)的判斷,將i往下移動(dòng),即i=i+1。(3)最后的輸出,從1到bottom,故第三空填入bottom。www.21-cn-jy.com三、填空題13.運(yùn)行以下VB程序,輸出結(jié)果是_____________。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,循環(huán)結(jié)束,最后x=77。21世紀(jì)教育網(wǎng)www.21cnjy.com精品試卷·第2頁(共2頁)21世紀(jì)教育網(wǎng)(www.21cnjy.com)中小學(xué)教育資源及組卷應(yīng)用平臺(tái)4.4.3循環(huán)嵌套的應(yīng)用-粵教版(2019)高中信息技術(shù)必修一練習(xí)學(xué)校:___________姓名:___________班級(jí):___________考號(hào):___________一、選擇題1.有10個(gè)數(shù)據(jù):83、90、96、46、44、36、45、47、55、72依次存放在數(shù)組元素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)執(zhí)行該程序段,文本框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數(shù)組元素a(1)到a(6)的數(shù)據(jù)依次為“55,31,19,42,37,23”,則此程序運(yùn)行完成后數(shù)組元素的數(shù)據(jù)依次是()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執(zhí)行該程序段后,數(shù)組元素b(5)的值為()A.12B.8C.5D.4二、操作題4.小王利用循環(huán)排序思想編寫了一個(gè)VB程序,用于計(jì)算下一輪比賽的出場順序。從數(shù)據(jù)庫中讀取本輪比賽的人員姓名存在數(shù)組xm中,成績存在數(shù)組cj中(成績均不重復(fù))。編程實(shí)現(xiàn)將這些成績進(jìn)行循環(huán)升序排列。要求最低成績的位置不變,然后依次進(jìn)行升序排序,即從最小值開始向下尾首相連形成升序數(shù)列。程序運(yùn)行界面如圖所示。點(diǎn)擊“排序”按鈕,完成循環(huán)升序排序。(1)“排序”按鈕的對(duì)象名為_(2)請(qǐng)?jiān)趧澗€處填入合適代碼。(3)加框處代碼出錯(cuò),請(qǐng)改正。Dimxm(1to100)AsString,cj(1to100)AsIntegerDimflag(1to100)AsBooleanPrivateSubForm_Load()'從數(shù)據(jù)庫中讀取數(shù)據(jù),存儲(chǔ)到相應(yīng)數(shù)組中,并輸出在列表框Listl。第i個(gè)人,姓名為xm(i),成績?yōu)閏j(i)。人員數(shù)量存儲(chǔ)到變量n中()。代碼略21·世紀(jì)教育網(wǎng)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.均分紅包。當(dāng)前有n堆紅包,編號(hào)為1,2,3,。。n,每堆有若干個(gè)紅包,紅包總數(shù)sum是n的倍數(shù)。可以在任一堆上取若干個(gè)紅包,然后移動(dòng),最終使每堆上的紅包個(gè)數(shù)相同。【來源:21cnjy.com】移紅包規(guī)則:①編號(hào)為1的堆上的紅包,只能移到編號(hào)為2的堆上;②編號(hào)為n的堆上的紅包,只能移到編號(hào)為n-1的堆上;③其它堆上的紅包,可以移到相鄰左邊或右邊的堆上。現(xiàn)要求找出最少的移動(dòng)次數(shù)使每堆的紅包數(shù)-樣多。如圖所示,在文本框Text1中輸入紅包堆數(shù)n,在文本框Text2中依次輸入每堆紅包的紅包個(gè)數(shù)(以“,”為分隔符和結(jié)束符),單擊“移紅包次數(shù)統(tǒng)計(jì)”按鈕Command1后,在標(biāo)簽Labe13中顯示最少的移動(dòng)次數(shù)。21世紀(jì)教育網(wǎng)版權(quán)所有(1)代碼“PrivateSubCommand1_Click()”中的Click是______(單選,填字母:A.對(duì)象名B.事件名C.事件處理過程名D.方法名)(2)實(shí)現(xiàn)上述功能的VB程序如下,請(qǐng)?jiān)趧澗€處填入合適的代碼。ConstSum=40'紅包總個(gè)數(shù)PrivateSubCommand1_Click()DimnAsInteger'紅包的堆數(shù)DimsAsString,kAsIntegerDimavgAsInteger'最終每堆的紅包個(gè)數(shù)DimmlAsInteger,m2AsIntegerDimtmpAsInteger,countAsInteger,ansAsInteger【版權(quán)所有: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.某班級(jí)學(xué)生為畢業(yè)晚會(huì)的一個(gè)節(jié)目設(shè)計(jì)一個(gè)仿“V”字造型,先篩選出班級(jí)中n名學(xué)生的所有男生,然后將參演的男生按照身高,擺出中間低兩邊高(先右后左)的造型,如下圖1所示。王林同學(xué)用VB編寫模擬“節(jié)目造型”程序,功能如下:從數(shù)據(jù)庫中導(dǎo)出所有學(xué)生編號(hào)、性別和身高數(shù)據(jù);單擊“篩選排序”按鈕Command2,根據(jù)身高仿“V”字和造型進(jìn)行有序排列,并將結(jié)果顯示在文本框Text2中。程序運(yùn)行界面如圖2所示。舉例說明如下:原1-7號(hào)男生身高171172180174176179178篩選排序后序列171172174176178179180“造型設(shè)計(jì)”后序列180178174171172176179圖1身高順序:男3號(hào)〉男6號(hào)〉男7號(hào)〉男5號(hào)〉男4號(hào)〉男2號(hào)〉男1號(hào)圖2Dimh(1Ton)AsIntegerDimheight1(1Ton)AsIntegerDimheight2(1Ton)AsIntegerDimnAsInteger,iAsInteger,jAsInteger,numAsInteger,tmpAsIntegerDimsex(1Ton)AsStringPrivateSubForm_Load()'n名學(xué)生的身高和性別由數(shù)據(jù)庫導(dǎo)出,分別存儲(chǔ)在數(shù)組h和sex中,代碼略!EndSubPrivateSubCommand1_Click()b=0Fori=1Ton'n名學(xué)生中的男生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教育網(wǎng)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·世紀(jì)·教育·網(wǎng)】NextiEndSub(1)若參演的8名男生身高為180、171、173、174、178、175、176、170,程序執(zhí)行結(jié)束后height1(5)的值是。www-2-1-cnjy-com(2)在程序①、②、③畫線處填入適當(dāng)?shù)恼Z句或表達(dá)式。將程序補(bǔ)充完整:程序中①畫線處應(yīng)填入;程序中②畫線處應(yīng)填入;程序中③畫線處應(yīng)填入;7.小龍同學(xué)設(shè)計(jì)了一個(gè)求四則混合運(yùn)算結(jié)果的程序,用于計(jì)算不帶括號(hào)的+、-、、\的運(yùn)算,\為整除運(yùn)算,且此處要求和\的優(yōu)先級(jí)相同。在表達(dá)式中輸入待求解的表達(dá)式,以=結(jié)尾。按下Command1“計(jì)算”按鈕后,在標(biāo)簽控件Label1中輸出運(yùn)算結(jié)果。程序界面如下圖所示:【出處:21教育名師】(1)在表達(dá)式中輸入15-22\52+7=,則輸出的結(jié)果是。(2)實(shí)現(xiàn)上述功能的VB程序如下,請(qǐng)?jiān)趧澗€處填入合適代碼。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.若一個(gè)三位數(shù)abc滿足,則稱abc為水仙花數(shù)。如三位數(shù)153滿足,則153是水仙花數(shù)。以下是找出所有水仙花數(shù)的程序,請(qǐng)把程序補(bǔ)充完整。(a為百位數(shù)、b為十位數(shù)、c為個(gè)位數(shù))21·cn·jy·comDimiAsInteger,aAsInteger,bAsInteger,cAsIntegerFori=100To____________a=i\100b=______________c=i-100a-10bIf_______________________ThenPrintiEndIfNexti9.小王基于選擇排序算法編寫了一個(gè)VB程序,功能如下:數(shù)組a有nn個(gè)元素,按n行n列進(jìn)行排列,按列進(jìn)行升序排序。例如66的數(shù)組,第一列將a(1),a(7),a(13),a(19),a(25),a(31)進(jìn)行排序。運(yùn)行程序,在列表框List1中顯示nn個(gè)數(shù)列單擊“排序”按鈕Command1,在列表框List2中顯示排序后的結(jié)果,程序運(yùn)行界面如圖所示。請(qǐng)回答下列問題:(1)n=6時(shí)運(yùn)行結(jié)果如圖所示,圖中1處“47”在數(shù)組a中下標(biāo)是_______(填數(shù)字)。(2)為了實(shí)現(xiàn)上述功能,請(qǐng)?jiān)趧澗€處填寫合適的代碼。①_______________②_______________(3)程序中加框處代碼有錯(cuò),請(qǐng)改正。_________________Constn=6Dima(1Tonn)AsIntegerPrivateSubForm_Load()'產(chǎn)生nn個(gè)數(shù)組元素,每行按n個(gè)數(shù)顯示在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'將排序后數(shù)組a的元素,按每行n個(gè)數(shù)顯示在list2中,代碼略EndSub10.編寫VB程序,實(shí)現(xiàn)如下功能:在文本框Text1中輸入二進(jìn)制數(shù),單擊“轉(zhuǎn)換”命令按鈕Command1,在文本框Text2中輸出對(duì)應(yīng)的十六進(jìn)制數(shù)。程序運(yùn)行界面如圖所示,請(qǐng)回答下列問題:(1)如果輸入的二進(jìn)制數(shù)為“1101010”,則得到的結(jié)果為____________。(2)實(shí)現(xiàn)上述功能的VB程序如下,請(qǐng)?jiān)趧澗€處填入合適代碼。PrivateFunctionbw(xAsInteger,yAsString)AsString'函數(shù)bw功能:若二進(jìn)制位數(shù)不足,通過在前面添"0"使得位數(shù)為4的倍數(shù)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=____________'調(diào)整m的位數(shù)為4的倍數(shù)Fori=1Ton-3Step4s=0Forj=iToi+3a=Val(Mid(m,j,1))s=_______________NextjIfs>=10Thens1=Chr(Asc("A")+s-10)Elses1=CStr(s)'函數(shù)CStr類似于Str,但無前導(dǎo)空格EndIfText2.Text=Text2.Text+s1NextiEndSub11.某加密算法的明文和密鑰均由英文字母組成,且密鑰循環(huán)使用,其加密規(guī)則如下:①明文字符與對(duì)應(yīng)密鑰的ASCII碼轉(zhuǎn)化為二進(jìn)制后求異或(對(duì)應(yīng)位相同時(shí)結(jié)果為0,對(duì)應(yīng)位不同時(shí)結(jié)果為1,如二進(jìn)制1001與二進(jìn)制1100的異或值為0101),并將異或結(jié)果轉(zhuǎn)換為十進(jìn)制p;21cnjy.com②如果處在奇數(shù)位,則將明文字符循環(huán)后移p個(gè)位置,否則將明文前移p個(gè)位置。移動(dòng)過程中保持大小寫不變。最后把所得到的字符連接起來就是密文。例如,密鑰是“abc”,明文“d”的加密過程是:字符“d”的ASCII碼表示為二進(jìn)制是1100100,密鑰“a”的ASCII碼表示為二進(jìn)制是1100001,兩數(shù)進(jìn)行異或結(jié)果是:0000101,轉(zhuǎn)化為十進(jìn)制為5,因?yàn)槭堑?br/>1個(gè)位置,所以把明文后移5個(gè)位置,則密文是“i”。該加密過程使用VB來實(shí)現(xiàn)。具體功能設(shè)計(jì)如下:在Text1中輸入明文,Text2中輸入密鑰,單擊“開始加密”按鈕Command1后將密文顯示在Text3中,界面設(shè)計(jì)如圖所示。請(qǐng)回答以下問題:(1)如果密鑰為“bc”,字符“d”加密后的密文為:_____(字母“a”的ASCII碼為97)(2)請(qǐng)完善以下程序代碼。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求異或并返回十進(jìn)制DimaAsInteger,bAsInteger,rAsInteger,iAsInteger21教育名師原創(chuàng)作品a=x:b=yr=1Fori=1To7IfaMod2<>bMod2Then________a=a\2b=b\2r=r2NextiEndFunction12.小李基于選擇排序算法編寫了一個(gè)VB程序,功能如下:在文本框Text1中顯示排序前的數(shù)據(jù),單擊“排序”按鈕Command1,在文本框Text2中顯示剔除重復(fù)數(shù)據(jù)后的升序排序結(jié)果。程序運(yùn)行界面如下圖所示。算法的思路:第i趟排序從a(i)….a(bottom)中查找最小值并記錄其下標(biāo)k,同時(shí)將后面的每個(gè)元素與a(i)比較是否重復(fù),若發(fā)現(xiàn)重復(fù)數(shù)據(jù),進(jìn)行剔除處理;找到最小值與a(i)交換。實(shí)現(xiàn)上述功能的VB程序如下,在劃線處填入合適的代碼,并將答案寫在答題卡上。Constn=10Dima(1Ton)AsIntegerPrivateSubCommand1_Click()DimiAsInteger,jAsInteger,tAsIntegerDimkAsInteger,bottomAsInteger'獲取排序前數(shù)據(jù),依次存儲(chǔ)在數(shù)組a中,并在文本框Text1中顯示。代碼略bottom=n:i=1DoWhilei<=bottom-1k=i:j=bottomDoWhilej>iIfa(j)<a(k)Thenk=jElseIfa(j)=a(i)Then'若發(fā)現(xiàn)重復(fù)數(shù)據(jù),進(jìn)行剔除處理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.運(yùn)行以下VB程序,輸出結(jié)果是_____________。PrivateSubCommand1_Click()DimsAsInteger,xAsIntegers=0x=20Forx=20To1Step-3s=s+xNextxPrintxEndSub21世紀(jì)教育網(wǎng)www.21cnjy.com精品試卷·第2頁(共2頁)21世紀(jì)教育網(wǎng)(www.21cnjy.com) 展開更多...... 收起↑ 資源列表 4.4.3循環(huán)嵌套的應(yīng)用-粵教版(2019)高中信息技術(shù)必修一練習(xí)(原卷版).doc 4.4.3循環(huán)嵌套的應(yīng)用-粵教版(2019)高中信息技術(shù)必修一練習(xí)(解析版).doc 縮略圖、資源來源于二一教育資源庫