2021年浙江高考信息技术复习练习讲义专题六 算法的程序实现_第1页
2021年浙江高考信息技术复习练习讲义专题六 算法的程序实现_第2页
2021年浙江高考信息技术复习练习讲义专题六 算法的程序实现_第3页
2021年浙江高考信息技术复习练习讲义专题六 算法的程序实现_第4页
2021年浙江高考信息技术复习练习讲义专题六 算法的程序实现_第5页
已阅读5页,还剩85页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、专题六算法的程序实现探考情悟真题【考情探究】考点考试内容考试要求5年考情预测热度考题示例考向难度解析算法的思想方法2016浙江4月选考,14,5分;解析算2017浙江4月选考,14,5分;进制转换、质数问题及其他数法及程序实现解析算法的程序实现c2019浙江1月学考,11,5分;论问题、数学猜想等枚举算法的思想方法2019浙江6月学考,11,5分2016浙江10月选考,14,5分;枚举算法及程序实现枚举算法的程序实现c2017浙江11月选考,14,5分;2018浙江4月选考,14,5分;字符串处理问题是考试热点,如在字符串中利用逗号、空格、数字等特殊符号,完成一些统计或计算功能冒泡排序的思想方

2、法2018浙江11月选考,14,5分2015浙江10月选考,16,4分;排序算法及程序实现冒泡排序的程序实现2016浙江4月选考,11,2c分;2016浙江10月选考,16,3排序算法优化;冒泡排序变形,如双向排序、奇偶分开排序、素数合数分开排序、去重复数排序等分;2017浙江11月选考,16,3选择排序的思想方法分;2019浙江4月选考,16,3分2017浙江4月选考,12,2选择排序的程序实现c分;2018浙江4月选考,16,3排序变形,如双向排序、奇偶分开排序、素数合数分开排序等分顺序查找的思想方法顺序查找比较简单,一般不查找算单独考,会结合其他知识法及程序实现顺序查找的程序实现c201

3、7浙江4月选考,16,3分点,比如在数列中插入数、删除数列中的重复数、查找替换等对分查找的思想方法2015浙江10月选考,11,2分;2016浙江4月选考,12,2分;2016浙江10月选考,12,2分;一类题是考查对分查找的运用:如查找次数、查找中各个变量值的变化;另一类查找算法及程序实现对分查找的程序实现c2017浙江4月选考,11,2分;2017浙江11月选考,12,2分;题是将数据源序列由单一的从小到大变成如奇偶分开数列、循环有序数列、左右交替上升序列等,此类数列往往是分成前后两个2018浙江4月选考,12,2分;2018浙江11月选考,16,3分;2019浙江4月选考,12,2分有序

4、数列,查找过程中,对分的主要思想不变,无非是增加了一些条件设置递归算递归算法的思想方法递归算法本质上是自定义法及程序实现递归算法的程序实现b函数的应用,到目前为止,未在真题中出现算法在通过Connection对象连数据管接数据库a2016浙江10月选考,17,6分目前关于数据库一种新的考法是选择题形式,只要掌理中的通过Recordset对象读a握连接数据库并读取数据应用取数据表中的数据算法在数据管理中的应用库的标准代码即可。此外要学会分析数组变量中存c储的数据内容和类型,并掌握数组下标的灵活运用分析解读本专题主要考查几大算法的思想方法和程序实现,包括枚举、解析、排序、查找、递归,题型有选择题和

5、非选择题。选择题为第11和12题、非选择题为第15和16题,这几题考查排序算法与对分查找的频度较高,难度为中等或较难。纵观几次真题,程序题有逐年加难的趋势。试题中对于算法的考查不再局限于算法的基本形,而是在基本形的基础上做了许多变形,比如冒泡排序的几种变式,对分查找的变式等。还有一种变化是,在基本形的基础上增加程序的功能,比如对排序算法进行改进从而提高排序的效率、记录排序中数据的移动过程,利用查找算法查找并删除数列中的重复数据等。还有一个重要变化是,最近几次的真题对几个经典算法的考查相对弱化,开始加强对数组的考查。往往在选择题最后2个题中有一个是考查数组的综合运用,该题往往难度较大。一般选择题

