資源簡介 中小學教育資源及組卷應用平臺4.4.4循環控制的應用-粵教版(2019)高中信息技術必修一練習學校:___________姓名:___________班級:___________考號:___________一、選擇題1.有如下VB程序段:Fori=1ToLen(Text1.Text)c=Mid(Text1.Text,i,1)Ifc>="0"Andc<="9"Thenx=Val(c)a((x+1)Mod10)=a((x+1)Mod10)+1EndIfNextis=""Fori=0To9s=s&a(i)NextiText2.Text=s數組元素a(0)到a(9)的值均為0,執行該程序段后,文本框Text2顯示的內容為“1302000100”。則文本框Text1中輸入的內容可能是()A.2020-6-09B.2020-02-28C.2020-6-01D.2019-01-072.有如下VB程序段:a(1)=1:a(2)=1:b(1)=1:b(2)=2Fori=3To5a(i)=a(i-1)+a(i-2)b(i)=b(i-1)+a(i)Nexti執行該程序段后,數組元素b(5)的值為()A.5B.8C.12D.153.有如下VB程序段:DimnAsIntegerDimsumAsIntegerDimiAsIntegerFunctionfx(iAsInteger)asIntegerIfi=1Thenfx=5Elsefx=52^(i-1)+fx(i-1)EndifEndFunctionPrivateSubCommand1_Click()n=Val(Text1.Text):sum=0Fori=1Tonsum=sum+fx(i)NextiLabel1.Caption=Str(sum)EndSub若在Text1中輸入4,單擊Command1,則Label1中顯示的內容為()A.55B.75C.80D.1304.有如下VB程序段:Dimd(1to5)asinteger,iasintegerDimflagasBoolean,jasinteger‘給數組元素d(1)至d(5)賦初值為1,代碼略RandomizeFori=1to5J=l:flag=Trued(i)=int(Rnd9)Dowhilej<=i-1andflag=Trued(i)=int(Rnd5+1)Ifd(i)=d(j)theni=i-l:flag=Falsej=j+1LoopNexti運行程序后,數組中的數據值可能是()A.13456B.35411C.83125D.126215.有如下VB程序段:a="10001":b=0:t=0Fori=1ToLen(a)c=Mid(a,i,1)Ifc="0"Thent=t-1Elset=t+1Ift<0Thenb=b2Elseb=b2+1Nexti執行該程序段后,變量b的值為()A.15B.17C.20D.246.有如下VB程序段:b=0Fora=1To10b=a+ba=a+3Nextac=a+b執行該程序段后,變量c的值為()A.15B.22C.28D.327.有如下VB程序段:n=Val(Text1.Text)i=1DoWhilen>0num=nMod16Ifnum>=0Andnum<=9ThenText2.Text=Chr(Asc("0")+num)+Text2.TextElseText2.Text=Chr(Asc("A")+num-10)+Text2.Text【來源:21·世紀·教育·網】EndIfn=n\16i=i+1Loop執行該程序段,在文本框Text1中輸入420,則文本框Text2中顯示的內容的是()A.4AB.A4C.1A4D.4A18.有如下VB程序段:Fori=2to5Forj=ito5Ifjmodi=0thena(j)=a(j)+1NextjNextiFori=1to5Ifa(i)<>1thens=str(i)+sNexti若數組a的初始值都為0,則運行該程序段后,s的值為()A.235B.14C.532D.419.有如下VB程序段:Fori=1To6a(i)=Int(Rnd()10)+1Ifa(i)Mod2=iMod2Thena(i)=a(i)+1Elsea(i)=a(i)Mod2EndIfNexti執行該程序段后,在下列選項中,a(1)~a(6)各元素可能的值是()A.0,1,1,0,0,1B.0,5,6,6,10,9C.2,3,6,7,8,11D.2,1,8,3,12,510.有如下VB程序段:PrivateSubCommand1_Click()Dima(1To6)AsInteger,iAsIntegerFori=1To6a(i)=Int(Rnd5)2+1NextiFori=2To6Step2a(i)=cha(a(i-1),a(i))NextiEndSubFunctioncha(xAsInteger,yAsInteger)AsInteger【來源:21cnjy.com】DimtAsIntegerIfx<yThent=x:x=y:y=tcha=yElsecha=x-1EndIfEndFunction執行該程序段后,在下列選項中,a(1)~a(6)各元素值可能的是()A.8,9,3,2,5,1B.7,6,5,5,3,1C.9,3,5,4,4,3D.7,3,1,0,5,411.字符串旋轉。若整型變量s、t、c的值分別為3、9、4,則下列程序執行后str1的值為()【出處:21教育名師】str1="goitfor!"str2=Mid(str1,s,t-s+1)len1=Len(str1):len2=Len(str2)c=cModlen2Fori=1Tocstr2=Mid(str2,len2,1)+Mid(str2,1,len2-1)21cnjycomNextistr1=Mid(str1,1,s-1)+str2+Mid(str1,t+1,len1-t)A.goforit!B.for!goitC.foritgo!D.itforgo!12.有如下VB程序段:Fori=1to3Forj=1to5-iIfa(j)>a(j+1)Thent=a(j):a(j)=a(j+1):a(j+1)=tEndIfNextjText1.Text=Str(a(i))+Text1.TextNexti數組元素a(1)到a(5)的值依次為“2,9,7,8,5”。若該程序段執行后,文本框Text1顯示的內容是()A.257B.987C.277D.77213.字符串s1中保存了一個單詞,字符串s2中保存了一句以空格結尾的句子,字符串s1和s2均由小寫字母組成且s2中各個單詞之間僅用空格隔開,下列程序能夠統計單詞s1在句子s2中出現的次數:i=1:j=1:cnt=0DoWhilej<=Len(s2)IfMid(s1,i,1)<>Mid(s2,j,1)ThenElseDoWhilei<=lensandj<=lens2IfMid(s1,i,1)=Mid(s2,j,1)ThenElseEndIfLooplfi=len(s1)+1AndMid(s2,j,1)=""thencnt=cnt+1EndIfi=1EndIfLoop方框中的代碼分別是:①i=1:j=j+1②i=i+1:j=j+1③j=j+1代碼從上到下正確的順序是()A.①②③B.③②①C.③①②D.②①③二、操作題14.小王設計了一個利用矩陣“翻轉法”實現矩陣逆序輸出的程序,其功能為:運行程序時,在文本框Text1中輸入矩陣大小n,點擊“產生矩陣”按鈕Command1,在列表框List1中顯示一個n×n的矩陣,該矩陣數據為隨機兩位正奇數。點擊“翻轉矩陣”按鈕Command2,該矩陣翻轉(水平翻轉和垂直翻轉均要實現)后顯示在列表框List2中,再點一次“翻轉矩陣”按鈕Command2,列表框List2中顯示的矩陣被還原為初始狀態。程序運行界面如圖所示。實現上述功能的VB程序如下,請回答下列問題:(1)在上圖的程序運行界面基礎上,再連續兩次單擊Command2按鈕,則列表框List2中第一行顯示的內容是____________________。(2)實現此程序的代碼如下,請完成程序填空。DimnAsIntegerDimLAsStringDimiasIntegerDimjasIntegerDima(1To100)AsIntegerDimb(1To100)AsIntegerPrivateSubCommand1_Click()n=Val(Text1.Text)RandomizeFori=1Tonna(i)=①+1NextiFori=1TonL=""Forj=1TonL=L+""+Str(a((i-1)n+j))NextjList1.AddItemLNextiEndSubPrivateSubCommand2_Click()List2.ClearFori=1TonL=""Forj=1Tonb((i-1)n+j)=②L=L+""+Str(b((i-1)n+j))NextjList2.AddItemLNextiFori=1Tonna(i)=③NextiEndSub15.小李編寫VB程序,功能如下:單擊“產生數組”按鈕Command1,則隨機生成10個取值范圍是1~10的正整數,分別存儲到數組a中,對數組a的元素進行升序排列,并在標簽Label1中顯示;再單擊“重復數”按鈕Command2,則在排序后的數組a中查找連續個數最多的一組重復數值,若有兩組連續重復數個數一樣多,則取數值小的一組,將重復數的數組元素下標顯示在標簽Label2中。運行界面如圖所示。21教育網(1)已知窗體名稱為Form1,要使程序加載時,窗體標題自動顯示為“統計重復數”,則可在___________(單選,填字母)事件過程中添加代碼:Form1.Caption=“統計重復數”。A.Form_Click()B.Form_Load()C.Form1_Click()D.Form1_Load()(2)實現上述功能的程序如下,請在劃線處填寫合適代碼,使程序正常運行。(3)程序加框處代碼有錯,請改正。Dima(1To10)AsIntegerDimnAsIntegerPrivateSubCommand1_Click()DimiAsIntegerxkw,jAsInteger,kAsInteger,tempAsIntegerDimsAsStringRandomizen=10Fori=1Tona(i)=Int(Rnd10)+1NextiFori=1Ton-1k=iForj=i+1TonIfa(j)<a(k)Then①NextjIfk<>iThentemp=a(i):a(i)=a(k):a(k)=tempEndIfNextis=""Fori=1Tons=s+Str(a(i))Ifi<nThens=s+","NextiLabel1.Caption=sEndSubPrivateSubCommand2_Click()DimiAsInteger,jAsInteger,kAsIntegerDimlengthAsInteger,originAsIntegerDimsAsStringk=1:origin=1:length=1Fori=2TonIfa(i)=a(i-1)Thenk=k+1Ifk>lengthThenlength=korigin=②EndIfElsek=1EndIfNextis=""Forj=originTos=s+Str(j)NextjLabel2.Caption=sEndSub16.小章想將a數組中n個元素排列成合唱隊列形態,具體方法如下:①如果n是奇數,選出所有數據中最大元素,將其放在a數組正中間位置。②從剩下待處理數據中選出最大的兩個元素,同時將較大元素放在已處理數據段的右側,較小元素放在已處理數據段的左側。2·1·c·n·j·y③反復執行操作②,直到所有數據處理完畢。按上述要求,小章編寫一個VB程序,功能如下:在文本框Text1中輸入n,單擊“生成”按鈕Command1,并在文本框List1中顯示排序前數據;單擊“排序”21世紀教育網按鈕Command2,在列表框List2中輸出處理后的結果。程序運行界面如下圖所示。(1)下列哪個選項,可以將窗體Form1標題改為:“生成合唱隊列”_____(單選,填字母:A.Form.Caption="生成合唱隊列"/B.Label1.Caption="生成合唱隊列"/C.Form1.Caption="生成合唱隊列")(2)實現上述功能的VB程序如下,請在劃線處①②③填入合適代碼。①________________②________________③________________(3)程序加框處代碼有錯,請改正。改正:__________________Dima(1To100)AsIntegerDimnAsIntegerPrivateSubCommand1_Click()'在文本框Text1中輸入n(n<=100)'排序前數據存儲在數組a中,并在文本框List1中顯示'代碼略EndSubPrivateSubCommand2_Click()DimiAsInteger,jAsInteger,tAsIntegerDimpMax1AsInteger,pMax2AsIntegerpMax1=n\2+1:pMax2=n\2If①ThenFori=1TonIfa(i)>a(pMax1)Thent=a(pMax1):a(pMax1)=a(i):a(i)=tNextipMax1=pMax1+1EndIfFori=1Ton\2If②Thent=a(pMax1):a(pMax1)=a(pMax2):a(pMax2)=tj=pMax1Modn+121cnjy.comDoWhilej<>pMax2Ifa(j)>a(pMax1)Thent=a(pMax1):a(pMax1)=a(j):a(j)=tt=a(pMax2):a(pMax2)=a(j):a(j)=tt=a(pMax2):a(pMax2)=a(j):a(j)=tEndIf③LooppMax1=pMax1+1pMax2=pMax2-1NextiFori=1TonList2.AddItemStr(a(i))NextiEndSub17.隨機產生n個三位數,并對這些數進行索引排序。從文本框Text1中輸入n的值,在列表List1中輸出原始數據,列表框List2中輸出升序排序結果。例如,原始數據140,472,876,811,436,965,884,150數據關系如下表所示:原始數組a(i)140472876811436965884150初始化索引數組index(i)12345678排序后的索引數組index(i)14653872排序后結果140150436472811876884965(1)實現上述功能的VB程序如下,運行結果如圖所示,請在劃線處填入合適的代碼。PrivateSubCommand1_Click()DimiAsInteger,jAsInteger,nAsIntegerDima(1To100),index(1To100)AsInteger,b(1To100)AsIntegern=Val(Text1.Text)List1.Clear:List2.ClearFori=1Ton__________List1.AddItemStr(a(i))Nexti'索引排序Fori=1Tonindex(i)=iForj=1Toi-1Ifa(i)<a(j)Thenindex(i)=index(i)-1:_____21·cn·jy·comNextjNextiFori=1Ton_____NextiFori=1TonList2.AddItemStr(b(i))NextiEndSub(2)加框處代碼改為index(i)=1Forj=1tonIfa(i)>a(j)thenindex(i)=index(i)+1Nextj能否實現排序?_______(填:能/不能)18.小董編寫了一個有關“篩選操作”的VB程序,實現如下功能:在文本框Text1中顯示一組隨機生成個位數為“9”的兩位數(原始數據),在文本框Text2中輸入篩選個數,單擊“操作”按鈕Command1后,在文本框Text3中按降序顯示所篩選個數的不重復最大數據(以逗號分隔并以數據結尾),若在文本框Text2中輸入的數大于原始數據中不相同數的個數,則在文本框Text3中顯示“篩選的個數太大,請重新輸入!”。程序運行界面如圖所示。(1)如圖所示,該VB程序的窗體中共有類對象(填數字)。(2)實現上述功能的VB程序如下,請在劃線處填入合適的代碼。(3)程序中加框處代碼有錯,請改正。Const?n?=?10Dim?d(n)?As?Integer,?c?As?IntegerPrivate?Sub?Form_Load()???Dim?i?As?Integer,?j?As?Integer,?f?As?Boolean,?s?As?String????Randomize????c?=?n????For?i?=?1?To?n????????f?=?False?????????d(i)?=?①???'隨機生成個位數為“9”的兩位數www.21-cn-jy.com?????????For?j?=?1?To?i?-?1????????????If?②?Then?f?=?True2-1-c-n-j-y?????????Next?j?????????If?f?Then?c?=?c?-?1????Next?i'原始數據在文本框Text1中顯示。代碼略End?SubPrivate?Sub?Command1_Click()Dim?i?As?Integer,?j?As?Integer,?k?As?Integer,?m?As?IntegerDimcnt?As?Integer,t?As?String,?s?As?Stringd(0)?=?100cnt?=?Val(Text2.Text)????If?cnt?>?c?ThenText3.Text?=?"輸入篩選的個數太大,請重新輸入!"???Exit?Sub??????'Exit?Sub表示退出過程End?IfFor?i?=?1?To?cnt?k?=?iFor?j?=?i?+?1?To?nIf?d(j)?Next?j??????If?k?<>?i?Then????????????t?=?d(i):?d(i)?=?d(k):?d(k)?=?t??????End?IfNext?iFor?i?=?1?To?cnt??????s?=?s?+?Str(d(i))?+?","Next?iText3.Text?=?③End?Sub三、簡答題19.在“抗擊疫情,‘宅’出精彩”征文活動中,每位選手可以提交一篇作品?;顒右曰ピu的形式展開:每位選手對m篇作品進行打分(本人作品回避),方法如下:【版權所有:21教育】①用1-n數字代表n個作品,打亂順序后分配給n個選手。分配方案保存在數組a中,如圖a存儲了兩組分配方案(n=5)。在第一個分配方案中把4號作品分配給1號參賽者,1號作品分配給2號參賽者(選手編號與序號錯開)……。41523a(1)~a(n)中存儲第一個分配方案23451a(n+1)~a(2n)中存儲第二個分配方案↑第i列中的作品拿給i號參賽者打分圖a②分配方案的形成方法:將1~n之間的隨機數字依次放到第1個位置、第2個位置……,隨機數不能與位置號相同,并且要防止分配沖突,如前三個分配序號是“234”,那么在第4位上只能放“5”(如放“1”會導致第5個位置沒有符合要求的數字,因此位置n-1需要判斷數“n”是否已經分配,如果未分配,位置n-1放置數“n”),最終方案“23451”。③評m個作品需要m個分配方案。方案間要避免同一個人拿到重復的作品。如第16題圖a第3行上的數據“51234”不符合要求,因為會使第2號選手重復拿到1號作品。小明依據上述方法設計了VB程序,功能如下:在文本框Text1和Text2分別輸入參賽人數和每人打分的作品數量,單擊“分配”按鈕Command1,在列表框List1中輸出結果。程序運行效果如圖b所示。請回答下列問題:(1)n=5,m=3,a(1)~a(10)中的數據如圖a所示,a(11)~a(15)的數據可能是(單選,填字母:A.54312/B.54132/C.34512)(2)請在劃線處填入合適的代碼。DimnAsInteger'總人數/總作品數DimmAsInteger'每人分配篇數Dima(1To500)AsInteger'數組a大小滿足處理要求Dimc(1To100)AsInteger'數組c大小滿足處理要求PrivateSubCommand1_Click()DimiAsInteger,jAsInteger,kAsIntegern=Val(Text1.Text):m=Val(Text2.Text)Randomizei=1DoWhilei<=mForj=1Tonc(j)=0'本輪分配方案中還沒有數字j,c(j)=0,否則c(j)=1NextjForj=1TonIfj=n-1Andc(n)=0Then①Elsek=r(n,j)EndIfa((i-1)n+j)=k'分配數字k到當前方案的第j個位置上c(k)=1NextjIf②Theni=i+121教育名師原創作品Loops=""Fori=1Tons="參賽者"&i&":"Forj=1Toms=s+Str(a((j-1)n+i))+","NextjList1.AddItemss=""NextiEndSubFunctionr(xAsInteger,yAsInteger)AsIntegerwww-2-1-cnjy-com'生成一個取值在[1,x]之間,可以放在y位置上的隨機數,滿足條件r<>yandc(r)=0EndFunctionFunctioncheck(cAsInteger)AsBoolean'本輪方案和前面幾次的分配方案比較,如果有人分到了重復作品,返回FALSEDimpAsInteger,fAsBooleanf=Truep=1Fori=1TocnIf③Thenf=False:ExitForEndIfp=pmodn+1Nexticheck=fEndFunction四、填空題20.某學校要對班主任進行滿意度調查,有20個評分項(為方便程序處理,評分項具體的名稱本題中不顯示,僅以序號代替),每個評分項學生可以打A、B、C三個等級中的一個,現在已經收集所有學生對班主任的評價,為了保證隱私,不顯示學生姓名,只顯示班級,并存儲在數據庫的表中,點擊command2(讀取數據),讀取原始數據顯示在左側list1中,左側列表顯示的原始評價數據第一條表示高二(01)班有1位同學在第9項給班主任打A,依次類推,點擊command1(統計),統計出各項目的評價統計(A+B所占的百分比)。(1)根據以下代碼可知,本程序訪問的數據庫名稱是___________(2)完成劃線處的代碼填空:Dimclassname(1To8000)AsString'存儲原始數據中的班級名稱Dimselectabc(1To8000)AsString'存儲原始數據選項的值Dimxiangmu(1To8000)AsString'存儲原始數據選項的序號DimnAsIntegerPrivateSubCommand2_Click()'從數據庫讀取數據,并且按班級名稱排序DimconnAsNewADODB.Connectionconn.ConnectionString="provider=microsoft.ace.oledb.12.0;datasource="&App.Path&"\pingjia.accdb"21·世紀教育網conn.OpenDimrsAsNewADODB.RecordsetSetrs.ActiveConnection=connrs.Open"selectfromdata"n=0'記錄評價的總條數'讀取數據,并按班級排序,代碼略EndSubPrivateSubCommand1_Click()Dimcstart(1To50)AsInteger'存儲每個班級在數組classname中的起始位置Dimcend(1To50)AsInteger'存儲每個班級在數組classname中的末尾位置DimkAsInteger'存儲班級數量Dimtestall(1To20)AsInteger'存儲每一項總選擇人數,例如testall(1)里存儲這評價項目1里的總人數,testc(1)里存儲評價項目1里選C的人數Dimtestc(1To20)AsInteger'存儲每一題(項)選c的人數'確定每個班級的起止位置,存儲到cstart數組和cend數組cstart(1)=1temp=classname(1)k=1Fori=1TonIfclassname(i)<>tempThen________________k=k+1cstart(k)=itemp=classname(i)EndIfNexticend(k)=nFori=1Tok'每個班級分別統計評價項目_________________Forq=1To20'對testall和testc數組初始化,testall(q)=0testc(q)=0NextqForj=cstart(i)Tocend(i)'對第i個班級進行統計testall(xiangmu(j))=testall(xiangmu(j))+121世紀教育網版權所有Ifselectabc(j)="C"Then_________________21cnjycomNextjForp=1To20'統計完成后輸出這個班級的20個項目的A+B所占百分比s=s&""&Str(Round((testall(p)-testc(p))/testall(p)100,1))NextpList2.AddItemsNextiEndSub21世紀教育網www.21cnjy.com精品試卷·第2頁(共2頁)21世紀教育網(www.21cnjy.com)中小學教育資源及組卷應用平臺4.4.4循環控制的應用-粵教版(2019)高中信息技術必修一練習學校:___________姓名:___________班級:___________考號:___________一、選擇題1.有如下VB程序段:Fori=1ToLen(Text1.Text)c=Mid(Text1.Text,i,1)Ifc>="0"Andc<="9"Thenx=Val(c)a((x+1)Mod10)=a((x+1)Mod10)+1EndIfNextis=""Fori=0To9s=s&a(i)NextiText2.Text=s數組元素a(0)到a(9)的值均為0,執行該程序段后,文本框Text2顯示的內容為“1302000100”。則文本框Text1中輸入的內容可能是()A.2020-6-09B.2020-02-28C.2020-6-01D.2019-01-07【答案】A【解析】【分析】【詳解】本題考查VB程序段。該VB程序段對Text1中的數字字符進行桶排序,對數字x的排序規則為a((x+1)Mod10)=a((x+1)Mod10)+1。最后在文本框Text2依次輸出a(0)~a(9)的值,從輸出結果1302000100知,文本框Text1中含有1個9,3個0,2個2,1個6,不包含其余數字,四個選項中,只有A符合要求。21教育網2.有如下VB程序段:a(1)=1:a(2)=1:b(1)=1:b(2)=2Fori=3To5a(i)=a(i-1)+a(i-2)b(i)=b(i-1)+a(i)Nexti執行該程序段后,數組元素b(5)的值為()A.5B.8C.12D.15【答案】C【解析】【分析】【詳解】本題考查VB程序段。i=3時,a(3)=2,b(3)=4。i=4時,a(4)=3,b(4)=7。i=5時,a(5)=5,b(5)=12。故本題選C。3.有如下VB程序段:DimnAsIntegerDimsumAsIntegerDimiAsIntegerFunctionfx(iAsInteger)asIntegerIfi=1Thenfx=5Elsefx=52^(i-1)+fx(i-1)EndifEndFunctionPrivateSubCommand1_Click()n=Val(Text1.Text):sum=0Fori=1Tonsum=sum+fx(i)NextiLabel1.Caption=Str(sum)EndSub若在Text1中輸入4,單擊Command1,則Label1中顯示的內容為()A.55B.75C.80D.130【答案】D【解析】【分析】【詳解】本題考查對遞歸算法的掌握。遞歸即調用自身函數在函數中,每次循環調用52^(i-1)+f(i-1),當i為1時,直接返回5,作為遞歸邊界。i等于4,則第一次計算f函數得到f(4)=40+f(3),得到f(3)=20+f(2),再次計算f(2)得到f(2)=15,因此f(1)=5,f(2)=15,f(3)=35,f(4)=75,四個數累加為130。故選D。4.有如下VB程序段:Dimd(1to5)asinteger,iasintegerDimflagasBoolean,jasinteger‘給數組元素d(1)至d(5)賦初值為1,代碼略RandomizeFori=1to5J=l:flag=Trued(i)=int(Rnd9)Dowhilej<=i-1andflag=Trued(i)=int(Rnd5+1)Ifd(i)=d(j)theni=i-l:flag=Falsej=j+1LoopNexti運行程序后,數組中的數據值可能是()A.13456B.35411C.83125D.12621【答案】C【解析】【詳解】本題考查的是VB綜合應用。For循環的作用控制產生d(i)的次數,由d(i)=int(Rnd9)及whilej<=i-1,可知第一個元素的取值范圍是[0,8],每次Do循環j的值從1到i-1,每次隨機產生一個整數d(i),一方面d(i)的范圍是[1,5],另一方面,每次產生的隨機數與前面一個不重復,否則重新產生。故可以排除選項ABD,選項C正確。5.有如下VB程序段:a="10001":b=0:t=0Fori=1ToLen(a)c=Mid(a,i,1)Ifc="0"Thent=t-1Elset=t+1Ift<0Thenb=b2Elseb=b2+1Nexti執行該程序段后,變量b的值為()A.15B.17C.20D.24【答案】D【解析】【分析】【詳解】本題考查VB程序段。i12345c10001t10-1-2-1b1361224故最終b=24,本題選D。6.有如下VB程序段:b=0Fora=1To10b=a+ba=a+3Nextac=a+b執行該程序段后,變量c的值為()A.15B.22C.28D.32【答案】C【解析】【詳解】本題考查VB循環語句。第一次循環,a=1,b=1,a=4,執行nexta后,a=5。第二次循環,a=5,b=6,a=8,執行nexta后,a=9。第三次循環,a=9,b=15,a=12,執行nexta后,a=13。c=a+b=15+13=28,故本題選C。7.有如下VB程序段:n=Val(Text1.Text)i=1DoWhilen>0num=nMod16Ifnum>=0Andnum<=9ThenText2.Text=Chr(Asc("0")+num)+Text2.TextElseText2.Text=Chr(Asc("A")+num-10)+Text2.Textwww.21-cn-jy.comEndIfn=n\16i=i+1Loop執行該程序段,在文本框Text1中輸入420,則文本框Text2中顯示的內容的是()A.4AB.A4C.1A4D.4A1【答案】C【解析】【分析】【詳解】本題考查循環語句,選擇語句。num4101n420261Text2.Text4A41A4最后可知,選項C為正確選項。8.有如下VB程序段:Fori=2to5Forj=ito5Ifjmodi=0thena(j)=a(j)+1NextjNextiFori=1to5Ifa(i)<>1thens=str(i)+sNexti若數組a的初始值都為0,則運行該程序段后,s的值為()A.235B.14C.532D.41【答案】D【解析】【詳解】本題考查循環語句。i=2,j=2to5。a(2)=1,a(4)=1。i=3,j=3to5,a(3)=1。i=4,j=4to5,a(4)=2。i=5,a(5)=1。綜上,a(1)=0,a(2)=1,a(3)=1,a(4)=2,a(5)=1。故s的值為41,本題選D?!緛碓矗?1·世紀·教育·網】9.有如下VB程序段:Fori=1To6a(i)=Int(Rnd()10)+1Ifa(i)Mod2=iMod2Thena(i)=a(i)+1Elsea(i)=a(i)Mod2EndIfNexti執行該程序段后,在下列選項中,a(1)~a(6)各元素可能的值是()A.0,1,1,0,0,1B.0,5,6,6,10,9C.2,3,6,7,8,11D.2,1,8,3,12,5【答案】C【解析】【詳解】本題考查VB程序綜合能力,循環語句,選擇語句。外循環Fori=1To6,循環總共執行六次。根據a(i)=Int(Rnd()10)+1,a(i)數組的初值范圍應該是[1,10],而在后面的語句中有a(i)=a(i)+1,故a(i)的最大值應該不會超過11,故先將選項D排除。再根據判斷Ifa(i)Mod2=iMod2Then,若a(i)的奇偶性和i相同,則a(i)=a(i)+1,否則a(i)=a(i)Mod2。不妨分類討論,當i=1,3,5的時候,若a(i)是奇數,則a(i)=a(i)+1變為偶數,否則執行a(i)=a(i)Mod2,則a(i)=0。所以第1,3,5項是偶數或者0,根據這個可將A排除。再根據i=2,4,6時,a(i)是奇數或者a(i)=1,結合判斷可將B排除。故本題最終C是正確選項。21·世紀教育網10.有如下VB程序段:PrivateSubCommand1_Click()Dima(1To6)AsInteger,iAsIntegerFori=1To6a(i)=Int(Rnd5)2+1NextiFori=2To6Step2a(i)=cha(a(i-1),a(i))NextiEndSubFunctioncha(xAsInteger,yAsInteger)AsIntegerDimtAsIntegerIfx<yThent=x:x=y:y=tcha=yElsecha=x-1EndIfEndFunction執行該程序段后,在下列選項中,a(1)~a(6)各元素值可能的是()A.8,9,3,2,5,1B.7,6,5,5,3,1C.9,3,5,4,4,3D.7,3,1,0,5,4【答案】D【解析】【詳解】本題考查VB程序段。根據第一個循環內a(i)=Int(Rnd5)2+1,可知,a數組是[1,9]中的奇數。又根據第二個循環可知i=2,4,6,又a(i)=cha(a(i-1),a(i)),兩種情況,若a(i-1)=a(i),則a(i)=a(i-1)-1,會出現a(i-1)>a(i),綜合兩種情況,必定有a(i-1)>a(i)。A中8,9不會出現,B中5,5不會出現,C中4,3不會出現,只能選D。11.字符串旋轉。若整型變量s、t、c的值分別為3、9、4,則下列程序執行后str1的值為()str1="goitfor!"str2=Mid(str1,s,t-s+1)len1=Len(str1):len2=Len(str2)c=cModlen2Fori=1Tocstr2=Mid(str2,len2,1)+Mid(str2,1,len2-1)2·1·c·n·j·yNextistr1=Mid(str1,1,s-1)+str2+Mid(str1,t+1,len1-t)A.goforit!B.for!goitC.foritgo!D.itforgo!【答案】A【解析】【分析】【詳解】本題考查VB程序段。i01234Str2itforitfooritfforitforit(第一個字符為空格)Str1goforit!故本題選A。12.有如下VB程序段:Fori=1to3Forj=1to5-iIfa(j)>a(j+1)Thent=a(j):a(j)=a(j+1):a(j+1)=tEndIfNextjText1.Text=Str(a(i))+Text1.TextNexti數組元素a(1)到a(5)的值依次為“2,9,7,8,5”。若該程序段執行后,文本框Text1顯示的內容是()21·cn·jy·comA.257B.987C.277D.772【答案】D【解析】【詳解】本題考查冒泡排序。根據外循環可知,循環執行3趟,根據內循環可知,排序方向為從上往下,結合Ifa(j)>a(j+1)Then可知,將數值更大的往下換,形成升序排序。i=1時,a(1)=2,i=2時,a(2)=7,i=3時,a(3)=7。故最終text1中為772。本題選D。www-2-1-cnjy-com13.字符串s1中保存了一個單詞,字符串s2中保存了一句以空格結尾的句子,字符串s1和s2均由小寫字母組成且s2中各個單詞之間僅用空格隔開,下列程序能夠統計單詞s1在句子s2中出現的次數:【出處:21教育名師】i=1:j=1:cnt=0DoWhilej<=Len(s2)IfMid(s1,i,1)<>Mid(s2,j,1)ThenElseDoWhilei<=lensandj<=lens2IfMid(s1,i,1)=Mid(s2,j,1)ThenElseEndIfLooplfi=len(s1)+1AndMid(s2,j,1)=""thencnt=cnt+1EndIfi=1EndIfLoop方框中的代碼分別是:①i=1:j=j+1②i=i+1:j=j+1③j=j+1代碼從上到下正確的順序是()A.①②③B.③②①C.③①②D.②①③【答案】B【解析】【詳解】本題考查VB程序段。第一空,當IfMid(s1,i,1)<>Mid(s2,j,1)Then成立時,那么j變量向后移動一個位置,重新開始判斷,故填入j=j+1。第二空,當IfMid(s1,i,1)=Mid(s2,j,1)Then成立時,i和j都往后移動,故填入i=i+1:j=j+1。第三空,表示i回到s1的起始位置,重新檢測,故填入i=1:j=j+1。結合上述分析,本題選B。二、操作題14.小王設計了一個利用矩陣“翻轉法”實現矩陣逆序輸出的程序,其功能為:運行程序時,在文本框Text1中輸入矩陣大小n,點擊“產生矩陣”按鈕Command1,在列表框List1中顯示一個n×n的矩陣,該矩陣數據為隨機兩位正奇數。點擊“翻轉矩陣”按鈕Command2,該矩陣翻轉(水平翻轉和垂直翻轉均要實現)后顯示在列表框List2中,再點一次“翻轉矩陣”按鈕Command2,列表框List2中顯示的矩陣被還原為初始狀態。程序運行界面如圖所示。實現上述功能的VB程序如下,請回答下列問題:(1)在上圖的程序運行界面基礎上,再連續兩次單擊Command2按鈕,則列表框List2中第一行顯示的內容是____________________。(2)實現此程序的代碼如下,請完成程序填空。DimnAsIntegerDimLAsStringDimiasIntegerDimjasIntegerDima(1To100)AsIntegerDimb(1To100)AsIntegerPrivateSubCommand1_Click()n=Val(Text1.Text)RandomizeFori=1Tonna(i)=①+1NextiFori=1TonL=""Forj=1TonL=L+""+Str(a((i-1)n+j))NextjList1.AddItemLNextiEndSubPrivateSubCommand2_Click()List2.ClearFori=1TonL=""Forj=1Tonb((i-1)n+j)=②L=L+""+Str(b((i-1)n+j))NextjList2.AddItemLNextiFori=1Tonna(i)=③NextiEndSub【答案】(1)9943334975(2)①int(rnd45+5)2②a((n-i+1)n-j+1)③b(i)【解析】【分析】【詳解】本題考查VB綜合能力。(1)在圖示的程序運行界面基礎上,單擊command2按鈕一次,回到初始狀態,再單擊一次,實現翻轉,結果為圖示list2的第一行。(2)①兩位奇數范圍是11到99,兩位奇數是兩位偶數加1,兩位偶然范圍是10到98,先求出5到49的整數,乘以2得到兩位偶數,加1得到兩位奇數。②水平翻轉和垂直翻轉均要實現,行與行上下換,列與列左右換,控制行號是i變量,n-i+1為翻轉后的的行號,(n-i+1)n算出翻轉后每一行元素的首元素坐標,首元素坐標-j+1為每一行后面元素的坐標。③題目要求再點一次“翻轉矩陣”按鈕command2,列表框list2中顯示的矩陣被還原為初始狀態,所以要把存放翻轉后矩陣的數據b(i)賦值給a(i)繼續翻轉。15.小李編寫VB程序,功能如下:單擊“產生數組”按鈕Command1,則隨機生成10個取值范圍是1~10的正整數,分別存儲到數組a中,對數組a的元素進行升序排列,并在標簽Label1中顯示;再單擊“重復數”按鈕Command2,則在排序后的數組a中查找連續個數最多的一組重復數值,若有兩組連續重復數個數一樣多,則取數值小的一組,將重復數的數組元素下標顯示在標簽Label2中。運行界面如圖所示。21世紀教育網版權所有(1)已知窗體名稱為Form1,要使程序加載時,窗體標題自動顯示為“統計重復數”,則可在___________(單選,填字母)事件過程中添加代碼:Form1.Caption=“統計重復數”。A.Form_Click()B.Form_Load()C.Form1_Click()D.Form1_Load()(2)實現上述功能的程序如下,請在劃線處填寫合適代碼,使程序正常運行。(3)程序加框處代碼有錯,請改正。Dima(1To10)AsIntegerDimnAsIntegerPrivateSubCommand1_Click()DimiAsIntegerxkw,jAsInteger,kAsInteger,tempAsIntegerDimsAsStringRandomizen=10Fori=1Tona(i)=Int(Rnd10)+1NextiFori=1Ton-1k=iForj=i+1TonIfa(j)<a(k)Then①NextjIfk<>iThentemp=a(i):a(i)=a(k):a(k)=tempEndIfNextis=""Fori=1Tons=s+Str(a(i))Ifi<nThens=s+","NextiLabel1.Caption=sEndSubPrivateSubCommand2_Click()DimiAsInteger,jAsInteger,kAsIntegerDimlengthAsInteger,originAsIntegerDimsAsStringk=1:origin=1:length=1Fori=2TonIfa(i)=a(i-1)Thenk=k+1Ifk>lengthThenlength=korigin=②EndIfElsek=1EndIfNextis=""Forj=originTos=s+Str(j)NextjLabel2.Caption=sEndSub【答案】(1)B(2)①k=j②i-length+1或i-k+1(3)origin+length-1【解析】【分析】【詳解】本題考查VB綜合能力。(1)窗體載入事件的考查,窗體載入事件處理過程為form_load(),對象名不會隨著窗體名的改變而改變。(2)①本題主要考查排序算法知識,根據代碼分析,此處要實現的用k變量記錄最小數的位置,實現a(k)和a(i)的數值交換功能,因此答案是k=j,這樣,數組成員a(j)中的最小值下標記錄在k變量中。②分析代碼可知,此處實現重復數起始位置的計算,重復數起始位置為當前數組元素位置減去重復數長度加1。答案為i-length+1或i-k+1(3)此處判斷重復數的終止位置,長度=終止位置-起始位置+1,因此終止位置=起始位置+長度-1,即為origin+length-1或length+origin-1。16.小章想將a數組中n個元素排列成合唱隊列形態,具體方法如下:①如果n是奇數,選出所有數據中最大元素,將其放在a數組正中間位置。②從剩下待處理數據中選出最大的兩個元素,同時將較大元素放在已處理數據段的右側,較小元素放在已處理數據段的左側。③反復執行操作②,直到所有數據處理完畢。按上述要求,小章編寫一個VB程序,功能如下:在文本框Text1中輸入n,單擊“生成”按鈕Command1,并在文本框List1中顯示排序前數據;單擊“排序”21世紀教育網按鈕Command2,在列表框List2中輸出處理后的結果。程序運行界面如下圖所示。(1)下列哪個選項,可以將窗體Form1標題改為:“生成合唱隊列”_____(單選,填字母:A.Form.Caption="生成合唱隊列"/B.Label1.Caption="生成合唱隊列"/C.Form1.Caption="生成合唱隊列")(2)實現上述功能的VB程序如下,請在劃線處①②③填入合適代碼。①________________②________________③________________(3)程序加框處代碼有錯,請改正。改正:__________________Dima(1To100)AsIntegerDimnAsIntegerPrivateSubCommand1_Click()'在文本框Text1中輸入n(n<=100)'排序前數據存儲在數組a中,并在文本框List1中顯示'代碼略EndSubPrivateSubCommand2_Click()DimiAsInteger,jAsInteger,tAsIntegerDimpMax1AsInteger,pMax2AsIntegerpMax1=n\2+1:pMax2=n\2If①ThenFori=1TonIfa(i)>a(pMax1)Thent=a(pMax1):a(pMax1)=a(i):a(i)=tNextipMax1=pMax1+1EndIfFori=1Ton\2If②Thent=a(pMax1):a(pMax1)=a(pMax2):a(pMax2)=tj=pMax1Modn+1DoWhilej<>pMax2Ifa(j)>a(pMax1)Thent=a(pMax1):a(pMax1)=a(j):a(j)=tt=a(pMax2):a(pMax2)=a(j):a(j)=tt=a(pMax2):a(pMax2)=a(j):a(j)=tEndIf③LooppMax1=pMax1+1pMax2=pMax2-1NextiFori=1TonList2.AddItemStr(a(i))NextiEndSub【答案】C①nMod2=1或nmod2<>0②a(pMax1)<a(pMax2)③j=jModn+1ElseIfa(j)>a(pMax2)Then【解析】【詳解】本題考查VB綜合能力。(1)將窗體Form1標題改為“生成合唱隊列”,語句為Form1.Caption="生成合唱隊列"。(2)根據題干,如果n是奇數,選出所有數據中最大元素,將其放在a數組正中間位置。故填入nMod2=1。(3)挑選出最大的數放入pmax1中,故需要先比較pmax1和pmax2的大小,填入a(pMax1)Modn+1。(5)改錯語句判斷是在pmax1和pmax2之間,故改為ElseIfa(j)>a(pMax2)Then。17.隨機產生n個三位數,并對這些數進行索引排序。從文本框Text1中輸入n的值,在列表List1中輸出原始數據,列表框List2中輸出升序排序結果。例如,原始數據140,472,876,811,436,965,884,150數據關系如下表所示:原始數組a(i)140472876811436965884150初始化索引數組index(i)12345678排序后的索引數組index(i)14653872排序后結果140150436472811876884965(1)實現上述功能的VB程序如下,運行結果如圖所示,請在劃線處填入合適的代碼。PrivateSubCommand1_Click()DimiAsInteger,jAsInteger,nAsIntegerDima(1To100),index(1To100)AsInteger,b(1To100)AsIntegern=Val(Text1.Text)List1.Clear:List2.ClearFori=1Ton__________List1.AddItemStr(a(i))Nexti'索引排序Fori=1Tonindex(i)=iForj=1Toi-1Ifa(i)<a(j)Thenindex(i)=index(i)-1:_____21cnjycomNextjNextiFori=1Ton_____NextiFori=1TonList2.AddItemStr(b(i))NextiEndSub(2)加框處代碼改為index(i)=1Forj=1tonIfa(i)>a(j)thenindex(i)=index(i)+1Nextj能否實現排序?_______(填:能/不能)【答案】①a(i)=100+int(rnd900)②index(j)=index(j)+1③b(index(i))=a(i)不能【解析】【詳解】本題考查索引排序。(1)隨機產生三位數,故填入a(i)=100+int(rnd900)。(2)a(i)18.小董編寫了一個有關“篩選操作”的VB程序,實現如下功能:在文本框Text1中顯示一組隨機生成個位數為“9”的兩位數(原始數據),在文本框Text2中輸入篩選個數,單擊“操作”按鈕Command1后,在文本框Text3中按降序顯示所篩選個數的不重復最大數據(以逗號分隔并以數據結尾),若在文本框Text2中輸入的數大于原始數據中不相同數的個數,則在文本框Text3中顯示“篩選的個數太大,請重新輸入!”。程序運行界面如圖所示。(1)如圖所示,該VB程序的窗體中共有類對象(填數字)。(2)實現上述功能的VB程序如下,請在劃線處填入合適的代碼。(3)程序中加框處代碼有錯,請改正。Const?n?=?10Dim?d(n)?As?Integer,?c?As?IntegerPrivate?Sub?Form_Load()???Dim?i?As?Integer,?j?As?Integer,?f?As?Boolean,?s?As?String????Randomize????c?=?n????For?i?=?1?To?n????????f?=?False?????????d(i)?=?①???'隨機生成個位數為“9”的兩位數21cnjy.com?????????For?j?=?1?To?i?-?1????????????If?②?Then?f?=?True?????????Next?j?????????If?f?Then?c?=?c?-?1????Next?i'原始數據在文本框Text1中顯示。代碼略End?SubPrivate?Sub?Command1_Click()Dim?i?As?Integer,?j?As?Integer,?k?As?Integer,?m?As?IntegerDimcnt?As?Integer,t?As?String,?s?As?Stringd(0)?=?100cnt?=?Val(Text2.Text)????If?cnt?>?c?ThenText3.Text?=?"輸入篩選的個數太大,請重新輸入!"???Exit?Sub??????'Exit?Sub表示退出過程End?IfFor?i?=?1?To?cnt?k?=?iFor?j?=?i?+?1?To?nIf?d(j)?Next?j??????If?k?<>?i?Then????????????t?=?d(i):?d(i)?=?d(k):?d(k)?=?t??????End?IfNext?iFor?i?=?1?To?cnt??????s?=?s?+?Str(d(i))?+?","Next?iText3.Text?=?③End?Sub【答案】(1)3(2)①Int(Rnd9)10+19或者Int(Rnd9+1)10+9②d(i)=d(j)③Mid(s,1,Len(s)-1)或Mid(s,1,Len(s)-2)(3)d(k)<d(j)Ord(k)>=d(i-1)【解析】【詳解】本題考查VB綜合能力。(1)該VB程序的窗體中共有3類對象,標簽,文本框和按鈕。(2)代碼第一空,隨機生成個位數為9的兩位數,故填入Int(Rnd9)10+19。(2)代碼第二空,判斷當前產生的數是否重復,故填入d(i)=d(j)。(3)代碼第三空將最后的逗號去掉,填入Mid(s,1,Len(s)-1)。(4)改錯語句要注意不能和之前有重復,或者大于之前的數,在剩余的數中尋找最大的即可。故填入d(k)Ord(k)>=d(i-1)。【版權所有:21教育】三、簡答題19.在“抗擊疫情,‘宅’出精彩”征文活動中,每位選手可以提交一篇作品?;顒右曰ピu的形式展開:每位選手對m篇作品進行打分(本人作品回避),方法如下:①用1-n數字代表n個作品,打亂順序后分配給n個選手。分配方案保存在數組a中,如圖a存儲了兩組分配方案(n=5)。在第一個分配方案中把4號作品分配給1號參賽者,1號作品分配給2號參賽者(選手編號與序號錯開)……。41523a(1)~a(n)中存儲第一個分配方案23451a(n+1)~a(2n)中存儲第二個分配方案↑第i列中的作品拿給i號參賽者打分圖a②分配方案的形成方法:將1~n之間的隨機數字依次放到第1個位置、第2個位置……,隨機數不能與位置號相同,并且要防止分配沖突,如前三個分配序號是“234”,那么在第4位上只能放“5”(如放“1”會導致第5個位置沒有符合要求的數字,因此位置n-1需要判斷數“n”是否已經分配,如果未分配,位置n-1放置數“n”),最終方案“23451”。③評m個作品需要m個分配方案。方案間要避免同一個人拿到重復的作品。如第16題圖a第3行上的數據“51234”不符合要求,因為會使第2號選手重復拿到1號作品。小明依據上述方法設計了VB程序,功能如下:在文本框Text1和Text2分別輸入參賽人數和每人打分的作品數量,單擊“分配”按鈕Command1,在列表框List1中輸出結果。程序運行效果如圖b所示。請回答下列問題:(1)n=5,m=3,a(1)~a(10)中的數據如圖a所示,a(11)~a(15)的數據可能是(單選,填字母:A.54312/B.54132/C.34512)(2)請在劃線處填入合適的代碼。DimnAsInteger'總人數/總作品數DimmAsInteger'每人分配篇數Dima(1To500)AsInteger'數組a大小滿足處理要求Dimc(1To100)AsInteger'數組c大小滿足處理要求PrivateSubCommand1_Click()DimiAsInteger,jAsInteger,kAsIntegern=Val(Text1.Text):m=Val(Text2.Text)Randomizei=1DoWhilei<=mForj=1Tonc(j)=0'本輪分配方案中還沒有數字j,c(j)=0,否則c(j)=1NextjForj=1TonIfj=n-1Andc(n)=0Then①Elsek=r(n,j)EndIfa((i-1)n+j)=k'分配數字k到當前方案的第j個位置上c(k)=1NextjIf②Theni=i+1【來源:21cnjy.com】Loops=""Fori=1Tons="參賽者"&i&":"Forj=1Toms=s+Str(a((j-1)n+i))+","NextjList1.AddItemss=""NextiEndSubFunctionr(xAsInteger,yAsInteger)AsInteger'生成一個取值在[1,x]之間,可以放在y位置上的隨機數,滿足條件r<>yandc(r)=0EndFunctionFunctioncheck(cAsInteger)AsBoolean'本輪方案和前面幾次的分配方案比較,如果有人分到了重復作品,返回FALSEDimpAsInteger,fAsBooleanf=Truep=1Fori=1TocnIf③Thenf=False:ExitForEndIfp=pmodn+1Nexticheck=fEndFunction【答案】(1)B(2)①k=n②check(i-1)③a(i)=a(cn+p)【解析】【詳解】本題考查VB綜合能力,循環語句,自定義函數。(1)根據題意,評m個作品需要m個分配方案。方案間要避免同一個人拿到重復的作品。A選項,3號選手會拿到自己的作品。B選項可以。C選項,3號選手會重復拿到5號作品。故此題選B。(2)根據條件Ifj=n-1Andc(n)=0Then,在第i行,第j列時,若j=n-1,并且此時c(n)=0,意味著第n號作品沒有分配,而n號作品不能分給第n號選手,故n號作品只能分給n-1號選手,所以此空填入k=n。(3)此處判斷語句判斷該方案時候符合條件,代入自定義函數中判斷,填入check(i-1)。(4)自定義函數check的作用,根據注釋語句得知,函數是讓本輪方案和前面幾次的分配方案比較,判斷是否有重復,a(cn+p)表示當前方案中的每一個編號,要和之前的所有數據逐一比較,故填入a(i)=a(cn+p)。四、填空題20.某學校要對班主任進行滿意度調查,有20個評分項(為方便程序處理,評分項具體的名稱本題中不顯示,僅以序號代替),每個評分項學生可以打A、B、C三個等級中的一個,現在已經收集所有學生對班主任的評價,為了保證隱私,不顯示學生姓名,只顯示班級,并存儲在數據庫的表中,點擊command2(讀取數據),讀取原始數據顯示在左側list1中,左側列表顯示的原始評價數據第一條表示高二(01)班有1位同學在第9項給班主任打A,依次類推,點擊command1(統計),統計出各項目的評價統計(A+B所占的百分比)。(1)根據以下代碼可知,本程序訪問的數據庫名稱是___________(2)完成劃線處的代碼填空:Dimclassname(1To8000)AsString'存儲原始數據中的班級名稱Dimselectabc(1To8000)AsString'存儲原始數據選項的值Dimxiangmu(1To8000)AsString'存儲原始數據選項的序號DimnAsIntegerPrivateSubCommand2_Click()'從數據庫讀取數據,并且按班級名稱排序DimconnAsNewADODB.Connectionconn.ConnectionString="provider=microsoft.ace.oledb.12.0;datasource="&App.Path&"\pingjia.accdb"2-1-c-n-j-yconn.OpenDimrsAsNewADODB.RecordsetSetrs.ActiveConnection=connrs.Open"selectfromdata"n=0'記錄評價的總條數'讀取數據,并按班級排序,代碼略EndSubPrivateSubCommand1_Click()Dimcstart(1To50)AsInteger'存儲每個班級在數組classname中的起始位置Dimcend(1To50)AsInteger'存儲每個班級在數組classname中的末尾位置DimkAsInteger'存儲班級數量Dimtestall(1To20)AsInteger'存儲每一項總選擇人數,例如testall(1)里存儲這評價項目1里的總人數,testc(1)里存儲評價項目1里選C的人數Dimtestc(1To20)AsInteger'存儲每一題(項)選c的人數'確定每個班級的起止位置,存儲到cstart數組和cend數組cstart(1)=1temp=classname(1)k=1Fori=1TonIfclassname(i)<>tempThen________________k=k+1cstart(k)=itemp=classname(i)EndIfNexticend(k)=nFori=1Tok'每個班級分別統計評價項目_________________Forq=1To20'對testall和testc數組初始化,testall(q)=0testc(q)=0NextqForj=cstart(i)Tocend(i)'對第i個班級進行統計testall(xiangmu(j))=testall(xiangmu(j))+121cnjycomIfselectabc(j)="C"Then_________________NextjForp=1To20'統計完成后輸出這個班級的20個項目的A+B所占百分比s=s&""&Str(Round((testall(p)-testc(p))/testall(p)100,1))NextpList2.AddItemsNextiEndSub【答案】pingjia.accdbcend(k)=i-1s=classname(cstart(i))或s=classname(cend(i))testc(xiangmu(j))=testc(xiangmu(j))+1【解析】【分析】【詳解】本題考查VB程序綜合能力,包括題干閱讀,VB鏈接數據庫,循環嵌套,數組嵌套等。第(1)題根據conn.ConnectionString="provider=microsoft.ace.oledb.12.0;datasource="&App.Path&"\pingjia.accdb"得知,本程序訪問的數據庫名稱是pingjia.accdb。21教育名師原創作品第(2)題第一空,根據代碼最上方注釋語句,該處循環功能是確定每個班級的起止位置,存儲到cstart數組和cend數組,當classname(i)<>temp成立時,表示當前的班級temp和此時第i項的班級classname(i)已經不同,換話句話說已經到下一個班級了。因而k=k+1,cstart(k)=i,下一個班級的起始位置存放于cstart(k)中。同樣的當前班級的結束位置需要記錄,所以在第一空記錄第k個班級的結束位置,代碼為cend(k)=i-1。第二空,在整個Fori=1Tok……nexti的循環中,是對每個班級分別統計評價項目,仔細閱讀整個結構不難發現在Forp=1To20……nextp循環中,變量s在進行一次輸出后未能重置,如不重置將會一直疊加。需要將s重置,結合題干圖中list2每一行內容,可知變量s在一開始需要放入班級名稱,因而第二空代碼為:s=classname(cstart(i))或s=classname(cend(i))。第三空,根據判斷語句Ifselectabc(j)="C"Then,后續填入的是該項目評價為C的人數數量+1,因而代碼為testc(xiangmu(j))=testc(xiangmu(j))+121世紀教育網www.21cnjy.com精品試卷·第2頁(共2頁)21世紀教育網(www.21cnjy.com) 展開更多...... 收起↑ 資源列表 4.4.4循環控制的應用-粵教版(2019)高中信息技術必修一練習(原卷版).doc 4.4.4循環控制的應用-粵教版(2019)高中信息技術必修一練習(解析版).doc 縮略圖、資源來源于二一教育資源庫