资源简介 2 6等腰三角形, 只要 a=b 或 b=c 或 a = c 中一个为 True,表达式a=b Or b=c Or a=c 值为 True。 选项 D 只能表明 c=a+b,而这甚至都不能组成一个三角形。8.某算法部分流程图如图所示 执行这部分流程,依次输入 203 10 8 11 0,则输出值是 ( )A. 11 B. 3 C.8 D.20答案 C 本题主要考查算法流程图。 分析该流程可得出其功能是:求输入序列中大于 0 的最小数,故最后 b 的值为 8,选项 C 正确。 本题也可以通过直接代入的方法求解,一样可以求得正确答案。9.有如下 VB 程序段:s = Text1.Text: n = 0:f = FalseFor i = 1 To Len(s)ch = Mid(s, i, 1)If ch >= "0" And ch <= "9" ThenIf Not f Thenf = True: n = n + 1End IfElsef = FalseEnd IfNext i运行该程序段后,在文本框 Text1 中输入“13+(123 23)?2”,则变量 n 的值为 ( )A.1 B.4 C.8 D.13答案 B 本题主要考查 VB 程序设计。 分析该程序可得出其功能是:统计文本框 Text1 中输入的字符串中包含的整数个数,“13+(123 23)?2”包含整数 13,123,23,2,共 4 个,选项B 正确。10.下列 VB 程序段的功能为:先计算数组 a 中各个整数的降序排序的名次存入数组 c 中,然后根据名次进行排序,排序结果存入数组 b 中 如数组元素 a(1) ~a(5)的各元素值为“2,3,1,0,8”,程序运行后 c(1) ~c(5)各元素的值为“3,2,4,5,1”, b(1)~b(5)各元素的值为“8,3,2,1,0”For i = 1 To n(1)Next iFor i = 1 To n - 1For j = i + 1 To nIf (2) Thenc(i) = c(i) + 1Elsec(j) = c(j) + 1End IfNext jNext iFor i = 1 To n(3)Next i为完成如题所述功能,上述程序段 3 个方框处的代码分别为( )A.(1)c(i) = 1 (2)a(j) > a(i) (3)b(c(i)) = a(i)B.(1)c(i) = 1 (2)a(j) < a(i) (3)b(i) = a(c(i))C.(1)c(i) = i (2)a(j) > a(i) (3)b(c(i)) = a(i)D.(1)c(i) = i (2)a(j) < a(i) (3)b(i) = a(c(i))答案 A 本题主要考查 VB 表达式和 VB 语句。 c( i)表示数组 a 第 i 位置元素降序排序的名次,即降序排序后的位置。 数组 c 各元素的初值为 1,为保证数组 a 中的元素两两比较一次,则 i 的范围:1→n 1,j 的范围:i+1→n。 由于是降序排序,若 a( j)>a( i),则 a( i)对应的名次号 c( i)加 1;否则 a( j)对应的名次号 c( j)加 1,故(1)处代码为“c( i) = 1”,(2)处代码为“a( j) > a( i)”。 c( i)表示数组 a 第 i 位置元素降序排序在数组 b 中的位置,依次处理数组 a 第 1 到 n 位置元素,通过赋值语句“b( c( i)) = a( i)”存入数组 b,故(3)处代码为“b(c( i)) = a( i)”,选项 A 正确。11.有如下 VB 程序段:For i = 1 To 8a(i) = Int(Rnd ? 10) + 1Next iFor i = 1 To 5 Step 2k = iFor j = i + 2 To 7 Step 2If a(j) < a(k) Or a(j) = a(k) And a(j + 1) <a(k + 1) Then k = jNext jIf i <> k Thent = a(i): a(i) = a(k): a(k) = tt = a(i + 1): a(i + 1) = a(k + 1): a(k + 1) = tEnd IfNext i运行该程序段后,数组 a 各元素的值可能为 ( )A.1,2,1,1,4,3,6,5 B.1,1,1,2,3,4,5,6C.0,1,5,2,7,4,5,6 D.3,4,5,2,6,4,7,11答案 B 本题主要考查产生随机数和选择排序的变式。Int(Rnd ? 10) + 1 可以产生 1~10 范围内的随机整数,故不可能有 0 或 11,选项 C 和 D 错误。 选择排序第 i 遍加工,若 a( j) < a(k),则更新 k 为 j,挑选出奇数位置最小元素的位置;若 a( j) = a(k) And a( j + 1) < a(k + 1),表明奇数位置相等,则比较后续相邻偶数位置元素与 a(k+1)的关系,即奇数位置元素最小值有多个,则 k 记录对应后续偶数位置最小数据的前一位置。 归纳可得该程序功能是按奇数位置数据为主要关键字升序,偶数位置数据为次要关键字升序进行选择排序。 选项 A 中“1,2”应该排在“1,1”的后面,选项 A错误。12.有如下 VB 程序段:a(1) = 5: a(2) = 3: a(3) = 6: a(4) = 8: a(5) = 9For i = 0 To 10b(i) = iNext i????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????3 6j = 0For i = 1 To 5b(j) = a(i): j = b(j)Next ij = 0: key = Val(Text1.Text)Do While j <> b(j)If key <> b(j) ThenList1.AddItem Str(b(j))j = b(j)ElseIf b(b(j)) <> b(j) Thent = b(j): b(j) = b(t): b(t) = tElseb(j) = jEnd IfEnd IfLoop运行该程序段,在文本框 Text1 中输入 6,则列表框 List1 中第3 行显示的内容为 ( )A.3 B.5 C.8 D.9答案 C 本题主要考查 VB 程序设计。 该程序用数组模拟链表,b( j)表示 j 的下一个元素为 b( j),建立链表后,数组元素 b(0)= 5、b(5)= 3、b(3)= 6、b(6)= 8、b(8)= 9、b(9)=9,b( j)= j 表示已到链表尾,后续已无元素。 key = 6,顺序查找 key,若 key <> b( j),则输出 b( j),调整 j = b( j),到下一节点,否则删除 b( j),故 6 被删除,列表框 List1 第 3 行输出8,选项 C 正确。二、非选择题(本大题共 4 小题,其中第 13 小题 4 分,第 14 小题 8 分,第 15 小题 7 分,第 16 小题 7 分,共 26 分)13.小王收集了 2017 年中国智能手机销量数据表,并使用 Excel软件进行数据处理,如图 a 所示图 a请回答下列问题:(1)区域 D3:D13 的数据是通过公式计算得到的,在 D3 单元格输入公式后,用自动填充功能完成 D4:D13 的计算,则D3 单元格中的公式是 (公式提示:销量份额=该品牌销量 / 所有品牌的总销量)(2)图 a 所示区域 A2:D13 的数据已进行了排序,则排序的主要关键字是(3)图 a 所示区域 A2:D13 的数据对“类别”列进行筛选如图b 所示,对“销量(万台)”列进行筛选如图 c 所示,则筛选出的品牌有 个(填数量)图 b 图 c(4)根据图 a 中数据制作图表如图 d 所示,要使图表的横坐标显示各手机“品牌”,则可进行的操作是图 d答案 (1)= C3 / SUM($C$3:$C$13) 或 = C3 / SUM(C$3:C$13)(2)类别(3)4(4)把图表数据区域改为 B2:B10,C2:C10解析 (1)销量份额=该品牌销量 / 所有品牌的总销量,可以用 SUM 函数计算总销量,由于向下填充公式时,SUM 函数的计算区域需固定不变,故行号前必须加“$”符号。(2)观察图表发现,“类别”相同的记录按“销量(万台)”或者“销量份额”降序排序,故可判断排序的主要关键字是“类别”,次要关键字是“销量(万台)”或“销量份额”。(3)“最大的 5 项”筛选出的是所有记录中最大的 5 项,分别是 “华为 & 荣耀”“OPPO”“VIVO”“小米”“苹果”,同时符合“类别”是“国内”的只有 4 个品牌。(4)观察图表可得,原图表的横坐标对应数据区域是“A2:A10”,为使横坐标显示“品牌”,则图表数据区域需改为“B2:B10,C2:C10”。14.小张使用 Flash 软件创作主题为“游子吟”的多媒体作品,如图 a 所示????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????4 6图 a请回答下列问题:(1)在脚本编写阶段,一般需经历以下四个步骤:①媒体元素分解,②编写文字脚本,③编写制作脚本,④编写脚本大纲,正确的步骤顺序是: (填数字)(2)测试影片时,要使“主界面”场景动画播放完后能自动停止,则“按钮”图层的第 60 帧应添加的动作脚本是(3)“小孩”图层的第 1 帧到第 12 帧利用元件实例实现小孩从舞台外移动到舞台中的动画效果,则该动画类型是(单选,填字母:A.动画补间 / B.形状补间 / C.逐帧动画)(4)测试场景时,“古诗”图层内容在播放完第 36 帧后消失,要使该图层第 36 帧中的内容一直在本场景中呈现,则可进行的操作是(5)测试影片时,当鼠标移到“退出”按钮上时,鼠标指针未变成小手状 该按钮部分编辑界面如图 b 所示,要使该按钮能够响应鼠标动作,则以下操作可行的是(多选,填字母:A.选中“文字”图层“点击”帧,执行“清除关键帧” / B.选中“文字” 图层“点击” 帧,执行“清除帧” / C.选中“文字”图层“点击”帧,执行“删除帧” / D.选中“背景”图层“点击”帧,执行“插入帧”)图 b(注:全部选对的得 2 分,选对但不全的得 1 分,不选或有选错的得 0 分)(6)测试影片时,弹出如图 c 所示的错误提示窗口,由图中信息可知,该动作脚本设置在 上(选填,按钮 / 关键帧)图 c答案 (1)④②③①(2)Stop();或 gotoAndStop(60);(3)A(4)选中“古诗”图层第 60 帧执行“插入帧”或“插入关键帧”,再选中该图层第 37 帧执行“清除关键帧”或选中“古诗”图层第 37 帧执行“删除帧”,再选中该图层第 60 帧执行“插入帧”或“插入关键帧” 或其他等价答案(5)ACD(6)关键帧解析 (1)脚本编写的步骤依次是:编写脚本大纲→编写文字脚本→编写制作脚本→媒体元素分解。(2)可以用帧脚本动作“Stop();”使“主界面”场景动画播放完后自动停止。(3)利用元件实例创建的补间动画类型是动画补间。(4)选中“古诗”图层第 60 帧执行“插入帧”或“插入关键帧”,再选中该图层第 37 帧执行“清除关键帧”,可以使第 37帧变为普通帧,第 36 帧关键帧可以延续至本场景最后一帧。选中“古诗”图层第 37 帧执行“删除帧”,则第 37 帧被删除,再选中该图层第 60 帧执行“插入帧”或“插入关键帧”,可把第 36 帧关键帧延续至本场景最后一帧。(5)选中“文字”图层“点击”帧,执行“清除关键帧”,则该图层“点击”帧变为普通帧,延续之前关键帧的内容,按钮能响应。 选中“文字”图层“点击”帧,执行“删除帧”,则“文字”和“背景”图层的“点击”帧都是空白,从右往左,最先出现关键帧,按钮能响应。 选中“背景”图层“点击”帧执行“插入帧”,则把“背景”图层“按下”这一个关键帧延续至“点击”帧,按钮也能响应。(6)观察题图 C 可得,添加的脚本动作是“ on( press) { stop();}”,若该脚本动作加在按钮上,则是正确的。 现在报错,则可判断该脚本添加在了关键帧上。15.小王基于插入排序思想设计了一个改进的排序算法,该算法是先用对分查找算法寻找插入位置,然后把数据插入相应位置 他编写 VB 程序功能如下:产生 10 个随机整数存入数组a 中,并在列表框 List1 中显示,单击“排序”按钮 Command1,对数组 a 升序排序,并在列表框 List2 中显示 程序运行界面如图所示,实现上述功能的 VB 代码如下:Dim a(1 To 10) As IntegerPrivate Sub Form_Load()'程序功能:产生 10 个随机整数存入数组 a,在列表框 List1 中显示,代码略End SubPrivate Sub Command1_Click()Dim key As Integer, i As Integer, j As IntegerDim m As Integer, low As Integer, high As IntegerFor i = 2 To 10key = a(i)If key < a(i - 1) Then????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????5 6low = 1: ①Do While low <= highm = (low + high) \2If a(m) > key Thenhigh = m - 1Elselow = m + 1End IfLoopFor j = i To high + 1 Step -1a(j) = a(j - 1)Next j②End IfNext iFor i = 1 To 10List2.AddItem Str(a(i))Next iEnd Sub(1)代码“Private Sub Command1 Click()”中的 Click 是(单选,填字母:A.对象名 / B.属性名 / C.事件名)(2)将程序代码中①②划线处代码补充完整(3)程序代码中的加框处代码有误,请改正(4)运行程序,单击“排序”按钮后,列表框 List1 中第 2 个整数“10”存储在排序后数组 a 的第 个位置(填数字)答案 (1)C(2)①high = i 1②a(high + 1) = key 或 a( low) = key(3)high + 2 或 low + 1(4)3解析 ( 1) Command1 Click 是事件处理过程名,其中Command1是对象名,Click 是事件名。(2)①插入排序,插入 a( i)时需要在 a(1)到 a( i 1)范围内通过对分查找寻找插入位置,故初始时 low = 1,high = i 1,故①处代码为“high = i 1”。 ②对分查找结束时必定有 low =high+1,high+1 或 low 即为 key 的插入位置,故②处代码为“a(high+1)= key”或“a( low)= key”。(3)插入位置为 high+1 或 low,则需要把 a( i 1)到 a(high+1)位置的元素逐个后移一个位置即 a( j)= a( j 1),j 表示待移入的位置,故 j 的取值范围是 i 到 high+2 或( low+1),故加框处代码应改为“high+2”或“ low+1”。(4)根据对分查找代码可得:当 key> =a(m)时,执行 low =m+1,在右区间继续查找,则查找序列中存在 key 时,key 插入在最后一个与之相同数据的下一位置。 故 List1 中第 2 个整数“10”插在前一个“10”的后面,即数组 a 的第 3 个位置。16.某种数据加密方法描述如下(加密前数据是 ASCII 字符):●以 8 个数据为一段,将 n 个待加密数据依次分割成若干个数据段,剩余数据(个数小于 8)为独立数据段●数据加密规则:数据个数等于 8 的数据段,对各个字符进行位置变换;数据个数小于 8 的数据段,不进行位置变换位置变换:用位置变换密钥数组 c,将数据段每个字符进行位置变换,方法如下:加密后某数据段的第 i 个元素 = 对应原数据段的第 c( i)个元素,其中 i = 1,2,……,8数值变换:位置变换后,依次取出各个字符进行数值变换:把该字符的 ASCII 码转二进制,然后与密钥 m 对应的二进制数(m 为 1 到 255 之间的整数)按位异或运算 异或运算(⊕)规则:如果 a b 两个值不相同,则 a⊕b 结果为 1;如果 a b 两个值相同,则 a⊕b 结果为 0,即:0 ⊕ 0 = 0,1 ⊕ 0 = 1,0 ⊕1 = 1,1 ⊕ 1 = 0●把上述处理的得到二进制数依次拼接,即构成最后的加密数据例如,待加密数据为“python3.50”,数组 c 各元素的值依次是数组 c 3 6 5 2 8 4 7则数据位置变换如下:如值变换密钥 m 为 35 (二进制表示是 00100011),则字符“t” (ASCII 码值是 116,二进制表示是 01110100)的数值变换过程如下:变换前 0 0 0 0密钥 0 0 0 0 0变换后 0 0 0(1)已知“A”的 ASCII 码值是 65,m = 35,则“A”数值变换后的结果是 (填二进制数据)(2)小李根据上述算法,设计了一个数据加密程序,其 VB 代码如下,请在划线处填入合适的代码Const n = 1024Dim c(1 To 8) As IntegerPrivate Sub Form_Load()'产生位置变换密钥数组 c,代码略End SubFunction convert(c As Integer) As String'程序功能:把整数 c 转成 8 位二进制数,代码略End FunctionPrivate Sub Command1_Click()Dim s As String, st As String, ss As String,res As StringDim i As Integer, j As Integer, start AsIntegerDim a(1 To n) As String, b(1 To n) As Strings = Text1.Textst = convert(Val(Text2.Text))For i = 1 To Len(s)a(i) = Mid(s, i, 1)Next ii = 1: start = -8Do While ①If i Mod 8 = 1 Then start = start + 8b(i) = ②i = i + 1LoopFor j = i To Len(s)????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????6 6b(j) = a(j)Next jFor i = 1 To Len(s)③For j = 1 To 8If Mid(ss, j, 1) = Mid(st, j, 1) Thenres = res + "0" Else res = res + "1"'按位异或Next jNext iText3.Text = resEnd Sub答案 (1)01100010(2) ①i <= (Len(s) \ 8) ? 8②a(start + c(( i 1) Mod 8 + 1))③ss = convert(Asc(b( i)))解析 ( 1) “A” 的 ASCII 码值是 65,用二进制表示为01000001,m= 35,用二进制表示为 00100011,按位做异或运算,相同为 0,相异为 1,可得: 01100010。(2)①以 8 个数据为一段进行分段处理,个数等于 8 的数据段需进行位置变换,故需进行位置变换的数据段有(Len( s)\ 8)个,数据个数为 i < = (Len(s) \ 8) ? 8。②位置变换方法:加密后数据段的第 i 个元素 = 原数据段的第 c( i)个元素,其中 i = 1,2,……,8,i 表示段内位置。 代码“Do While i < = (Len(s) \ 8) ? 8”中的 i 对应段内位置可为“1+( i 1) Mod 8”,start 表示该数据段第一个数据的前一个位置,故数组 b 第 i 位置元素是来自数组 a 第 start+c(1+( i1) Mod 8)位置,故②处代码为“a( start + c(( i 1) Mod 8+ 1))”。③位置变换后的数据需转二进制,再按位做异或运算,故③处的代码是调用自定义函数 convert 把 b( i)中字符的 ASCII码转二进制后存入变量 ss,故此处代码为“ ss = convert(Asc(b( i)))”。???????????????????????????????????????????????????????????????? 展开更多...... 收起↑ 资源预览