6、中保留一题考查排序或对分查找,考对分查找的概率较高。数据库程序题一般难度不大,可能是篇幅太长的缘故,大题中考数据库的概率并不高,有很多题都是一句话带过:从数据库中读取了什么数据存储到什么数组变量中。读取数据并存储到数组变量中后,对数组的综合运用相对难度大一些,要学会分析题中各数组变量的作用,分别存储了什么类型的数据,以及数组下标的灵活运用。目前数据库可能会有一种新的考法,以选择题的形式,考查连接数据库和读取数据库的基本方法和代码。要掌握从代码中分析数据库文件的名称、数据表的名称,以及数据表中字段的读取方法、记录集的移动方法等基础知识。破考点练考向【考点集训】考点一解析算法及程序实现1.(201

7、8宁波“十校联考”,16,3分)在VB的算术运算中,最大的实数类型Double有效位数也只有15位。为了实现除法运算保留任意位数,小明根据除法原理,编写了如下程序,功能如下:在文本框Text1中输入被除数(正整数),在文本框Text2中输入除数(正整数),在文本框Text3中输入保留小数位数,单击按钮Command1,在标签Label1中显示除法运算的商。程序运行界面如图所示,但加框处代码有错,请改正。PrivateSubCommand1_Click()Dimx,yAsIntegerDimnAsIntegerDimsAsStringx=Val(Text1.Text):y=Val(Text2.T

8、ext)n=Val(Text3.Text)s=s+Str(xy)s=s+.k=xModyFori=1Tonx=x+k*10(1)s=Str(xy)(2)k=xModyNextiLabel1.Caption=商为:+sEndSub答案(1)x=k*10(2)s=s+Str(xy)2.(2018浙江十校联盟选考适应性考试,14,5分)编写“二进制数转换为十六进制数”程序,实现如下功能:在文本框Text1中输入一个二进制数,单击“转换”按钮Command1,将二进制数转换为十六进制数并在文本框Text2中显示。程序运行界面如图所示。(1)设计如图所示的程序界面,至少要使用个类(填数字)。(2)实现上

