收藏 分享(赏)

浙江版信息技术高考总复习专题六算法的程序实现(试题部分)教学讲练.docx

上传人:lilizhen2007 文档编号:19474633 上传时间:2023-03-15 格式:DOCX 页数:65 大小:985.85KB
下载 相关 举报
浙江版信息技术高考总复习专题六算法的程序实现(试题部分)教学讲练.docx_第1页
第1页 / 共65页
浙江版信息技术高考总复习专题六算法的程序实现(试题部分)教学讲练.docx_第2页
第2页 / 共65页
浙江版信息技术高考总复习专题六算法的程序实现(试题部分)教学讲练.docx_第3页
第3页 / 共65页
亲,该文档总共65页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

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

2、些统计或计算功能枚举算法的程序实现排序算法及程序实现冒泡排序的思想方法c2015浙江10月选考,16,4分;2016浙江4月选考,11,2分;2016浙江10月选考,16,3分;2017浙江11月选考,16,3分;2019浙江4月选考,16,3分排序算法优化;冒泡排序变形,如双向排序、奇偶分开排序、素数合数分开排序、去重复数排序等冒泡排序的程序实现选择排序的思想方法c2017浙江4月选考,12,2分;2018浙江4月选考,16,3分排序变形,如双向排序、奇偶分开排序、素数合数分开排序等选择排序的程序实现查找算法及程序实现顺序查找的思想方法c2017浙江4月选考,16,3分顺序查找比较简单,一般

3、不单独考,会结合其他知识点,比如在数列中插入数、删除数列中的重复数、查找替换等顺序查找的程序实现查找算法及程序实现对分查找的思想方法c2015浙江10月选考,11,2分;2016浙江4月选考,12,2分;2016浙江10月选考,12,2分;2017浙江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、较大。一般选择题中保留一题考查排序或对分查找,考对分查找的概率较高。数据库程序题一般难度不大,可能是篇幅太长的缘故,大题中考数据库的概率并不高,有很多题都是一句话带过:从数据库中读取了什么数据存储到什么数组变量中。读取数据并存储到数组变量中后,对数组的综合运用相对难度大一些,要学会分析题中各数组变量的作用,分别存储了什么类型的数据,以及数组下标的灵活运用。目前数据库可能会有一种新的考法,以选择题的形式,考查连接数据库和读取数据库的基本方法和代码。要掌握从代码中分析数据库文件的名称、数据表的名称,以及数据表中字段的读取方法、记录集的移动方法等基础知识。破考点 练考向【考点集训】考点一解析算法及程

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

8、t1.Text): y = Val(Text2.Text)n= Val(Text3.Text)s = s + Str(x y)s = s + .k = x Mod yFor i = 1 To nx =x+k * 10(1)s=Str(x y)(2)k = x Mod yNext iLabel1.Caption = 商为: + sEnd Sub答案(1) x=k*10(2) s=s+Str(xy)2.(2018浙江十校联盟选考适应性考试,14,5分)编写“二进制数转换为十六进制数”程序,实现如下功能:在文本框 Text1中输入一个二进制数,单击“转换”按钮 Command1,将二进制数转换为十六

