ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:168.85KB ,
资源ID:4011734      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4011734.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(高考专题复习专题九 其他常用算法信息技术.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

高考专题复习专题九 其他常用算法信息技术.docx

1、高考专题复习专题九 其他常用算法信息技术专题九其他常用算法1(20194月浙江省选考)小明基于冒泡排序思想设计了一个改进的排序算法。该算法先用冒泡法将数组a中奇数位置的元素、偶数位置的元素分别进行排序,然后再进行后续处理。算法的VB程序段如下,但加框处代码有错,请改正。待排序数据存储在数组a中(a(1) a(n),要求升序排列For i 1 To (n 1) 2For j 1 To n i * 2If Then(1) t a(j): a(j) a(j 2): a(j 2) tEnd IfNext jNext iFor i 1 To n 2j 2 * i 1If a(j) a(j 1) Then

2、 t a(j): a(j) a(j 1): a(j 1) tNext iFor i Step 2(2)t a(i): j i 1Do While t a(j2) (2)3 To n2(201811月浙江选考)某种数据加密方法描述如下(加密前后的数值都是0255的整数):以m个数据为一段,将n个待加密数据依次分割成若干个数据段。剩余数据(个数小于m)为一个独立数据段。数据段加密规则:数据个数等于m的数据段,先进行值变换,再进行位置变换,得到加密数据段。数据个数小于m的数据段,只进行值变换,直接得到加密数据段。依次合并加密数据段,即为最后的加密数据。值变换:用值变换密钥数组x(元素个数为m,值为0

3、255的整数),将待加密数据段中的数据进行值变换,方法如下:值变换后第i个元素(待加密数据段第i个元素x(i)Mod 256,其中i1,2,m位置变换:用位置变换密钥数组y(元素个数为m,值为1m的不重复整数),将上述值变换后的m个元素进行段内位置变换,方法如下:加密后数据段第y(i)个元素值变换后第i个元素,其中i1,2,m例如,n5,m3的数据加密过程如下:(1)已知m3,数组x与数组y中的数据如下表所示。则待加密数据段“155,1,250”加密后的数据段为_(填数据,用逗号分隔)。x(1)x(2)x(3)102030y(1)y(2)y(3)312(2)小张根据上述加密算法,设计了一个对应

4、的解密程序,其VB代码如下,请在划线处填入合适的代码(解密与加密使用相同的密钥数据)。Private Sub Command1_Click( )Const n100Const m6Dim i As Integer,j As IntegerDim a(1 To n) As Integer,b(1 To n) As IntegerDim x(1 To m) As Integer,y(1 To m) As Integer读取值变换与位置变换的密钥数据,分别保存在数组x与y中,代码略。读取待解密数据,保存在数组a中,代码略。下面进行位置变换:位置变换后数据保存到数组b中For i1 To _For j

5、1 To m_Next jNext iFor i(n m)*m1 To nb(i)a(i)Next i下面进行值变换:值变换后数据仍保存到数组b中j1For i1 To nb(i)_jj1If jm Then j1Next i输出解密后数据,代码略。End Sub解析数据构成环是本题考核的其中一个问题。155,1,250值变换后变成165,21,24,位置变换后变成21,24,165。加密时,先进行值变换,再进行位置变换,解密时应先位置变换,再进行值变换。进行位置变换时,变量i表示共有多少整数段,也可以理解为多少行,易知完整的 m 个数据段的个数为n m个变量j表示每段中每列的位置。当i1 时

6、,完成第 1 段数据变换,即 b(j) a(y(j),当i2 时,完成第 2 段数据变换,即 b( m j) a( m y(j),当i3 时,完成第 3 段数据变换,即 b( m* 2 j) a( m* 2 y(j),当i4 时,完成第 4 段数据变换 ,即 b( m* 3 j) a( m* 3 y(j)归纳得出第 i 段数据变换为 b(i 1)*mj) a(i 1)*my(j)。在进行值变换时,加密时值的变换方式为b(i)(b(i)x(j) Mod 256。推导出解密时b(i)b(i)x(j),其中b(i)x(j)或b(i)b(i)x(j)256,其中b(i)x(j)第一种情况加上256,可

7、以通过Mod256,去掉256,综合两种情况表达式为:b(i)(b(i)x(j)256)Mod 256。答案(1)21,24,165 (2)n m或Int(n/m)b(i1)*mj)a(i1)*my(j)(b(i)256x(j)Mod 256或 (b(i)256x(i1)Mod m1)Mod 2561插入排序也是一种排序的方法,在各地的模拟卷是经常出现。其算法的原理可以理解为在整理一幅扑克牌的过程,当摸到两张及以上牌,将牌放在合适位置,实现整幅牌从小到大排列。2数据构成环在数据加密、钟表等问题中经常出现。关键是构成环的原理。考点1插入排序一、排序思想在将第i个数key插入到数据区间1,i1或i

8、1,n范围内,使得数据区间1,i或i,n有序。重复执行n1遍,使得全部数据有序。该算法包括两个步骤,一是查找key位置,二是把key放在该位置上。查找key位置的方法是:把a(i)赋值给key,如果从前往后有序,变量j从i1位置开始,向前查找,a(j)与key比较,直到找到位置或找到最前面(j1)。如果从后往前有序,变量j从i1位置开始,向后查找,a(j)与key比较,直到找到位置或找到最后面(jn)。二、算法实现1理解变量i、j和key的含义变量i每次要插入数的位置,key表示第i个数的值。j表示查找和比较位置位置。2从前往后有序,进行升序排列从第2个数(i的初值为2)开始,插入到前面有序的

9、数列中。某数列已经插入3个数,数列为49,60,71,61,54,3,66,以i4为例说明插入排序的过程。查找位置j:区间为1,3,从第3个数开始向前查找。比较对象:先把当前a(i)的值存在变量key中,再用key分别与前面的数a(j)进行比较。找到位置的条件:比前面的数大,即keya(j)。当keya(j)时,key应所处的位置是j1。如果没有找到位置,条件是keya(j),把该数向后移动,即把a(j)赋值给a(j1),a(j)a(j1)。三、实现的核心代码四、也可以从后往前进行插入排序变量i的初值是n1,一直插入排序,使得第1个数在序。【例1】 小明对两个班级的90名同学进行编号,随机产生

10、不同号码,对于其中相同的号码,只保留一个,在号码产生过程中,号码始终是从小号到大号排列,直到找到10个同学号码为止。1)用b数组表示该号码是否产生,b(x)若为0,表示x未产生;2)先产生第1个号码,从第2个开始,产生数x,先判断b(x)的值,如果为0,再去插入到合适位置;3)如果x比前面第一个数大,则直接放入a(i)数组元素中,否则利用对分查找法找到相应位置;4)从该数x应该存放的位置开始的数据向后移动,并把该数x存放起来。单击“产生”按钮Command1,在列表框List1中输出每次产生的号码。请在划线处填入合适的代码。Dim a(10) As Integer, b(100) As Int

11、egerPrivate Sub Command1_Click()Dim iAs Integer, x As Integer, s As Stringa(1) Int(Rnd() * 90 1): b(a(1) 1_Do While i 10x Int(Rnd() * 90 1)If b(x) 0 ThenIf _Thena(i) xElsewz seach(i, x)For k i 1 To wz Step 1a(k 1) a(k)Next k _End Ifb(x) 1: s “产生前” Str(i) “个号码是:” For j 1 To i s s Str(a(j)Next jList1.

12、AddItem si i 1End If LoopEnd SubFunction seach(p As Integer, x As Integer) As IntegerDim m As Integer, j As Integerm Int(p / 2)If_ Thenj m 1Do While a(j) x And j 1j j 1Loopj j 1End Ifseach jEnd Function解析变量i表示插入的位置,往往从第2个位置开始。B数组是一个标志,若其值为0,表示该下标的数没有出现过。若他比前一个数大,直接放入第i个位置,否则进行查找,并放入合适位置。答案i2xa(i1)a(

13、k 1) xa(m)x【变式训练1】 在编号为1100的观众中随机产生10位不同的幸运观众,并将幸运观众的编号升序排列。请在划线处填入合适的代码。n 10: a(1) Int(Rnd * 100 1)i 2Do While i t Then a(j 1) a(j) Else Exit For Next j _ i i 1End IfLoop解析要求产生10位不同的幸运观众,在已经产生的号码中先进行查找,如果没有重复,会找到i的位置。在利用插入排序的思想,把新产生的数放入合适的位置。 答案ija(j 1) t考点2约瑟夫环问题约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3n分别表示)

14、围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。在生活中会碰到类似很多问题,如钟表走向、值日的轮值等。一、以24小时制式计算(0点23点),完成如下表格t的初值经历时长(n)结果时间统一表达式t3时13小时后16时(tn) Mod 2423小时后2时t15时3小时后12时(tn24)Mod 2418小时后21时二、将字母表的字母A替换为E,B替换为F,C替换为G,W替换为A,X替换为B,对于环的操作一般用Mod运算符进行计算,某个数Mod n的范围是0,n1,其他下标必须从0开始编号。

15、若要实现从1开始编号,需把编号减去1,进行运算后,再加上1。对于任意字母表中第t个位置的字母加密后的表达式为(t14)Mod 261。如字母w在字母表中处于第23,代入以上公式,加密后为第1个位置。字符ch转换的表达式是Chr(Asc(ch)14)Mod 26 1)。也可以用以下自定义函数来实现大写字母x向后移动y个位置的功能Function Run(x As String, y As Integer) As StringDim ans As Integerans Asc(x) 65ans(ansy) Mod 26Run Chr(ans 65)End Function同理,例如对于一个m行乘以

16、n列的矩阵,第i个位置元素所处的列数为(i1)Mod n1。所处行为(i1)n+1。【例2】 字符环上的最长公共字符串。将字符串首尾相接后可以得到一个环,如图1和图2分别是由字符串“ABCUVKLM”和“MADJKLUVKL”首尾相接后得到的环。在图1和图2所示的两个环中,最长的公共字符串为“UVKLMA”(图中带背景圆圈表示)。编写VB程序,实现如下功能:在文本框Text1和Text2中分别输入一个字符串(仅由大写字母构成,每个字符串长度不超过100),单击命令按钮Command1后,在标签Label3中输出两个字符串构成的环的最长公共字符串长度(字符串在环中必须连续)。程序运行效果如图所示

17、。实现上述功能的 VB 程序如下,请回答下列问题:(1)根据题意描述,字符串“BCEFGK”和“GKBLMCKEF”的最长公共字符串长度为_。(2)请在划线处填入合适的代码。Function getmin(a As Integer, b As Integer) 获取两个整数的较小者If a b Then getmin a Else getmin bEnd FunctionPrivate Sub Command1_Click()Dim s1 As String, s2 As String, i As Integer, j As Integer, x As Integer, y As Intege

18、rDim cnt As Integer, ans As Integer, len1 As Integer, len2 As Integers1 Text1.Texts2 Text2.Textlen1 Len(s1)len2 Len(s2)minlen _minlen 中保存s1和s2中较短字符串的长度ans 0For i 1 To len1For j 1 To len2cnt 0: x i: y jDo While_And cnt ans【变式训练2】 编写VB程序,实现如下功能:在文本框Text1中输入当天对应的星期,文本框Text2中输入天数,单击“推算”按钮Command1,推算出相应天

19、数后的星期情况,并在标签Label1中输出结果。界面如图所示。(1)为实现上述功能,请在划线处填入合适的代码。Private Sub Command1_Click()Dim x As String, xq As String, num As IntegerDim i As Integer, h As Integerx “日一二三四五六”xq Text1.Texti 1num Val(Text2.Text)For i 1 To Len(x)If xq Mid(x, i, 1) Then h i: Exit ForNext i_Label1.Caption “星期” Mid(x, r, 1)End

20、 Sub(2)若当天是“星期五”,在文本框Text2中输入“166”,单击“推算”按钮后,标签Label1中显示的内容是_。解析先找出今天在星期中的位置,但构成环,需用0(n1)来表示,因此输入五,获得位置6,但用5来表示,加上166171,171 Mod 73,表达成字符串还加1,应用星期三。答案(1)r (hnum1) Mod 7 1 (2)星期三一、选择题1有如下 VB 程序段:For i 4 To 3 Step 1If a(i) a(j) Then Exit Fora(j 1) a(j)Next ja(j 1) tmpEnd IfNext i数组元素 a(1)到 a(6)的值依次为“1

21、9,8,96,92,85,88”,经过该程序段“加工”后,数组元素 a(1)到 a(6)的值依次为()A8,19,92,96,85,88 B8,19,85,88,92,96C19,8,92,96,85,88 D19,8,85,92,96,88解析变量i从第4个位置开始,如果小于他前面的数,时行插入排序,结果为19,8,92,96,85,88,当i3时,条件不满足。答案C2小张编写程序,实现把数据temp插入到升序序列中,得到一个新的升序序列,原升序序列各元素已依次存放在数组元素a(1)、a(2)、a(3)、a(n)中。他编写的VB程序段如下:If temp a(n) Thena(n 1) te

22、mpElsej nDo While j 1 And temp a(j)_j j 1Loop _End If要使程序实现上述功能,则方框中的语句分别是()Aa(j 1) a(j)a(j 1) tempBa(j) a(j1)a(j 1) tempCa(j 1) a(j)a(j) tempDa(j) a(j1)a(j) temp解析如果满足条件temp 1ch Mid(s, i, 1)t (Asc(ch) Mod 32 4) Mod 26s1 s1 Chr(t 65)i i 1LoopText1.Text s1该程序段执行后,在文本框Text1中显示的内容是()AHGF BHgf CFGH DFgh

23、解析Asc(ch) Mod 32是取出他在字母表中位置,且位置是从126,若要构成环,可以理解为Asc(ch) Mod 32 1 5) Mod 26,即后移5位。从s的最后一个位置开始进行转换,转换后只有大写字母。答案C二、非选择题4对一段字符(仅包含大小写字母和数字)加密,加密规则为:字母和数字都往后循环顺移 3 位,如“a”变为“d”,“y”变为“b”;“0”变为“3”,“7”变为“0”,加密后字母在前,数字在后,字母按逆序排列,数字按顺序排列,如输入明文“a1b7Z8x3”,密文为“aCed4016”。(1)根据程序代码分析,“加密”按钮的名称是_。(2)根据加密规则,明文“9G78fb

24、Y5”,则密文为_。(3)请在划线处填入合适的代码:Private Sub Com_jm_Click()Dim x As String, ch As String, c1 As StringDim s1 As String, s2 As String, s As StringDim i As Integer, n As Integer, y As Integerx Text1.Textn Len(x)For i 1 To nch Mid(x, i, 1)If ch ”0” And ch ”a” And ch ”z” Then y (Asc(ch) Asc(”a”) 3) Mod 26 _ s1 c1 s1Else y (Asc(ch) Asc(”A”) 3) Mod 26c2 Chr(Asc(”A”) y)s1 c2 s1End IfNext i_Text2.Text sEnd Sub解析s2连接的是数字串,06依次加3后的值为39,79加3后的值为1012。将1012转换成02,可以用该数Mod 10的方法。答案(1)Com_jm(2)Beij2018(3)y(Val(ch)3) Mod 10c1 Chr(Asc(”a”) y)ss1s2 5小王编写了一个

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1