9、述功能的VB程序如下,请在划线处填入合适的代码。PrivateSubCommand1_Click()Dims1AsString,s2AsStringDimiAsInteger,xAsIntegerConstcode=0123456789ABCDEFs1=Text1.Text:s2=DoWhileLen(s1)Mod40s1=0+s1Loopx=0:i=1DoWhilei=Len(s1)x=x*2+Val(Mid(s1,i,1)i=i+1IfThens2=s2+Mid(code,x+1,1)EndIfLoopText2.Text=s2EndSub(3)若文本框Text1中输入的内容为“10110

10、1”,单击“转换”按钮后,文本框Text2中显示的内容是。答案(1)4(2)iMod4=1或(i-1)Mod4=0(或其他等价答案)x=0(3)2D考点二枚举算法及程序实现1.(2019宁波新高考适应性考试)得分问题:给出一个由A和X组成的字符串,统计字符的得分之和。每个A的得分为已经连续出现的A的个数,X得分为0。例如,AAXXAXXAAA的得分为1+2+0+0+1+0+0+1+2+3。现编写一个程序,功能如下:在文本框Text1中输入字符串,单击“统计”按钮Cmd_Sta后,程序计算得分,结果显示在Text2中。(1)Cmd_Sta对象属于类(单选,填字母:A.Form/B.Label/C

11、.TextBox/D.CommandButton)。(2)实现上述功能的VB程序如下,请在程序划线处填入合适的代码。PrivateSubCmd_Sta_Click()DimsumAsInteger,iAsInteger,cntAsIntegerDimcAsString,szAsStringsz=Text1.Textcnt=0:sum=0Fori=1ToLen(sz)Ifc=AThensum=sum+cntElsecnt=0EndIfNextiText2.Text=Str(sum)EndSub(3)运行该程序,输入数据如上图所示,程序执行到循环结束时,变量cnt的值为。答案(1)D(2)c=Mi

12、d(sz,i,1)或c=Mid(Text1.Text,i,1)cnt=cnt+1(3)32.珠心算是在大脑中以算盘表象作为载体,运用珠算法则所进行的计算。某学校的珠心算老师采用一种快速考查珠心算加法能力的测验方法。他随机给出一个正整数集合,集合中的数各不相同,然后要求学生回答:其中共有多少个数恰好等于集合中另外两个(不同的)数之和?例如对于集合1,2,3,4,一共有2个数等于集合中另外两个数之和,它们是3、4(4=3+1,3=2+1)。将上述算法编写成程序,其功能如下:程序运行时产生n个范围在1,100内的不同的随机整数存储在数组a中,并在列表框List1中显示。单击按钮Command1后,在

13、标签Label1上输出结果,如图所示。(1)对于集合1,2,3,4,5,6,一共有个数等于集合中另外两个数之和。(2)实现上述功能的VB程序如下,请在划线处填入合适代码。Constn=12Dima(1Ton)AsIntegerDimflag(1To100)AsBooleanPrivateSubForm_Load()DimiAsInteger,tAsIntegerFori=1To100flag(i)=FalseNextii=1DoWhilei=nt=Int(Rnd*100)+1IfNotflag(t)ThenList1.AddItemStr(t)flag(t)=Truei=i+1EndIfLoo

14、pEndSubPrivateSubCommand1_Click()DimiAsInteger,jAsInteger,ansAsIntegerans=0Fori=1TonForj=i+1TonIfa(i)+a(j)=100ThenIfThenans=ans+1flag(a(i)+a(j)=FalseEndIfNextjNextiLabel1.Caption=共有+Str(ans)+个数!EndSub答案(1)4(2)a(i)=tflag(a(i)+a(j)或flag(a(i)+a(j)=TrueEndIf该数组的原始顺序不可能是()考点三排序算法及程序实现1.(2019金华十校第一学期调研考试,

15、11,2分)有一个数组,采用冒泡排序,第一遍排序后的结果为3,18,5,35,8,9,11,13,32,那么A.18,5,35,8,9,11,13,32,3B.18,5,35,8,9,11,3,13,32C.18,5,35,3,8,9,11,13,32D.3,18,5,35,13,11,32,8,9答案D2.(2020届名校协作体信息技术试题)某排序算法的VB程序段如下:k=1Fori=1To2Forj=1To6-2*iIfk*a(j)k*a(j+2)Thent=a(j):a(j)=a(j+2):a(j+2)=tEndIfk=-kNextjNexti数组元素a(1)到a(6)的初始值依次为“1

16、5,11,58,38,26,9”,该程序段执行后,数组元素a(1)到a(6)的值分别为()A.58,9,26,11,15,38B.58,38,26,11,15,9C.15,38,26,11,58,9D.58,38,26,15,11,9答案A3.(2018温州新力量联盟期末)有如下VB程序段:Constn=8Dima(1Ton)AsIntegerFori=1Tona(i)=Int(Rnd*20)Nextix=n2Fori=xTo2Step-1Forj=1Toi-1Ifa(j)x+1k=iForj=i-1Tox+1Step-1Ifa(j)a(k)Thenk=jNextjIfkiThent=a(k)

17、:a(k)=a(i):a(i)=tEndIfi=i-1Loop执行完这段代码后,数组a中各个元素的值可能的是()A.2,8,9,11,16,16,7,3B.19,19,18,12,9,8,6,6C.20,17,10,10,5,11,13,16D.14,11,10,5,0,6,15,15答案D4.(2018宁波“十校联考”期末)若有以下数据:64,57,22,96,71,分别存储在a(1)至a(5)中,经过以下程序段处理后的数据依次为()Dima(1To6)AsIntegers=0Fori=1To5Ifa(i)Mod2=1Thens=s+1NextiFori=1To4Ifa(i)Mod2=0Th

18、enForj=5Toi+1Step-1Ifa(j)Mod2=1Thena(6)=a(i):a(i)=a(j):a(j)=a(6):ExitForEndIfNextjEndIfNextiFori=s+2To5k=i-1Forj=iTo5Ifa(k)a(j)Thenk=jNextjIfki-1Thena(6)=a(i-1):a(i-1)=a(k):a(k)=a(6)EndIfNextiA.22,57,64,71,96B.71,57,22,96,64C.71,57,22,64,96D.57,71,22,64,96答案C考点四查找算法及程序实现1.(2019浙江“七彩阳光”联盟期初联考)某对分查找算法

19、部分代码如下:i=1:j=1000:flag=True:p=0key=Val(Text1.Text)DoWhileikeyThenj=m-1Elsei=m+1Loop数组元素a(1)到a(1000)中存放着升序排列的数据。下列说法正确的是()A.若key的值小于a(1),则执行该段程序后,变量j的值等于1B.若key的值等于a(1),则执行该段程序后,变量p的值等于10C.若key的值等于a(1000),则执行该段程序后,变量i的值等于1001D.无论key的值是否在数组a中,执行该段程序后,变量i的值均不可能等于m答案C2.(2018温州九校联考,12,2分)有如下VB程序段:i=1:j=1

20、0:p=0f=Falsek=Int(Rnd*100)+0.5DoWhilei=jAndNotfm=Fix(i+j)/2+0.5)Ifk=a(m)Thenf=TrueElseIfka(m)Thenj=m-1:p=p+1Elsei=m+1:p=p-1EndIfLoopLabel1.Caption=Str(p)数组元素a(1)到a(10)的值依次为“5,16,22,28,35,43,52,67,78,89”,执行该程序段后,Label1的值不可能是()A.-3B.-1C.1D.3答案D3.某对分查找算法的VB程序段如下:k=Val(Text1.Text)i=1:j=6:Label1.Caption=

21、:f=FalseDoWhileia(i)ThenIfa(i)=kAndka(m)Thenj=m-1Elsei=i+1ElseIfa(m)kAndk=a(j)Theni=i+1Elsej=j-1EndIfLabel1.Caption=Label1.Caption+Str(a(m)Loop数组元素a(1)到a(6)的值依次为“58,66,72,24,35,40”,在文本框Text1中输入的值为35,执行该程序段,标签Label1中显示的值是()A.7235C.722435B.2435D.72242435答案D4.(2019五校联考)某对分查找算法的VB程序段如下:Key=Int(Rnd*49)*2

22、+1数组a(1)到a(10)的值依次为“2,6,7,15,20,24,27,43,52,63”,执行该程序段后,s的值不可能为(s=0:i=1:j=10DoWhilei=jm=(i+j)2IfKey=a(m)ThenExitDoIfKeya(m)Thenj=m-1:s=2*sElsei=m+1:s=2*s+1EndIfLoopA.2B.3C.5D.15答案A考点五递归算法及程序实现1.某同学用VB编码如下程序:PrivateSubCommand1_Click()DimkAsInteger,aAsInteger,bAsIntegera=Val(Text1.Text):b=Val(Text2.Te

23、xt)Label1.Caption=trans(a,b)EndSubFunctiontrans(mAsInteger,nAsInteger)AsStringIfm0Thenr=mModntrans=trans(mn,n)+Str(r)Elsetrans=0EndIf)EndFunction程序运行时,在文本框Text1和Text2中分别输入11和2,则Label1中的输出结果是()A.01011B.1011C.01101D.11010答案A2.楼梯有n阶台阶,上楼可以一步上1阶,也可以一步上2阶,探究共有多少种不同的走法。(1)完善程序:PrivateSubCommand1_Click()Di

24、mnAsIntegern=Val(Text1.Text)Text2.Text=Str(f(n)EndSubFunctionf(aAsInteger)Ifa=1Thenf=1ElseIfa=2Thenf=Elsef=EndIfEndFunction(2)若有10阶台阶,共有种走法。答案(1)2f(a-1)+f(a-2)(2)89考点六算法在数据管理中的应用小林编写了一个统计高三16个班级选考技术人数占比的VB程序。运行界面如图所示,窗体加载时,从数据库中(其中“选考三”字段中存储了“技术”选考信息)调用数据,统计各班选考技术的人数占比,并在列表框List1中显示“班级”和“选技术占比”。单击“排

25、序”按钮Command1,数据按选技术占比降序排序,在List2中显示排序结果。实现上述功能的VB程序如下,请回答下列问题:(1)分析程序,可知调用的数据表的名称为。(2)请在划线处填入合适的代码。DimnAsInteger,iAsInteger,jAsInteger变量n用于统计学生总数Dimrate(1To16)AsInteger,num(1To16)AsInteger,class(1To16)AsIntegerDimtech(1To50)AsInteger,cinfo(1To5000)AsInteger,subj(1To5000)AsStringPrivateSubForm_Load()

26、DimconnAsNewADODB.Connection,rsAsNewADODB.Recordsetconn.Connectionstring=Provider=Microsoft.ACE.OLEDB.12.0;DATASource=&App.Path&stuimfo.accdbconn.OpenSetrs.ActiveConnection=connrs.OpenSELECT*FROMxkqk此处代码略,实现将每个学生班级存储到数组cinfo中,选考三科目存储到数组subj中Fori=1Ton统计各班人数存储到数组num中,num(1)存储1班的人数NextiFori=1To16class(

27、i)=iForj=1TonIfclass(cinfo(j)=iThenIfsubj(j)=技术ThenEndIfNextjrate(i)=tech(i)/num(i)*100List1.AddItemads(class(i),3)+ads(rate(i),7)+%NextiEndSubPrivateSubCommand1_Click()DimiAsInteger,tAsInteger,sAsIntegerFori=1To15Forj=16Toi+1Step-1IfThent=rate(j):rate(j)=rate(j-1):rate(j-1)=ts=class(j):class(j)=cla

28、ss(j-1):class(j-1)=sEndIfNextjNextiList2.AddItem班级+选技术占比Fori=1To16List2.AddItemStr(class(i)+Str(rate(i)+%NextiEndSub答案(1)xkqk(2)num(cinfo(i)=num(cinfo(i)+1tech(i)=tech(i)+1rate(j)rate(j-1)【五年高考】考点一解析算法及程序实现20152019年真题提升题组1.(2019浙江6月学考,11,5分)小宇为选定班级参赛作品编了一个VB程序,设计如下:在文本框Text1中输入5位评委对3个作品的评分依据(评委对作品的评

29、分数据由3位十进制数组成,第1位对应作品编号,第2、3位对应作品得分,分值范围为60,99。如“275”表示2号作品得分75)。单击“计分”按钮后,在标签Label1中输出3个作品的平均分,在Label2中输出参赛的作品(选择最高平均分作品参赛,若最高平均分存在并列,则从并列作品中随机抽取)。程序运行界面如图所示。(1)“计分”按钮的对象名为。(2)程序部分代码如下,请在划线处填入合适的代码。PrivateSubjf_Click()DimsAsString,dAsString,iAsIntegerDimf1AsSingle,f2AsSingle,f3AsSingles=Text1.Texti=

30、1DoWhiled=Mid(s,i,3)IfMid(d,1,1)=1Thenf1=f1+Val(Mid(d,2,2)ElseIfMid(d,1,1)=2Thenf2=f2+Val(Mid(d,2,2)Elsef3=f3+Val(Mid(d,2,2)EndIfLoopLabel1.Caption=作品1平均分为:+Str(f1/5)+作品2平均分为:+Str(f2/5)+作品3平均分为:+Str(f3/5)以下省略“处理并列最高平均分,并在Label2中输出选取的参赛作品”的代码EndSub(3)运行该程序时,在文本框Text1中以不同的顺序输入原评分数据:380/295/283/170/180

31、/385/372/285/190/180/390/384/272/170/276,单击“计分”按钮,则Label1中显示的结果(选填:会/不会)发生改变。答案(1)jf(2)i=Len(s)或iLen(s)或i=57或其他可行答案i=i+4(3)不会2.(2019浙江1月学考,11,5分)小红编写了一个将5位以内的十六进制正整数转化成十进制数的VB程序,功能如下:在文本框Text1中输入一个十六进制正整数,单击“转换”按钮Command1,在标签Label3中显示结果。程序运行界面如图所示。(1)要使窗体Form1标题显示“数制转换”,则需修改窗体的(单选,填字母:A.Font/B.Capti

32、on/C.BackColor)属性。(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。PrivateSubCommand1_Click()DimxAsString,chAsStringDimflagAsBoolean,iAsInteger,resultAsLongx=i=1result=0flag=Truech=Mid(x,1,1)DoWhilei=0Andch=AAndch=aAndch0a=nMod2n=n2t=s=Str(a)+sLoopv=tMod2Text2.Text=sLabel3.Caption=校验位值:+EndSub(3)运行该程序,在文本框Text1中输入22,单

33、击“计算”按钮,则显示的校验位值是。答案(1)Text(2)t+aStr(1-v)(3)0考点二枚举算法及程序实现20152019年真题提升题组1.(2018浙江11月选考,14,5分)在平面坐标系中,给定一组有序的点。从原点出发,依次用线段连接这些点,构成一条折线。要求编写一个“计算折线长度”的程序,功能如下:在文本框Text1中依次输入这些点的坐标值(数据都用逗号分隔并以逗号结尾),单击“计算”按钮Cmd后,程序计算这条折线的长度,结果显示在Label1中。例如,三个点的坐标为(5,10),(8,12),(6,17),输入格式如图所示。(1)Cmd对象属于类(单选,填字母:A.Form/B

34、.Label/C.TextBox/D.CommandButton)。(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。PrivateSubCmd_Click()DimiAsInteger,jAsInteger,kAsIntegerDimx1AsSingle,y1AsSingle,x2AsSingle,y2AsSingleDimdAsSingle,TotaldAsSingle,vAsSingle,sAsStrings=x1=0y1=0出发点为坐标原点k=1j=1Totald=0Fori=1ToLen(s)IfMid(s,i,1)=,Thenv=Val(Mid(s,j,i-j)提取坐标值

35、,保存在变量v中j=i+1IfThenx2=vElsey2=vd=Sqr(x2-x1)2+(y2-y1)2)Totald=Totald+dx1=x2:y1=y2EndIfk=k+1EndIfNextiLabel1.Caption=Str(Totald)EndSub(3)运行该程序,输入题干中的数据,程序执行到循环结束时,变量k为。答案(1)D(2)Text1.TextkMod2=1(3)72.(2018浙江4月选考,14,5分)某种编码以4位二进制码为一组,每组前两位表示方向,后两位表示距离。编写一个程序,将编码翻译成方向和距离,距离值为每组编码后两位二进制码转换为十进制数的值。具体功能如下:

36、在文本框Text1中输入连续多组编码,单击“翻译”按钮Command1,结果显示在列表框List1中。程序运行界面如图所示。(1)要使程序运行时,文本框Text1的Width属性值为2018,可在Form_Load事件过程中添加语句(单选,填字母:A.Width=2018/B.Text1.Width=2018/C.Width.Text1=2018)。(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。PrivateSubCommand1_Click()DimsAsString,cAsString,dAsStringDimnAsInteger,b1AsInteger,b2AsIntege

37、r,vAsInteger,iAsIntegers=Text1.Text:n=Len(s):i=1DoWhilei=nc=Mid(s,i,2)Ifc=00Thend=东ElseIfc=01Thend=南ElseIfc=10Thend=西Elsed=北EndIfb1=Val(Mid(s,i+2,1)b2=Val(Mid(s,i+3,1)v=List1.AddItemd+Str(v)LoopEndSub(3)若文本框Text1中输入的内容为“1111”,单击“翻译”按钮,列表框List1中显示的内容是。答案(1)B(2)b1*2+b2i=i+4(3)北33.(2017浙江11月选考,14,5分)编写

38、“字符串生成”程序,实现如下功能:在文本框Text1中(字符位置)输入多个正整数(以“,”为分隔符和结束符),单击“生成”按钮Command1,程序以这些整数为位置信息,依次从文本框Text2中(字典内容)提取字符并连接成字符串,最后将字符串显示在标签Label1中(生成内容)。程序运行界面如图所示。(1)要使程序运行时,窗体Form1标题显示“字符串生成”,可在Form_Load事件过程中添加语句(单选,填字母:A.Form1=字符串生成/B.Form1.Text=字符串生成/C.Form1.Caption=字符串生成)。(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。Priva

39、teSubCommand1_Click()DimsAsString,tAsString,cAsStringDimiAsInteger,pAsIntegers=:t=Fori=1ToLen(Text1.Text)c=Mid(Text1.Text,i,1)Ifc=,Thenp=Val(t)s=s+Mid(Text2.Text,p,1)t=Elset=EndIfNextiLabel1.Caption=EndSub(3)若文本框Text1中输入内容的结束符缺失(即输入内容为1,18,9,9),单击“生成”按钮后,标签Label1中显示的内容是。答案(1)C(2)t+c(或t&c)s(3)pas(2)变

40、量t(字符串类型)存储字符位置。程序通过Mid函数将文本框Text1中的字符逐个读取并判断,如果所取字符是逗号,则表示一个字符位置已经读取完整,将变量t转换成数值,然后去字典里取对应字符,把它连接到s后面;如果所取字符不是逗号,表示字符位置尚未结束,则将该字符连接到t后面。在Label1中输出最后的结果s。(3)由于程序中将位置转换成字典中字符的指令是在条件c=“,”的情况下才执行的,因此输入“1,18,9,9”,前三个位置会从字典中取出字符“pas”。由于最后一个“9”缺失了“,”,因此不会从字典中取字符。考点三排序算法及程序实现20152019年真题提升题组1.(2017浙江4月选考,12

41、,2分)小赵对选择排序算法进行了如下改进:在数组的所有元素中找出最小和最大数据的元素,然后将这两个元素分别与第一个和最后一个元素交换数据,在余下的元素中找出最小和最大数据的元素,分别与第二个和倒数第二个元素交换数据,以此类推,直到所有元素的数据按升序排列。小赵编写的VB程序段如下:p=1:q=10DoWhilepqiMin=p:iMax=pFori=p+1ToqIfa(i)a(iMax)TheniMax=iNextit=a(iMin):a(iMin)=a(p):a(p)=tt=a(iMax):a(iMax)=a(q):a(q)=tp=p+1q=q-1Loop要使程序实现上述算法思想,则方框中的

42、语句是()A.IfiMax=pTheniMax=iMinB.IfiMin=pTheniMin=iMaxC.IfiMax=pTheniMin=iMaxD.IfiMin=pTheniMax=iMin答案A2.(2016浙江4月选考,11,2分)有如下程序段:Fori=1To2Forj=5Toi+1Step-1Ifa(j)a(i)Thent=a(j):a(j)=a(i):a(i)=tEndIfNextjNexti数组元素a(1)到a(5)的值依次为“33,24,45,16,77”,经过该程序段“加工”后,数组元素a(1)到a(5)的值依次为()A.77,45,33,16,24C.77,24,45,1

43、6,33B.77,33,45,16,24D.77,45,33,24,16答案A3.(2019浙江4月选考,16,3分)小明基于冒泡排序思想设计了一个改进的排序算法。该算法先用冒泡法将数组a中奇数位置的元素、偶数位置的元素分别进行排序,然后再进行后续处理。算法的VB程序段如下,但加框处代码有错,请改正。待排序数据存储在数组a中(a(1)a(n),要求升序排列Fori=1To(n-1)2Forj=1Ton-i*2Ifa(j)a(j+1)Then(1)t=a(j):a(j)=a(j+2):a(j+2)=tEndIfNextjNextiFori=1Ton2j=2*i-1Ifa(j)a(j+1)Then

44、t=a(j):a(j)=a(j+1):a(j+1)=tNextiFori=1TonStep2(2)t=a(i):j=i-1DoWhileta(j+2)或a(j)=a(j+2)或其他等价表达式(2)3Ton4.(2018浙江4月选考,16,3分)有一组正整数,要求仅对其中的素数进行升序排序。排序后素数在前,非素数在后。排序示例如下。排序前867154181793789排序后537417179898681实现上述功能的VB代码如下,但加框处有错,请改正。Constn=8Dima(1Ton)AsIntegerPrivateSubCommand1_Click()DimiAsInteger,jAsInt

45、eger,kAsInteger,tAsIntegerDimflagAsBoolean读取一组正整数,存储在数组a中,代码略Fori=1Ton-1k=1(1)IfIsPrime(a(k)Thenflag=TrueElseflag=FalseForj=i+1TonIfIsPrime(a(j)ThenIfa(j)a(k)Then(2)k=jflag=TrueEndIfEndIfNextjIfkiThent=a(k):a(k)=a(i):a(i)=tEndIfIfNotflagThenExitForExitFor表示退出循环Nexti依次输出排序后的数据。代码略EndSubFunctionIsPrim

46、e(mAsInteger)AsBoolean本函数判断m是不是素数:是素数返回值为True,不是素数返回值为False代码略EndFunction答案(1)k=i(2)a(j)a(k)Orflag=False5.(2017浙江11月选考,16,3分)小李基于冒泡排序算法编写了一个VB程序,功能如下:在文本框Text1中显示排序前的数据,单击“排序”按钮Command1,在文本框Text2中显示剔除重复数据后的升序排序结果。程序运行界面如图所示。实现上述功能的VB程序如下,但加框处代码有错,请改正。Constn=10Dima(1Ton)AsIntegerPrivateSubCommand1_Cl

47、ick()DimiAsInteger,jAsInteger,tAsIntegerDimbottomAsInteger获取排序前数据依次存储在数组a中,并在文本框Text1中显示。代码略bottom=ni=1DoWhilei=bottom-1Forj=bottomToi+1Step-1Ifa(j)a(i)Then(1)t=a(j):a(j)=a(j-1):a(j-1)=tElseIfa(j)=a(j-1)Then相邻两个数据相等,进行剔除处理a(bottom)=a(j)(2)bottom=bottom-1EndIfNextji=i+1LoopText2.Text=Fori=1TobottomTe

48、xt2.Text=Text2.Text+Str(a(i)NextiEndSub答案(1)a(j)a(j)(2)a(j)=a(bottom)6.(2016浙江10月选考,16,3分)小吴为了研究冒泡排序过程中数据的“移动”情况,编写了一个VB程序,功能如下:在列表框List1中显示排序前数据(存储在数组a中),在文本框Text1中输入初始位置(即下标值),单击“排序”按钮Command1后,在标签Label1中显示指定初始位置的数据在排序过程中的位置变化情况,排序后的数据显示在列表框List2中。程序运行界面如图所示。实现上述功能的VB程序如下,但加框处代码有错,请改正。Dima(1To8)As

49、IntegerDimnAsIntegerPrivateSubForm_Load()a(1)=30:a(2)=47:a(3)=30:a(4)=72a(5)=70:a(6)=23:a(7)=99:a(8)=24n=8Fori=1To8List1.AddItema(i)NextiEndSubPrivateSubCommand1_Click()DimiAsInteger,jAsInteger,kAsIntegerDimposAsIntegerDimsAsStrings=Text1.Textpos=Val(Text1.Text)Fori=1Ton-1Forj=nToi+1Step-1Ifa(j)a(j-

50、1)Thenk=a(j)(1)a(j-1)=a(j)a(j)=k如果pos位置的数据参与交换,则更新pos值,记录pos变化位置Ifpos=jThenpos=j-1s=s+Str(pos)Else(2)pos=js=s+Str(pos)EndIfEndIfNextjNextiLabel1.Caption=位置变化情况:+sFori=1TonList2.AddItemStr(a(i)NextiEndSub答案(1)k=a(j-1)(2)ElseIfpos=j-1Then考点四查找算法及程序实现20152019年真题提升题组1.(2019浙江4月选考,12,2分)有1个升序排列的数组a(a(1)a

51、(n),n3),从左到右相邻两个元素的差值(后一个元素值减去前一个元素值)先由小到大、再由大到小,且相邻两个差值不相等,为了查找相邻两个元素的最大差值,小李编写的VB程序段如下:i=1:j=nDoWhilei+1a(m)-a(m-1)ThenElseEndIfLoopLabel1.Caption=相邻两个元素的最大差值是+Str(a(j)-a(i)上述程序段两个方框处的语句分别为()A.i=mj=mB.i=mj=m-1C.i=m+1j=m-1答案AD.i=m+1j=m2.(2018浙江4月选考,12,2分)数组a为一组正整数,奇数在前,偶数在后。奇数与偶数已分别按升序排序。依据对分查找思想,设

52、计一个在数组a中查找数据Key的程序。实现该功能的VB程序段如下:i=1:j=10Key=Val(Text1.Text)DoWhileijThens=没有找到!Elses=位置:+Str(m)Text2.Text=s上述程序中方框处可选语句为:i=m+1j=m-1IfKeya(m)Thenj=m-1Elsei=m+1则(1)、(2)、(3)处语句依次是()A.、B.、C.、D.、答案C3.(2017浙江11月选考,12,2分)某对分査找算法的VB程序段如下:i=1:j=7:s=key=Int(Rnd*100)DoWhilei=jm=(i+j)2Ifkey=a(m)Thens=s+M:ExitD

53、oExitDo表示退出循环ElseIfkeya(m)Thenj=m-1:s=s+LElsei=m+1:s=s+REndIfLoopText1.Text=s数组元素a(1)到a(7)的值依次为“24,35,38,41,45,69,78”。该程序段执行后,文本框Text1中显示的内容可能是(A.RLB.LMRC.RLRD.LRLM答案C4.(2017浙江4月选考,11,2分)某对分查找算法的VB程序段如下:key=Val(Text1.Text)i=1:j=10Text2.Text=)DoWhilei=jm=Int(i+j)/2+0.5)Ifkey=a(m)ThenExitDoExitDo表示退出循

54、环Ifkeya(m)Thenj=m-1Elsei=m+1Text2.Text=Text2.Text+Str(a(m)Loop数组元素a(1)到a(10)的值依次为“8,17,24,30,36,40,55,58,61,66”,文本框Text1中输入的值是30,执行该程序段,文本框Text2中显示的是()A.4024B.402436C.3624D.361724答案B5.(2016浙江10月选考,12,2分)某对分査找算法的VB程序段如下:i=1:j=9:n=0key=Val(Text1.Text)DoWhilei=jn=n+1m=Fix(i+j)/2)Ifkey=d(m)ThenExitDoIfk

55、eyd(m)Thenj=m-1Elsei=m+1Loop数组元素d(1)到d(9)的值依次为“7,12,18,25,39,58,61,72,86”。若该程序段运行结束后,n的值为2,则key的值是()A.39B.18或61C.18或72D.12或61答案D6.(2016浙江4月选考,12,2分)已知一无序数组a(下标1到n),通过引入数组b(下标1到n),使得a(b(1)a(b(2)a(b(3)a(b(n)(示例如图所示),对这些有序数据可进行对分查找。则第一次查找时,中点位置m与中点值分别是()A.m的值是Fix(1+n)/2),中点值是a(m)B.m的值是Fix(1+n)/2),中点值是a

56、(b(m)C.m的值是Fix(b(1)+b(n)/2),中点值是a(m)D.m的值是Fix(b(1)+b(n)/2),中点值是a(b(m)答案B7.(2018浙江11月选考,16,3分)数组a中存储的是左右交替上升的n个正整数,如下表所示:a(1)3a(2)25a(3)38a(n-2)a(n-1)a(n)553112依据对分查找思想,设计一个在数组a中查找数据key的程序,实现该功能的VB程序如下,但加框处代码有错,请改正。PrivateSubCommand1_Click()Constn=6Dima(1Ton)AsInteger,flagAsBooleanDimiAsInteger,jAsIn

57、teger,mAsInteger,keyAsInteger读取一组正整数,按上述规则存入数组a中,代码略key=Val(Text1.Text)i=1j=(n+1)2flag=FalseDoWhileijAndNotflag(1)m=(i+j)2Ifkey=a(m)Thenflag=TrueElseIfkey0Thenm=n-i(2)Ifkey=a(m)Thenflag=TrueEndIfIfflagThenText2.Text=Str(m)ElseText2.Text=找不到EndIfEndSub答案(1)i=j(2)n-i+2或n-j+1考点五递归算法及程序实现考点六算法在数据管理中的应用2

58、0152019年真题提升题组(2016浙江10月选考,17,6分)小王与小李合作编写一个成绩统计的VB程序:小王编写一个过程,该过程从数据库读取某一指定科目的相关数据,存储在数组a中;小李编写一个过程,该过程依据数组a中的相关数据统计各班级平均分,小王与小李约定的数组a各元素含义如下表所示。数组元素a(1)a(2)a(n+1)a(n+2)数组元素的含义存储班级数n从a(2)到a(n+1)依次存储第1、第2、第n个班级的人数从a(n+2)开始依次存储第1个班级每个学生的单科成绩、第2个班级每个学生的单科成绩、第n个班级每个学生的单科成绩程序功能如下:在文本框Text1中输入科目名称,单击“读数据

59、库”按钮Command1,程序从数据库读取数据;单击“开始统计”按钮Command2,程序进行统计处理,结果输出在列表框List1中。程序运行界面如图所示。实现上述功能的VB程序如下,请回答下列问题:(1)根据程序运行界面中的数据及数组a各元素的含义进行分析,数组元素a(5)的值为(填写数值)。(2)分析程序,可知数据库的文件名为。(3)请在划线处填入合适的代码。Dima(1To600)AsInteger数组大小满足处理要求PrivateSubCommand1_Click()本过程由小王完成,从数据库读取指定科目的各相关数据,存储在数组a中DimconnAsNewADODB.Connectio

60、nDimrsAsNewADODB.Recordsetconn.ConnectionString=provider=Microsoft.ACE.OLEDB.12.0;datasource=+Score.accdbconn.OpenSetrs.ActiveConnection=conn本过程的其他语句略EndSubPrivateSubCommand2_Click()本过程由小李完成,依据数组a中的相关数据统计各班级平均分DimiAsInteger,jAsInteger,nAsIntegerDimpAsInteger,sumAsInteger,averAsSinglep=n+2Fori=1Tonsu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论