9、进制数并在文本框 Text2 中显示。程序运行界面如图所示。(1)设计如图所示的程序界面,至少要使用个类(填数字)。(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。Private Sub Command1_Click()Dim s1 As String, s2 As StringDim i As Integer, x As IntegerConst code = 0123456789ABCDEFs1 = Text1.Text : s2 = Do While Len(s1) Mod 4 0s1 = 0 + s1Loopx = 0: i =1Do While i = Len(s1)x

10、= x*2+Val(Mid(s1,i,1)i=i+1If Thens2 = s2 +Mid(code,x+1,1)End IfLoopText2.Text = s2End Sub(3)若文本框 Text1 中输入的内容为“101101”,单击“转换”按钮后,文本框 Text2 中显示的内容是。答案(1)4(2) i Mod 4=1 或(i-1) Mod 4=0 (或其他等价答案) x=0(3)2D考点二枚举算法及程序实现1.(2019宁波新高考适应性考试)得分问题:给出一个由A和X组成的字符串,统计字符的得分之和。每个A的得分为已经连续出现的A的个数,X得分为0。例如,AAXXAXXAAA的得

11、分为1+2+0+0+1+0+0+1+2+3。现编写一个程序,功能如下:在文本框Text1中输入字符串,单击“统计”按钮Cmd_Sta后,程序计算得分,结果显示在Text2中。(1)Cmd_Sta对象属于类(单选,填字母:A.Form / B.Label / C.TextBox /D.CommandButton)。(2)实现上述功能的VB程序如下,请在程序划线处填入合适的代码。Private Sub Cmd_Sta_Click()Dim sum As Integer, i As Integer, cnt As IntegerDim c As String, sz As Stringsz = Te

12、xt1.Text cnt = 0: sum = 0For i = 1 To Len(sz)If c = A Thensum = sum + cntElsecnt = 0End IfNext iText2.Text = Str(sum)End Sub(3)运行该程序,输入数据如上图所示,程序执行到循环结束时,变量cnt的值为。答案(1) D(2) c = Mid(sz,i,1) 或 c=Mid(Text1.Text,i,1) cnt = cnt + 1(3)32.珠心算是在大脑中以算盘表象作为载体,运用珠算法则所进行的计算。某学校的珠心算老师采用一种快速考查珠心算加法能力的测验方法。他随机给出一

13、个正整数集合,集合中的数各不相同,然后要求学生回答:其中共有多少个数恰好等于集合中另外两个(不同的)数之和?例如对于集合1,2,3,4,一共有2个数等于集合中另外两个数之和,它们是3、4(4=3+1,3=2+1)。将上述算法编写成程序,其功能如下:程序运行时产生n个范围在1,100内的不同的随机整数存储在数组a中,并在列表框List1中显示。单击按钮Command1后,在标签Label1上输出结果,如图所示。(1)对于集合1,2,3,4,5,6,一共有个数等于集合中另外两个数之和。(2)实现上述功能的VB程序如下,请在划线处填入合适代码。Const n=12Dim a(1 To n) As I

14、ntegerDim flag(1 To 100) As BooleanPrivate Sub Form_Load()Dim i As Integer, t As IntegerFor i=1 To 100 flag(i)=FalseNext ii=1Do While i =n t=Int(Rnd * 100)+1If Not flag(t) Then List1.AddItem Str(t) flag(t)=True i=i+1 End IfLoopEnd SubPrivate Sub Command1_Click()Dim i As Integer, j As Integer, ans As

15、 Integerans=0For i=1 To n For j=i+1 To nIf a(i)+a(j) =100 Then IfThen ans=ans+1 flag(a(i)+a(j)=False End If Next jNext iLabel1.Caption=共有+Str(ans)+个数!End Sub答案(1)4(2)a(i)=tflag(a(i)+a(j)或flag(a(i)+a(j)=TrueEnd If考点三排序算法及程序实现1.(2019金华十校第一学期调研考试,11,2分)有一个数组,采用冒泡排序,第一遍排序后的结果为3,18,5,35,8,9,11,13,32,那么该数

16、组的原始顺序不可能是()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 = 1For i = 1 To 2For j = 1 To 6 - 2 * iIf k * a(j) k * a(j + 2) Thent = a(j): a(j) = a(j + 2): a(j + 2) = tEnd Ifk = -kNext jNext i 数组元素a(1)到a(6)的初始值依次为“

17、15,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 程序段:Const n = 8Dim a(1 To n) As IntegerFor i = 1 To na(i) = Int(Rnd * 20)Next ix = n 2For i = x To 2 Step -1For j = 1 To i - 1If a(j) x + 1k = iFor j = i

18、 - 1 To x + 1 Step -1If a(j) a(k) Then k = jNext jIf k i Thent = a(k): a(k) = a(i): a(i) = tEnd Ifi = 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)中,经过以下程序段处理后的数

19、据依次为()Dima(1 To 6)As Integers = 0Fori = 1 To 5Ifa(i) Mod 2 = 1Thens = s + 1NextiFori = 1 To 4Ifa(i) Mod 2 = 0ThenForj = 5 To i + 1 Step -1Ifa(j) Mod 2 = 1Thena(6) = a(i): a(i) = a(j): a(j) = a(6): Exit ForEnd IfNextjEnd IfNextiFori = s + 2 To 5 k = i - 1 Forj = i To 5 Ifa(k) a(j)Thenk = j Nextj If k

20、 i - 1 Thena(6) = a(i - 1): a(i - 1) = a(k): a(k) = a(6) End IfNextiA.22, 57, 64, 71, 96B.71, 57, 22, 96, 64C.71, 57, 22, 64, 96D.57, 71, 22, 64, 96答案C考点四查找算法及程序实现1.(2019浙江“七彩阳光”联盟期初联考)某对分查找算法部分代码如下:i = 1: j = 1000: flag = True: p = 0key = Val(Text1.Text)Do While i key Then j = m -1 Else i = m + 1Lo

21、op数组元素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=10:p=0f=Falsek=Int(Rnd*100)+0.5Do While i=j And Not fm=Fix(i+j)/2+0.5)If k=a(m)

22、Thenf=TrueElseIf ka(m) Thenj=m-1:p=p+1Elsei=m+1:p=p-1End IfLoopLabel1.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=: f=FalseDo While i a(i) ThenIf a(i) =k And k a(m) Then j=m-1 Else

23、i=i+1ElseIf a(m) k And k =a(j) Then i=i+1 Else j=j-1End IfLabel1.Caption=Label1.Caption+Str(a(m)Loop数组元素a(1)到a(6)的值依次为“58,66,72,24,35,40”,在文本框Text1中输入的值为35,执行该程序段,标签Label1中显示的值是()A.7235B.2435C.722435D.72242435答案D4.(2019五校联考)某对分查找算法的 VB 程序段如下:Key = Int(Rnd * 49) * 2 + 1s = 0: i = 1: j = 10Do While i

24、= jm = (i + j) 2If Key = a(m) Then Exit DoIf Key a(m) Thenj = m - 1: s = 2 * sElsei = m + 1: s = 2 * s + 1End IfLoop数组 a(1)到 a(10)的值依次为“2,6,7,15,20,24,27,43,52,63”,执行该程序段后,s 的值不可能为()A.2B.3C.5D.15答案A考点五递归算法及程序实现1.某同学用VB编码如下程序:Private Sub Command1_Click()Dim k As Integer, a As Integer, b As Integera =

25、 Val (Text1.Text) : b = Val (Text2.Text)Label1.Caption = trans(a, b)End SubFunction trans(m As Integer, n As Integer) As String If m 0 Then r =m Mod ntrans = trans (m n, n) + Str(r)Elsetrans=0End IfEnd Function程序运行时,在文本框Text1和Text2中分别输入11和2,则Label1中的输出结果是()A.01011B.1011C.01101D.11010答案A2. 楼梯有n阶台阶,上楼

26、可以一步上1阶,也可以一步上2阶, 探究共有多少种不同的走法。(1)完善程序:Private Sub Command1_Click()Dim n As Integern = Val(Text1.Text)Text2.Text = Str(f(n)End SubFunction f(a As Integer)If a = 1 Thenf = 1ElseIf a = 2 Thenf =Elsef =End IfEnd Function(2)若有10阶台阶,共有种走法。答案(1)2f(a - 1) + f(a - 2)(2)89考点六算法在数据管理中的应用小林编写了一个统计高三16个班级选考技术人数

27、占比的VB程序。运行界面如图所示,窗体加载时,从数据库中(其中“选考三”字段中存储了“技术”选考信息)调用数据,统计各班选考技术的人数占比,并在列表框List1中显示“班级”和“选技术占比”。单击“排序”按钮Command1,数据按选技术占比降序排序,在List2中显示排序结果。实现上述功能的VB程序如下,请回答下列问题:(1)分析程序,可知调用的数据表的名称为。(2)请在划线处填入合适的代码。Dim n As Integer, i As Integer, j As Integer变量n用于统计学生总数 Dim rate(1 To 16) As Integer, num(1 To 16) As

28、 Integer, class (1 To 16) As IntegerDim tech(1 To 50) As Integer, cinfo(1 To 5000) As Integer, subj(1 To 5000) As StringPrivate Sub Form_Load()Dim conn As New ADODB.Connection, rs As New ADODB.Recordsetconn.Connectionstring = Provider = Microsoft.ACE.OLEDB.12.0;DATA Source=& App.Path &stuimfo.accdbc

29、onn.OpenSet rs.ActiveConnection = connrs.Open SELECT * FROM xkqk此处代码略,实现将每个学生班级存储到数组cinfo中,选考三科目存储到数组subj中For i = 1 To n 统计各班人数存储到数组num中,num(1)存储1班的人数Next iFor i = 1 To 16class(i) = iFor j = 1 To nIf class(cinfo(j) = i ThenIf subj(j)=技术Then End IfNext jrate(i) = tech(i) / num(i) * 100List1.AddItem a

30、ds(class(i), 3) + ads(rate(i), 7) + %Next iEnd SubPrivate Sub Command1_Click()Dim i As Integer, t As Integer, s As IntegerFor i = 1 To 15For j = 16 To i + 1 Step -1If Thent=rate(j) : rate(j) = rate(j-1) : rate(j-1) = ts=class(j): class(j)=class(j-1):class(j-1)=sEnd IfNext jNext iList2.AddItem 班级 + +

31、 选技术占比For i = 1 To 16List2.AddItem Str(class(i)+ + Str(rate(i) + %Next iEnd Sub答案(1)xkqk(2)num(cinfo(i)=num(cinfo(i)+1 tech(i)=tech(i)+1 rate(j)rate(j - 1)【五年高考】考点一解析算法及程序实现20152019年真题提升题组1.(2019浙江6月学考,11,5分)小宇为选定班级参赛作品编了一个VB程序,设计如下:在文本框Text1中输入5位评委对3个作品的评分依据(评委对作品的评分数据由3位十进制数组成,第1位对应作品编号,第2、3位对应作品得

32、分,分值范围为60,99。如“275”表示2号作品得分75)。单击“计分”按钮后,在标签Label1中输出3个作品的平均分,在Label2中输出参赛的作品(选择最高平均分作品参赛,若最高平均分存在并列,则从并列作品中随机抽取)。程序运行界面如图所示。(1)“计分”按钮的对象名为。(2)程序部分代码如下,请在划线处填入合适的代码。Private Sub jf_Click()Dim s As String, d As String, i As IntegerDim f1 As Single, f2 As Single, f3 As Singles = Text1.Texti = 1Do While

33、d = Mid(s, i, 3)If Mid(d, 1, 1) = 1 Thenf1 = f1 + Val(Mid(d, 2, 2)ElseIf Mid(d, 1, 1) = 2 Thenf2 = f2 + Val(Mid(d, 2, 2)Elsef3 = f3 + Val(Mid(d, 2, 2)End IfLoopLabel1.Caption = 作品1平均分为:+Str(f1/5)+作品2平均分为:+Str(f2/5)+作品3平均分为:+Str(f3/5)以下省略“处理并列最高平均分,并在 Label2 中输出选取的参赛作品”的代码End Sub(3)运行该程序时,在文本框 Text1

34、中以不同的顺序输入原评分数据:380/295/283/170/180/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)要使

35、窗体 Form1 标题显示“数制转换”,则需修改窗体的(单选,填字母:A.Font/B.Caption/C.BackColor)属性。(2)实现上述功能的 VB 程序如下,请在划线处填入合适的代码。Private Sub Command1_Click()Dim x As String, ch As StringDim flag As Boolean, i As Integer, result As Longx =i = 1result = 0flag = Truech = Mid(x, 1, 1)Do While i = 0 And ch = A And ch = a And ch 0a =

36、n Mod 2n = n 2t =s = Str(a) + sLoopv = t Mod 2Text2.Text = sLabel3.Caption = 校验位值: +End Sub(3)运行该程序,在文本框Text1中输入22,单击“计算”按钮,则显示的校验位值是。答案(1)Text(2)t+aStr(1-v)(3)0考点二枚举算法及程序实现20152019年真题提升题组1.(2018 浙江 11 月选考,14,5 分)在平面坐标系中,给定一组有序的点。从原点出发,依次用线段连接这些点,构成一条折线。要求编写一个“计算折线长度”的程序,功能如下:在文本框Text1中依次输入这些点的坐标值(数

37、据都用逗号分隔并以逗号结尾),单击“计算”按钮Cmd后,程序计算这条折线的长度,结果显示在Label1中。例如,三个点的坐标为(5,10),(8,12),(6,17),输入格式如图所示。(1)Cmd对象属于类(单选,填字母:A.Form / B.Label/C.TextBox/D.CommandButton)。(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。Private Sub Cmd_Click()Dim i As Integer,j As Integer,k As IntegerDim x1 As Single,y1 As Single,x2 As Single,y2 As

38、SingleDim d As Single,Totald As Single,v As Single,s As Strings=x1=0y1=0出发点为坐标原点k=1j=1Totald=0For i=1 To Len(s)If Mid(s,i,1)=, Thenv=Val(Mid(s,j,i-j)提取坐标值,保存在变量v中j=i+1IfThenx2=vElsey2=vd=Sqr(x2-x1)2+(y2-y1)2)Totald=Totald+dx1=x2:y1=y2End Ifk=k+1End IfNext iLabel1.Caption=Str(Totald)End Sub(3)运行该程序,输

39、入题干中的数据,程序执行到循环结束时,变量k为。答案(1)D(2)Text1.Textk Mod 2=1(3)72.(2018浙江4月选考,14,5分)某种编码以4位二进制码为一组,每组前两位表示方向,后两位表示距离。编写一个程序,将编码翻译成方向和距离,距离值为每组编码后两位二进制码转换为十进制数的值。具体功能如下:在文本框Text1中输入连续多组编码,单击“翻译”按钮Command1,结果显示在列表框List1中。程序运行界面如图所示。(1)要使程序运行时,文本框Text1的Width属性值为2018,可在Form_Load事件过程中添加语句(单选,填字母:A.Width=2018/B.Text1.Width=2018/C.Width.Text1=2018)。(2)实现上述功能的 VB 程序如下,请在划线处填入合适的代码。Private Sub Command1_Click()Dim s As String, c As String, d As StringDim n

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 中等教育 > 高中教育

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报