資源簡介 中小學(xué)教育資源及組卷應(yīng)用平臺2.3周而復(fù)始的循環(huán)-教科版(2019)高中信息技術(shù)必修一練習(xí)學(xué)校:___________姓名:___________班級:___________考號:___________一、選擇題1.下面的程序段運(yùn)行后的結(jié)果為()s=1foriinrange(1,6,2):s=s+iprint(s)A.15B.10C.12D.92.某算法的部分流程圖如下圖所示,輸入s=11200,執(zhí)行這部分流程后,輸出m和n的值分別是()A.144B.214C.225D.4253.有兩個VB程序段,如下所示:已知程序段中①②兩處內(nèi)容相同,數(shù)組元素a(1)到a(10)的值依次為:6,43,21,78,33,16,80,45,12,90,執(zhí)行“程序段1”后,數(shù)組元素a(1)~a(10)的值依次為80,78,90,45,43,33,21,16,12,6,則下列說法正確的是()A.①和②處的填空為7B.兩程序段的比較次數(shù)不一樣,交換次數(shù)一樣C.執(zhí)行完程序段2后,數(shù)據(jù)6移動到了a(10)D.兩段程序的得到的運(yùn)行結(jié)果相同4.有如下VB程序段:i=1DoWhilei<=5a(i)=(Int(Rnd6)+5)(iMod2+1)Forj=1Toi-1Ifa(j)=a(i)Theni=i-1:ExitForNextji=i+1Loop執(zhí)行該程序段后,a(1)到a(5)各元素的值可能是()。A.18,8,16,6,12B.11,5,10,6,20C.14,10,12,10,20D.5,6,7,8,95.編寫了一個統(tǒng)計數(shù)組元素a(1)到a(n)中的“升序段”個數(shù)s。例:如圖所示的數(shù)據(jù)序列,其“升序段”的個數(shù)等于3的VB程序:k=0s=0Fori=2TonIfa(i)>a(i-1)ThenEndIfIfk=1Thens=s+1NextiTextl.Text=Str(s)方框中的代碼由以下三部分組成:①k=0②k=k+1③Else代碼順序正確的選項是()A.①③②B.②③①C.③②①D.②①③6.有如下VB程序段:Constn=10Dima(1Ton)AsInteger,b(1Ton)AsIntegerFori=1Tonb(i)=iNextiFori=2Tonj=i-1t=b(i)DoWhilea(b(j))>a(t)b(j+1)=b(j)j=j-1Ifj=0ThenExitDoLoopb(j+1)=tNexti若數(shù)組a中的數(shù)據(jù)依次為:69,16,44,17,34,46,10,29,37,51,執(zhí)行程序后,b(1)~b(10)的值為()A.35410198672B.72485936101C.58214739106D.16248971035二、操作題7.出列順序有10個人,編號分別為1,2,3……10按順時針方向圍坐成一圈,每次隨機(jī)產(chǎn)生一個數(shù)m,m的范圍為[3,7]的隨機(jī)奇數(shù),從第10個人開始逆時針報數(shù),當(dāng)報到m的人出列,圈內(nèi)剩下的人,重新產(chǎn)生隨機(jī)數(shù)m,重新開始報數(shù),如此下去,直到所有人出列為止。如:若每次參數(shù)的隨機(jī)數(shù)m都為5,從第10個開始報數(shù),依次出列的為6-1-5-9-2-3-10-7-4-8小李編寫了如下程序求解10個人的出列順序。程序運(yùn)行界面如圖1所示,點擊求解按鈕后,在Textl中輸出出列順序,在Text2中顯示隨機(jī)數(shù)據(jù)的值。(1)在劃線出填寫正確的代碼PrivateSubCommand1_Click()Dimld(1To10)AsBoolean,iAsInteger,jAsIntegerDimrsAsInteger,CAsInteger,mAsIntegerRandomizeFori=1To10ld(i)=True'數(shù)組元素為True表示第i人當(dāng)前在隊列中Nextic=0:rs=10_______m=Int(Rnd3)2+3DoWhilers<>0Ifld(i)=TrueThen_________Ifc=mThenld(i)=FalseText1.Text=Text1.Text+Str(i)___________c=0EndIfEndIfi=i-1If____________Theni=10LoopEndSub(2)加框處兩語句互換下順序,會不會對出列順序產(chǎn)生影響______(選填:會/不會)。8.求不大于n的五位正整數(shù)中,滿足高兩位與低兩位相同,且能被3除余2的所有數(shù)之和。(1)本題適用的算法是(),此算法的基本實現(xiàn)方法是()。A.枚舉算法,循環(huán)中嵌套循環(huán)B.查找算法,循環(huán)中嵌套分支C.枚舉算法,循環(huán)中嵌套分支D.查找算法,循環(huán)中嵌套循環(huán)(2)設(shè)x為五位正整數(shù),以下檢驗條件的分析,正確的是()。A.x\100=xmod100andxmod3=2B.x\1000=xmod100andxmod3=2C.x\100=xmod1000andxmod3=2D.x\1000=xmod1000andxmod3=2(3)請編寫程序,完成題目要求的功能。9.小奕同學(xué)基于排序算法設(shè)計了一個數(shù)字矩陣排序的程序。程序界面如下圖所示,在文本框中輸入矩陣大小,點擊“生成”按鈕Command1,在左側(cè)列表框List1中輸出一個長寬均為指定大小的隨機(jī)整數(shù)矩陣,隨機(jī)整數(shù)范圍為[1,99]。點擊“排序”按鈕Command2,結(jié)果輸出在右側(cè)列表框List2中,奇數(shù)行從左到右依次遞增,偶數(shù)行從右至左依次遞增,且保持輸出矩陣的長寬不變。(1)實現(xiàn)上述功能的VB程序如下,顯示數(shù)據(jù)用的additem是一種________(單選,填字母:A.屬性名/B.事件名/C.方法名/D.過程名)。(2)請在劃線處填入合適的代碼。(3)程序中加框處代碼有錯,請改正。Dima(1To100)AsIntegerDimnAsIntegerFunctiondq(sAsString,LAsInteger)AsString'自定義對齊函數(shù)Rem在輸入的字符串s前加若干空格,輸出長度為L的字符串,代碼略EndFunctionPrivateSubCommand1_Click()'生成數(shù)字矩陣'隨機(jī)生成n^2個數(shù)字,存儲在數(shù)組a中,代碼略'以一行n個,共n行的格式顯示在List1中,代碼略EndSubPrivateSubCommand2_Click'數(shù)字矩陣排序DimiAsInteger,kAsInteger,jAsInteger,sAsStringDimfAsBooleanList2.Clearf=TrueFori=1Ton^2Stepns=""Forj=iTok=n^2DoWhile①Ifa(k)<a(k-1)Thent=a(k):a(k)=a(k-1):a(k-1)=tEndIfk=k-1LoopIff=TrueThens=s+""+dq(Str(a(j)),2)Elses=s+""+dq(Str(a(j)),2)+sEndIfNextjList2.AddItems②NextiEndSub10.求最大連續(xù)子矩陣和。給出一個矩陣,序列元素有正整數(shù)、0、負(fù)整數(shù),在矩陣中限定一塊區(qū)域,并要求找到該限定區(qū)域內(nèi)的一個子矩陣,使得這個子矩陣與限定區(qū)域同寬但可能不同高,且包含的所有元素之和為限定區(qū)域矩陣中最大值,在和最大的前提下還要求該子矩陣包含的元素個數(shù)最多。算法描述如下:(1)從第一行開始向下進(jìn)行累加,累加和若大于之前的最大和,則記錄此時的最大和及結(jié)束位置;(2)若累加和等于之前的最大和,但元素個數(shù)大于之前的最大和的元素個數(shù),則記錄此連續(xù)子矩陣的結(jié)束位置;(3)若累加和小于0,則重新開始記錄;(4)若有符合條件的多個連續(xù)子矩陣,則輸出最先找到的子矩陣。小俞編寫了一個實現(xiàn)該功能的VB程序,窗體加載時生成mn個序列數(shù)據(jù),依次存放在數(shù)組a,并顯示在列表框List1中,在文本框Text1中輸入該矩陣限定區(qū)域的左上角位置,在文本框Text2中輸入右下角位置,單擊“計算”按鈕Command1后,找出連續(xù)和最大的子矩陣,在標(biāo)簽Label3上顯示最大連續(xù)子矩陣和,在Label4上顯示該連續(xù)子矩陣的元素個數(shù),在Label5上顯示該連續(xù)子矩陣開始與結(jié)束位置。程序運(yùn)行界面如圖所示。(1)在設(shè)計程序界面時,要清空文本框中的顯示內(nèi)容,應(yīng)修改文本框的___________屬性(2)VB程序代碼如下,請在劃線處填入合適的代碼。Constm=12:Constn=6Dima(1Tomn)AsIntegerPrivateSubForm_Load()'生成mn個數(shù)據(jù),并顯示在列表框List1,代碼略EndSubPrivateSubCommand1_Click()DimiAsInteger,jAsInteger,kAsInteger,tempAsIntegerDimlengthAsinteger,beginAsInteger,sumAsIntegerDimksAsString,jsAsStringDimxy(1to4)AsInteger,hsum(1tomn)AsInteger'讀取文本框Text1的數(shù)值分別存儲到數(shù)組xy(1)、xy(2),讀取文本框Text2的數(shù)值分別存儲到數(shù)組xy(3)、xy(4),xy(1)、xy(3)表示所在行,xy(2)、xy(4)表示所在列,代碼略Fori=1Toxy(3)-xy(1)+1hsum(i)=0Nexti'求限定區(qū)域內(nèi)每行數(shù)據(jù)之和Fori=1Toxy(3)-xy(1)+1Forj=1To________hsum(i)=hsum(i)+a((xy(1)+i-2)n+xy(2)+j-1)NextjNexti'找出最大連續(xù)之矩陣和temp=0:sum=0:length=0:begin=0Fori=1Toxy(3)-xy(1)+1Iftemp+hsum(i)>sumThensum=temp+hsum(i)length=i-begink=iElseIftemp+hsum(i)=sumAnd________Thenlength=i-begink=iEndIfIftemp+hsum(i)<0Thenbegin=itemp=0Elsetemp=temp+hsum(i)EndIfNextiks="("+_________+","+Str(xy(2))+")"'開始位置js="("+Str(k+xy(1)-1)+","+Str(xy(4))+")"'結(jié)束位置Label3.Caption="最大子矩陣和為:"+Str(Sum)Label4.Caption="子矩陣中的元素個數(shù)為:"+Str(length(xy(4)-xy(2)+1))Label5.Caption="子矩陣位置為:"+ks+","+jsEndSub11.使用Python自身提供的IDLE集成開發(fā)環(huán)境錄入以下代碼及調(diào)試運(yùn)行,檢測結(jié)果。#雞兔同籠forxinrange(1,23):y=35-xif4x+2y==94:print("兔子有%s只,雞有%s只"%(x,y))特別提示:代碼錄入完畢,調(diào)試運(yùn)行,檢測錯誤,討論錯誤原因,上網(wǎng)查找錯誤格式的處置辦法,直至能正確輸出結(jié)果。12.請編寫Python程序,實現(xiàn)如下功能需求:1)程序運(yùn)行后,給出文字提示:“請輸入一個正整數(shù):”2)輸入一個整數(shù)n按回車后,程序輸出從1-n所有整數(shù)中既是3的倍數(shù)又是5的倍數(shù)的數(shù)。3)不要超過5行代碼。程序運(yùn)行舉例:13.某考試的多選題有“A、B、C、D、E”5個答案選項。閱卷的評分標(biāo)準(zhǔn)為:“全部選對的得2分,選對但不全的得1分,不選或有選錯的得0分”。閱卷算法描述如下:例如,標(biāo)準(zhǔn)答案為“ABE”,則對應(yīng)得分表如下所示。學(xué)生答案ABEABAEBEABEAC......字符串1100111000100010100110000010000000110100......十進(jìn)制數(shù)(x)2524179168120......ans(x)211111100小溫依據(jù)上述描述設(shè)計了“多選題閱卷”的VB程序,實現(xiàn)如下功能:在文本框Text1中輸入標(biāo)準(zhǔn)答案(大寫字母),先單擊“初始化”按鈕Command1,在數(shù)組ans中生成所有答案組合對應(yīng)的分值,然后單擊“閱卷”按鈕Command2,從數(shù)據(jù)庫中讀取學(xué)生的答案并進(jìn)行閱卷,在列表框List1中顯示得分結(jié)果。程序運(yùn)行界面如圖所示。(1)若標(biāo)準(zhǔn)答案為“ACD”,則數(shù)組元素ans?(18)的值為(2)請在劃線處填入合適的代碼。Dim?ans(0?To?31)?As?IntegerPrivate?Sub?Command1_Click()Dim?b(0?To?4)?As?IntegerDim?s?As?String,?c?As?String,?sum?As?Integer,?k?As?Integer'初始化數(shù)組ans和數(shù)組b,各元素的初始值均為0。代碼略s?=?Text1.Text:k?=?Len(s)???For?i?=?1?To?k????????c?=?Mid(s,?i,?1)????????b(Asc(c)?-?65)?=?2?^?(69?-?Asc(c))????Next?i????For?i?=?0?To?4????????If?b(i)?<>?0?Then????????????ans(b(i))?=?1????????????sum?=①????????End?If????Next?i???ans(sum)?=?2???'當(dāng)標(biāo)準(zhǔn)答案含3個及以上選項時,學(xué)生答案選其中2個選項可得1分????i?=?0????Do?While?k?>=?3?And?i?<=?4????????For?j?=?i?+?1?To?4???????????If?b(i)??b(j)?<>?0?Then?ans(b(i)?+?b(j))?=?1????????Next?j????????i?=?i?+?1????Loop???'當(dāng)標(biāo)準(zhǔn)答案含4個及以上選項時,學(xué)生答案選其中3個選項可得1分????i?=?0????Do?While?k?>=?4?And?i?<=?4????????For?j?=?i?+?1?To?4????????????If?b(i)??b(j)=?0?Or?k?=?5?Then?②????????Next?j????????i?=?i?+?1???Loop???'當(dāng)標(biāo)準(zhǔn)答案含5個選項時,學(xué)生答案選其中4個選項可得1分。代碼略?End?SubPrivate?Sub?Command2_Click()????Dim?xh(1?To?1000)?As?String,?answer(1?To?1000)?As?String??'從數(shù)據(jù)庫中讀取學(xué)生學(xué)號和答案的數(shù)據(jù)分別存儲在數(shù)組xh和answer中'記錄總數(shù)存儲在變量n中,代碼略??List1.Clear????For?i?=?1?To?n????????List1.AddItem?xh(i)?+?"???????"?+?answer(i)?+?"???????"?+?Str(ans(f(answer(i))))????Next?iEnd?SubFunction?f(s?As?String)?As?Integer????Dim?i?As?Integer,?x?As?Integer???x?=?0????For?i?=?1?To?Len(s)??????x?=③????Next?i????f?=?xEnd?Function14.某校老師編寫一個VB程序分析學(xué)生技術(shù)成績,功能如下:在列表框List1中顯示原始學(xué)生信息,單擊“分析”按鈕Command1,統(tǒng)計各班參加考試人數(shù)、高分(97及以上)人數(shù)和均分,并按班級均分從大到小顯示在列表框List2中,程序運(yùn)行界面如圖所示。實現(xiàn)上述功能的VB程序段如下,請回答下列問題:(1)學(xué)生成績存儲在數(shù)據(jù)表中,其字段名是(2)請在劃線處填入合適的代碼。DimrecCountAsInteger'存放學(xué)生人數(shù)DimsClass(1To1000)AsInteger'存放學(xué)生班級DimsName(1To1000)AsString'存放學(xué)生姓名DimsScore(1To1000)AsInteger'存放學(xué)生成績PrivateSubCommand1_Click()DimiAsInteger,tAsInteger,ncAsIntegerDima(1To20)AsInteger,b(1To20)AsInteger'分別存放班級高分人數(shù)和班級參加考試人數(shù)Dimsum(1To20)AsInteger,ave(1To20)AsSingle'分別存放班級總分和班級均分Dimc(1To20)AsIntegerFori=1TorecCount①b(t)=b(t)+1Ifb(t)=1Thennc=nc+1②EndIfIfsScore(i)>=97Thena(t)=a(t)+1sum(t)=sum(t)+sScore(i)NextiFori=1Toncave(c(i))=Int(sum(c(i))/b(c(i))100+0.5)/100NextiFori=1Tonc-1Forj=ncToi+1Step-1If③Thent=c(j):c(j)=c(j-1):c(j-1)=tEndIfNextjNextiFori=1ToncList2.AddItemStr(c(i))+""+Str(b(c(i)))+""+Str(a(c(i)))+""+Str(ave(c(i)))NextiEndSubPrivateSubForm_Load()'鏈接數(shù)據(jù)庫,代碼略recCount=0DoWhileNotrs.EOFrecCount=recCount+1sClass(recCount)=rs.Fields("class")sName(recCount)=rs.Fields("name")sScore(recCount)=rs.Fields("score")rs.MoveNextLoop'將數(shù)據(jù)顯示在列表框List1中,代碼略EndSub三、填空題15.以下流程圖描述的算法,執(zhí)行結(jié)果是_______。16.如圖所示,這是打印九九乘法表的程序,請你完善程序。PrivateSubForm_click()DimiAsInteger,jAsIntegerFori=1To①________Forj=1To②_________Printj;"";i;"=";ij;NextjPrint‘換行NextiEndSub21世紀(jì)教育網(wǎng)www.21cnjy.com精品試卷·第2頁(共2頁)21世紀(jì)教育網(wǎng)(www.21cnjy.com)中小學(xué)教育資源及組卷應(yīng)用平臺2.3周而復(fù)始的循環(huán)-教科版(2019)高中信息技術(shù)必修一練習(xí)學(xué)校:___________姓名:___________班級:___________考號:___________一、選擇題1.下面的程序段運(yùn)行后的結(jié)果為()s=1foriinrange(1,6,2):s=s+iprint(s)A.15B.10C.12D.9答案:B詳解本題主要考查程序的運(yùn)行。for循環(huán)中,變量i的變化是1,3,5,7,當(dāng)i=7時退出循環(huán),此時s的值為,s=1+1+3+5=10,故本題選B選項。2.某算法的部分流程圖如下圖所示,輸入s=11200,執(zhí)行這部分流程后,輸出m和n的值分別是()A.144B.214C.225D.425答案:C【解析】【分析】【詳解】本題主要考查循環(huán)結(jié)構(gòu)流程圖的讀取。第一次循環(huán):m=03+11200mod10=0+0=0n=1s=11200\10=1120第二次循環(huán):m=03+1120mod10=0+0=0n=2s=1120\10=112第三次循環(huán):m=03+112mod10=0+2=2n=3s=112\10=11第四次循環(huán):m=23+11mod10=6+1=7n=4s=11\10=1第五次循環(huán):m=73+1mod10=21+1=22n=5s=1\10=0當(dāng)s<>0不成立時,跳出循環(huán),輸出m=22n=5,因此C選項正確。A、B、D選項均不正確。3.有兩個VB程序段,如下所示:已知程序段中①②兩處內(nèi)容相同,數(shù)組元素a(1)到a(10)的值依次為:6,43,21,78,33,16,80,45,12,90,執(zhí)行“程序段1”后,數(shù)組元素a(1)~a(10)的值依次為80,78,90,45,43,33,21,16,12,6,則下列說法正確的是()A.①和②處的填空為7B.兩程序段的比較次數(shù)不一樣,交換次數(shù)一樣C.執(zhí)行完程序段2后,數(shù)據(jù)6移動到了a(10)D.兩段程序的得到的運(yùn)行結(jié)果相同答案:A詳解本題考查冒泡排序。根據(jù)題干,執(zhí)行“程序段1”后,數(shù)組元素a(1)~a(10)的值依次為80,78,90,45,43,33,21,16,12,6,可知a(10)-a(4)實現(xiàn)排序,故整個排序執(zhí)行了七趟。根據(jù)程序段1,雙重for循環(huán)的內(nèi)循環(huán)forj=1to10-i,這是一個下沉的排序,對整個程序段總共要執(zhí)行七趟,那么i的變化是1-7,故外循環(huán)填入7。選項A正確。兩個程序段都執(zhí)行七趟,比較次數(shù)一樣。執(zhí)行完程序段2后,數(shù)據(jù)6移動到了a(8)。故本題選A。4.有如下VB程序段:i=1DoWhilei<=5a(i)=(Int(Rnd6)+5)(iMod2+1)Forj=1Toi-1Ifa(j)=a(i)Theni=i-1:ExitForNextji=i+1Loop執(zhí)行該程序段后,a(1)到a(5)各元素的值可能是()。A.18,8,16,6,12B.11,5,10,6,20C.14,10,12,10,20D.5,6,7,8,9答案:A【解析】【分析】【詳解】本題考查的是VB循環(huán)語句。首先考慮取值范圍,int(rnd6)+5產(chǎn)生隨機(jī)整數(shù)范圍是[5,10],當(dāng)i為奇數(shù)時,(Int(Rnd6)+5)(iMod2+1)的范圍是{10,12,14,16,18,20};當(dāng)i為偶數(shù)時,(Int(Rnd6)+5)(iMod2+1)的范圍是整數(shù)[5,10]。接著a數(shù)組滿足不重復(fù)的條件。所以選項BCD都不對。5.編寫了一個統(tǒng)計數(shù)組元素a(1)到a(n)中的“升序段”個數(shù)s。例:如圖所示的數(shù)據(jù)序列,其“升序段”的個數(shù)等于3的VB程序:k=0s=0Fori=2TonIfa(i)>a(i-1)ThenEndIfIfk=1Thens=s+1NextiTextl.Text=Str(s)方框中的代碼由以下三部分組成:①k=0②k=k+1③Else代碼順序正確的選項是()A.①③②B.②③①C.③②①D.②①③答案:B詳解本題考查的是VB循環(huán)、選擇語句。閱讀程序可知,k表示每個升序段中元素的個數(shù),s是表示升序段的個數(shù)。由Ifa(i)>a(i-1)Then可知,接下來升序段中元素的個數(shù)增加1,否則為統(tǒng)計下一個升序段中元素的個數(shù)做準(zhǔn)備即k=0。故代碼順序為:②③①。選項B正確。6.有如下VB程序段:Constn=10Dima(1Ton)AsInteger,b(1Ton)AsIntegerFori=1Tonb(i)=iNextiFori=2Tonj=i-1t=b(i)DoWhilea(b(j))>a(t)b(j+1)=b(j)j=j-1Ifj=0ThenExitDoLoopb(j+1)=tNexti若數(shù)組a中的數(shù)據(jù)依次為:69,16,44,17,34,46,10,29,37,51,執(zhí)行程序后,b(1)~b(10)的值為()A.35410198672B.72485936101C.58214739106D.16248971035答案:B【解析】【分析】【詳解】本題主要考查VB中數(shù)組及循環(huán)結(jié)構(gòu)的使用。“ExitDo”用以跳出Do循環(huán),Do循環(huán)的循環(huán)條件為“a(b(j))>a(t)”,由題意可知為“a(b(i-1))>a(b(i))”,程序執(zhí)行中數(shù)組b變化過程為:2,1,3,4,5,6,7,8,9,10—>2,3,1,4,5,6,7,8,9,10—>2,4,3,1,5,6,7,8,9,10—>2,4,5,3,1,6,7,8,9,10—>2,4,5,3,6,1,7,8,9,10,—>7,2,4,5,3,6,1,8,9,10—>7,2,4,8,5,3,6,1,9,10—>7,2,4,8,5,9,3,6,1,10—>7,2,4,8,5,9,3,6,10,1。故B選項正確。其余選項均不符合題意。二、操作題7.出列順序有10個人,編號分別為1,2,3……10按順時針方向圍坐成一圈,每次隨機(jī)產(chǎn)生一個數(shù)m,m的范圍為[3,7]的隨機(jī)奇數(shù),從第10個人開始逆時針報數(shù),當(dāng)報到m的人出列,圈內(nèi)剩下的人,重新產(chǎn)生隨機(jī)數(shù)m,重新開始報數(shù),如此下去,直到所有人出列為止。如:若每次參數(shù)的隨機(jī)數(shù)m都為5,從第10個開始報數(shù),依次出列的為6-1-5-9-2-3-10-7-4-8小李編寫了如下程序求解10個人的出列順序。程序運(yùn)行界面如圖1所示,點擊求解按鈕后,在Textl中輸出出列順序,在Text2中顯示隨機(jī)數(shù)據(jù)的值。(1)在劃線出填寫正確的代碼PrivateSubCommand1_Click()Dimld(1To10)AsBoolean,iAsInteger,jAsIntegerDimrsAsInteger,CAsInteger,mAsIntegerRandomizeFori=1To10ld(i)=True'數(shù)組元素為True表示第i人當(dāng)前在隊列中Nextic=0:rs=10_______m=Int(Rnd3)2+3DoWhilers<>0Ifld(i)=TrueThen_________Ifc=mThenld(i)=FalseText1.Text=Text1.Text+Str(i)___________c=0EndIfEndIfi=i-1If____________Theni=10LoopEndSub(2)加框處兩語句互換下順序,會不會對出列順序產(chǎn)生影響______(選填:會/不會)。答案:①i=10②c=c+1③rs=rs-1④i=0不會詳解本題考查VB綜合能力。(1)初始化i的值,填入i=10。(2)報數(shù)數(shù)量加1,填入c=c+1。(3)出列后總?cè)藬?shù)減1,故填入rs=rs-1。(4)當(dāng)i=0時候,代表轉(zhuǎn)到了最后一人,故i=10。(5)對出列順序沒有影響。8.求不大于n的五位正整數(shù)中,滿足高兩位與低兩位相同,且能被3除余2的所有數(shù)之和。(1)本題適用的算法是(),此算法的基本實現(xiàn)方法是()。A.枚舉算法,循環(huán)中嵌套循環(huán)B.查找算法,循環(huán)中嵌套分支C.枚舉算法,循環(huán)中嵌套分支D.查找算法,循環(huán)中嵌套循環(huán)(2)設(shè)x為五位正整數(shù),以下檢驗條件的分析,正確的是()。A.x\100=xmod100andxmod3=2B.x\1000=xmod100andxmod3=2C.x\100=xmod1000andxmod3=2D.x\1000=xmod1000andxmod3=2(3)請編寫程序,完成題目要求的功能。答案:(1)C(2)B(3)DimxAsLong,sAsDouble,nAsLongn=val(InputBox("輸入"))s=0Forx=10000TonStep1Ifx\1000=xMod100AndxMod3=2Thens=s+xEndIfNextxPrints詳解本題考查VB綜合能力。(1)求不大于n的五位正整數(shù)中,滿足高兩位與低兩位相同,且能被3除余2的所有數(shù)之和適合采用枚舉算法,枚舉算法是指從所有候選答案中去搜索正確的解,使用該算法需要滿足兩個條件,所以在代碼中需要分支結(jié)構(gòu)。故選C。(2)x\1000=xmod100andxmod3=2可以判斷高兩位與低兩位相同,且能被3除余2的整數(shù),故選B。(3)根據(jù)題目意思,完成代碼。9.小奕同學(xué)基于排序算法設(shè)計了一個數(shù)字矩陣排序的程序。程序界面如下圖所示,在文本框中輸入矩陣大小,點擊“生成”按鈕Command1,在左側(cè)列表框List1中輸出一個長寬均為指定大小的隨機(jī)整數(shù)矩陣,隨機(jī)整數(shù)范圍為[1,99]。點擊“排序”按鈕Command2,結(jié)果輸出在右側(cè)列表框List2中,奇數(shù)行從左到右依次遞增,偶數(shù)行從右至左依次遞增,且保持輸出矩陣的長寬不變。(1)實現(xiàn)上述功能的VB程序如下,顯示數(shù)據(jù)用的additem是一種________(單選,填字母:A.屬性名/B.事件名/C.方法名/D.過程名)。(2)請在劃線處填入合適的代碼。(3)程序中加框處代碼有錯,請改正。Dima(1To100)AsIntegerDimnAsIntegerFunctiondq(sAsString,LAsInteger)AsString'自定義對齊函數(shù)Rem在輸入的字符串s前加若干空格,輸出長度為L的字符串,代碼略EndFunctionPrivateSubCommand1_Click()'生成數(shù)字矩陣'隨機(jī)生成n^2個數(shù)字,存儲在數(shù)組a中,代碼略'以一行n個,共n行的格式顯示在List1中,代碼略EndSubPrivateSubCommand2_Click'數(shù)字矩陣排序DimiAsInteger,kAsInteger,jAsInteger,sAsStringDimfAsBooleanList2.Clearf=TrueFori=1Ton^2Stepns=""Forj=iTok=n^2DoWhile①Ifa(k)<a(k-1)Thent=a(k):a(k)=a(k-1):a(k-1)=tEndIfk=k-1LoopIff=TrueThens=s+""+dq(Str(a(j)),2)Elses=s+""+dq(Str(a(j)),2)+sEndIfNextjList2.AddItems②NextiEndSub答案:(1)C(2)①k>=j+1②f=Notf(3)i+n-1詳解本題考查VB綜合能力。(1)additem是一種方法名。(2)第一空,DOWhile循環(huán)是冒泡排序的內(nèi)循環(huán),根據(jù)題干,每次排序排第i行的n個數(shù)據(jù),從a(j)到a(j+n-1)的排序,故填入k>=j+1。(3)第二空,f代表奇偶行,奇數(shù)行f為True,偶數(shù)行反之,故填入f=Notf。(4)每次排序排第i行的n個數(shù)據(jù),加框處改為i+n-1。10.求最大連續(xù)子矩陣和。給出一個矩陣,序列元素有正整數(shù)、0、負(fù)整數(shù),在矩陣中限定一塊區(qū)域,并要求找到該限定區(qū)域內(nèi)的一個子矩陣,使得這個子矩陣與限定區(qū)域同寬但可能不同高,且包含的所有元素之和為限定區(qū)域矩陣中最大值,在和最大的前提下還要求該子矩陣包含的元素個數(shù)最多。算法描述如下:(1)從第一行開始向下進(jìn)行累加,累加和若大于之前的最大和,則記錄此時的最大和及結(jié)束位置;(2)若累加和等于之前的最大和,但元素個數(shù)大于之前的最大和的元素個數(shù),則記錄此連續(xù)子矩陣的結(jié)束位置;(3)若累加和小于0,則重新開始記錄;(4)若有符合條件的多個連續(xù)子矩陣,則輸出最先找到的子矩陣。小俞編寫了一個實現(xiàn)該功能的VB程序,窗體加載時生成mn個序列數(shù)據(jù),依次存放在數(shù)組a,并顯示在列表框List1中,在文本框Text1中輸入該矩陣限定區(qū)域的左上角位置,在文本框Text2中輸入右下角位置,單擊“計算”按鈕Command1后,找出連續(xù)和最大的子矩陣,在標(biāo)簽Label3上顯示最大連續(xù)子矩陣和,在Label4上顯示該連續(xù)子矩陣的元素個數(shù),在Label5上顯示該連續(xù)子矩陣開始與結(jié)束位置。程序運(yùn)行界面如圖所示。(1)在設(shè)計程序界面時,要清空文本框中的顯示內(nèi)容,應(yīng)修改文本框的___________屬性(2)VB程序代碼如下,請在劃線處填入合適的代碼。Constm=12:Constn=6Dima(1Tomn)AsIntegerPrivateSubForm_Load()'生成mn個數(shù)據(jù),并顯示在列表框List1,代碼略EndSubPrivateSubCommand1_Click()DimiAsInteger,jAsInteger,kAsInteger,tempAsIntegerDimlengthAsinteger,beginAsInteger,sumAsIntegerDimksAsString,jsAsStringDimxy(1to4)AsInteger,hsum(1tomn)AsInteger'讀取文本框Text1的數(shù)值分別存儲到數(shù)組xy(1)、xy(2),讀取文本框Text2的數(shù)值分別存儲到數(shù)組xy(3)、xy(4),xy(1)、xy(3)表示所在行,xy(2)、xy(4)表示所在列,代碼略Fori=1Toxy(3)-xy(1)+1hsum(i)=0Nexti'求限定區(qū)域內(nèi)每行數(shù)據(jù)之和Fori=1Toxy(3)-xy(1)+1Forj=1To________hsum(i)=hsum(i)+a((xy(1)+i-2)n+xy(2)+j-1)NextjNexti'找出最大連續(xù)之矩陣和temp=0:sum=0:length=0:begin=0Fori=1Toxy(3)-xy(1)+1Iftemp+hsum(i)>sumThensum=temp+hsum(i)length=i-begink=iElseIftemp+hsum(i)=sumAnd________Thenlength=i-begink=iEndIfIftemp+hsum(i)<0Thenbegin=itemp=0Elsetemp=temp+hsum(i)EndIfNextiks="("+_________+","+Str(xy(2))+")"'開始位置js="("+Str(k+xy(1)-1)+","+Str(xy(4))+")"'結(jié)束位置Label3.Caption="最大子矩陣和為:"+Str(Sum)Label4.Caption="子矩陣中的元素個數(shù)為:"+Str(length(xy(4)-xy(2)+1))Label5.Caption="子矩陣位置為:"+ks+","+jsEndSub答案:text①xy(4)-xy(2)+1②i-begin>length③Str(k-length+xy(1))詳解本題考查VB綜合能力。(1)在設(shè)計程序界面時,要清空文本框中的顯示內(nèi)容,應(yīng)修改文本框的text屬性。(2)xy(1)、xy(3)表示所在行,xy(2)、xy(4)表示所在列,內(nèi)循環(huán)表示限定區(qū)域有多少列,故填入xy(4)-xy(2)+1。(3)根據(jù)題干若累加和等于之前的最大和,但元素個數(shù)大于之前的最大和的元素個數(shù),則記錄此連續(xù)子矩陣的結(jié)束位置,填入i-begin>length。(4)開始位置表示為Str(k-length+xy(1))。11.使用Python自身提供的IDLE集成開發(fā)環(huán)境錄入以下代碼及調(diào)試運(yùn)行,檢測結(jié)果。#雞兔同籠forxinrange(1,23):y=35-xif4x+2y==94:print("兔子有%s只,雞有%s只"%(x,y))特別提示:代碼錄入完畢,調(diào)試運(yùn)行,檢測錯誤,討論錯誤原因,上網(wǎng)查找錯誤格式的處置辦法,直至能正確輸出結(jié)果。答案:錯誤1:兔子4只腿,最多只能是23只,而range(1,23)只取到22,沒取到23,故應(yīng)改為:range(1,24)錯誤2:縮進(jìn)錯誤,y=35-x、if4x+2y==94:是for語句中的語句塊,應(yīng)縮進(jìn)。print("兔子有%s只,雞有%s只"%(x,y))是if語句中的語句塊,應(yīng)縮進(jìn)。詳解本題考查的是Python調(diào)試。本題程序錯誤如下:錯誤1:兔子4只腿,最多只能是23只,而range(1,23)只取到22,沒取到23,故應(yīng)改為:range(1,24)錯誤2:縮進(jìn)錯誤,y=35-x、if4x+2y==94:是for語句中的語句塊,應(yīng)縮進(jìn)。print("兔子有%s只,雞有%s只"%(x,y))是if語句中的語句塊,應(yīng)縮進(jìn)。調(diào)試完最終輸出:兔子有12只,雞有23只。12.請編寫Python程序,實現(xiàn)如下功能需求:1)程序運(yùn)行后,給出文字提示:“請輸入一個正整數(shù):”2)輸入一個整數(shù)n按回車后,程序輸出從1-n所有整數(shù)中既是3的倍數(shù)又是5的倍數(shù)的數(shù)。3)不要超過5行代碼。程序運(yùn)行舉例:答案:n=input("請輸入一個正整數(shù):")n=int(n)Foriinrange(15,n+1,15)print(i)【解析】【分析】【詳解】本題考查的是Python循環(huán)語句。range函數(shù),第一個參數(shù)表示開始,第二個參數(shù)表示停止,第三個參數(shù)表示步長。print缺省的話默認(rèn)是換行輸出。13.某考試的多選題有“A、B、C、D、E”5個答案選項。閱卷的評分標(biāo)準(zhǔn)為:“全部選對的得2分,選對但不全的得1分,不選或有選錯的得0分”。閱卷算法描述如下:例如,標(biāo)準(zhǔn)答案為“ABE”,則對應(yīng)得分表如下所示。學(xué)生答案ABEABAEBEABEAC......字符串1100111000100010100110000010000000110100......十進(jìn)制數(shù)(x)2524179168120......ans(x)211111100小溫依據(jù)上述描述設(shè)計了“多選題閱卷”的VB程序,實現(xiàn)如下功能:在文本框Text1中輸入標(biāo)準(zhǔn)答案(大寫字母),先單擊“初始化”按鈕Command1,在數(shù)組ans中生成所有答案組合對應(yīng)的分值,然后單擊“閱卷”按鈕Command2,從數(shù)據(jù)庫中讀取學(xué)生的答案并進(jìn)行閱卷,在列表框List1中顯示得分結(jié)果。程序運(yùn)行界面如圖所示。(1)若標(biāo)準(zhǔn)答案為“ACD”,則數(shù)組元素ans?(18)的值為(2)請在劃線處填入合適的代碼。Dim?ans(0?To?31)?As?IntegerPrivate?Sub?Command1_Click()Dim?b(0?To?4)?As?IntegerDim?s?As?String,?c?As?String,?sum?As?Integer,?k?As?Integer'初始化數(shù)組ans和數(shù)組b,各元素的初始值均為0。代碼略s?=?Text1.Text:k?=?Len(s)???For?i?=?1?To?k????????c?=?Mid(s,?i,?1)????????b(Asc(c)?-?65)?=?2?^?(69?-?Asc(c))????Next?i????For?i?=?0?To?4????????If?b(i)?<>?0?Then????????????ans(b(i))?=?1????????????sum?=①????????End?If????Next?i???ans(sum)?=?2???'當(dāng)標(biāo)準(zhǔn)答案含3個及以上選項時,學(xué)生答案選其中2個選項可得1分????i?=?0????Do?While?k?>=?3?And?i?<=?4????????For?j?=?i?+?1?To?4???????????If?b(i)??b(j)?<>?0?Then?ans(b(i)?+?b(j))?=?1????????Next?j????????i?=?i?+?1????Loop???'當(dāng)標(biāo)準(zhǔn)答案含4個及以上選項時,學(xué)生答案選其中3個選項可得1分????i?=?0????Do?While?k?>=?4?And?i?<=?4????????For?j?=?i?+?1?To?4????????????If?b(i)??b(j)=?0?Or?k?=?5?Then?②????????Next?j????????i?=?i?+?1???Loop???'當(dāng)標(biāo)準(zhǔn)答案含5個選項時,學(xué)生答案選其中4個選項可得1分。代碼略?End?SubPrivate?Sub?Command2_Click()????Dim?xh(1?To?1000)?As?String,?answer(1?To?1000)?As?String??'從數(shù)據(jù)庫中讀取學(xué)生學(xué)號和答案的數(shù)據(jù)分別存儲在數(shù)組xh和answer中'記錄總數(shù)存儲在變量n中,代碼略??List1.Clear????For?i?=?1?To?n????????List1.AddItem?xh(i)?+?"???????"?+?answer(i)?+?"???????"?+?Str(ans(f(answer(i))))????Next?iEnd?SubFunction?f(s?As?String)?As?Integer????Dim?i?As?Integer,?x?As?Integer???x?=?0????For?i?=?1?To?Len(s)??????x?=③????Next?i????f?=?xEnd?Function答案:(1)1(2)①sum+b(i)或sum+2^(4–i)②ans(sum-b(i)-b(j))=1③x+Val(Mid(s,i,1))2^(Len(s)-i)或者x+Val(Mid(s,i,1))2^(5-i)或者x+Val(Mid(s,Len(s)-i+1,1))2^(i-1)或者x+Val(Mid(s,6-i,1))2^(i-1)或者x2+Val(Mid(s,i,1))詳解標(biāo)題考查VB綜合能力。(1)若標(biāo)準(zhǔn)答案為“ACD”,則數(shù)組元素ans(18)表示選了AD,得1分。(2)代碼第一空,將正確答案轉(zhuǎn)換的十進(jìn)制求和,故填入sum+b(i)。(2)代碼第二空,b(i)和b(j)是錯誤答案,那么反過來就是正確答案之一,故填入ans(sum-b(i)-b(j))=1。(3)代碼第三空,自定義函數(shù)將二進(jìn)制轉(zhuǎn)為十進(jìn)制,位權(quán)相加,故填入x+Val(Mid(s,i,1))2^(Len(s)-i)。14.某校老師編寫一個VB程序分析學(xué)生技術(shù)成績,功能如下:在列表框List1中顯示原始學(xué)生信息,單擊“分析”按鈕Command1,統(tǒng)計各班參加考試人數(shù)、高分(97及以上)人數(shù)和均分,并按班級均分從大到小顯示在列表框List2中,程序運(yùn)行界面如圖所示。實現(xiàn)上述功能的VB程序段如下,請回答下列問題:(1)學(xué)生成績存儲在數(shù)據(jù)表中,其字段名是(2)請在劃線處填入合適的代碼。DimrecCountAsInteger'存放學(xué)生人數(shù)DimsClass(1To1000)AsInteger'存放學(xué)生班級DimsName(1To1000)AsString'存放學(xué)生姓名DimsScore(1To1000)AsInteger'存放學(xué)生成績PrivateSubCommand1_Click()DimiAsInteger,tAsInteger,ncAsIntegerDima(1To20)AsInteger,b(1To20)AsInteger'分別存放班級高分人數(shù)和班級參加考試人數(shù)Dimsum(1To20)AsInteger,ave(1To20)AsSingle'分別存放班級總分和班級均分Dimc(1To20)AsIntegerFori=1TorecCount①b(t)=b(t)+1Ifb(t)=1Thennc=nc+1②EndIfIfsScore(i)>=97Thena(t)=a(t)+1sum(t)=sum(t)+sScore(i)NextiFori=1Toncave(c(i))=Int(sum(c(i))/b(c(i))100+0.5)/100NextiFori=1Tonc-1Forj=ncToi+1Step-1If③Thent=c(j):c(j)=c(j-1):c(j-1)=tEndIfNextjNextiFori=1ToncList2.AddItemStr(c(i))+""+Str(b(c(i)))+""+Str(a(c(i)))+""+Str(ave(c(i)))NextiEndSubPrivateSubForm_Load()'鏈接數(shù)據(jù)庫,代碼略recCount=0DoWhileNotrs.EOFrecCount=recCount+1sClass(recCount)=rs.Fields("class")sName(recCount)=rs.Fields("name")sScore(recCount)=rs.Fields("score")rs.MoveNextLoop'將數(shù)據(jù)顯示在列表框List1中,代碼略EndSub答案:(1)score(2)①t=sClass(i)②c(nc)=t或其他相同答案③ave(c(j))>ave(c(j-1))【解析】【分析】【詳解】本題考查VB綜合能力,VB連接數(shù)據(jù)庫等(1)根據(jù)sScore(recCount)=rs.Fields(score)這條代碼可知,學(xué)生成績存儲在數(shù)據(jù)表中,其字段名是score。(2)代碼第一空,聯(lián)系上下代碼,可知此處關(guān)于t的賦值,t代表班級,故t=sClass(i)是該空答案。(3)代碼第二空是c數(shù)組賦值,c數(shù)組中存放的是按順尋訪問到的是第幾個班級,故c(nc)=t是該空答案。(4)第三空是冒泡排序內(nèi)循環(huán),根據(jù)平均分降序排序,故填入ave(c(j))>ave(c(j-1))。三、填空題15.以下流程圖描述的算法,執(zhí)行結(jié)果是_______。答案:@@@@########【解析】【分析】【詳解】本題考查的知識點是程序的識讀。初始值t=0,n=1,執(zhí)行輸出“@@@@”語句,再執(zhí)行判斷n>2表達(dá)式,不符合該條件表達(dá)式,故執(zhí)行輸出“####”,再執(zhí)行n=n+1語句,即n=2,再執(zhí)行判斷t=1表達(dá)式,不符合該條件表達(dá)式,故執(zhí)行判斷n>2表達(dá)式,不符合該條件表達(dá)式,故執(zhí)行輸出“####”,再執(zhí)行n=n+1語句,即n=3,再執(zhí)行判斷t=1表達(dá)式,不符合該條件表達(dá)式,故執(zhí)行判斷n>2表達(dá)式,符合該條件表達(dá)式,故執(zhí)行輸出“”,再執(zhí)行t=1語句,再執(zhí)行n=n+1語句,即n=4;再執(zhí)行判斷t=1表達(dá)式,符合該條件表達(dá)式,故程序結(jié)束。所以流程圖的執(zhí)行結(jié)果為:@@@@########。故答案為@@@@########。16.如圖所示,這是打印九九乘法表的程序,請你完善程序。PrivateSubForm_click()DimiAsInteger,jAsIntegerFori=1To①________Forj=1To②_________Printj;"";i;"=";ij;NextjPrint‘換行NextiEndSub答案:9i【解析】【分析】【詳解】本題主要考查程序循環(huán)的嵌套。題中外層循環(huán)決定乘法表豎向執(zhí)行的次數(shù),內(nèi)層循環(huán)決定橫向執(zhí)行的次數(shù),因此答案①9②i。21世紀(jì)教育網(wǎng)www.21cnjy.com精品試卷·第2頁(共2頁)21世紀(jì)教育網(wǎng)(www.21cnjy.com) 展開更多...... 收起↑ 資源列表 2.3周而復(fù)始的循環(huán)-教科版(2019)高中信息技術(shù)必修一練習(xí)(原卷版).doc 2.3周而復(fù)始的循環(huán)-教科版(2019)高中信息技術(shù)必修一練習(xí)(解析版).doc 縮略圖、資源來源于二一教育資源庫