资源简介 中小学教育资源及组卷应用平台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.在“抗击疫情,‘宅’出精彩”征文活动中,每位选手可以提交一篇作品。活动以互评的形式展开:每位选手对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。【来源:21·世纪·教育·网】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.在“抗击疫情,‘宅’出精彩”征文活动中,每位选手可以提交一篇作品。活动以互评的形式展开:每位选手对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