高三选考信息技术提升训练(PDF版,6份打包带答案)

文档属性

名称 高三选考信息技术提升训练(PDF版,6份打包带答案)
格式 zip
文件大小 3.1MB
资源类型 教案
版本资源 浙教版
科目 信息技术(信息科技)
更新时间 2020-03-10 12:41:23

文档简介

高三选考提升训练一
1. 下列表达式成立的是( )
A. Abs(-4.1) < Int(Abs(-4.1)) B. Val("4") <> Len("zjsx")
C. Sqr(256) = 4 ^ 2 D. Mid("307408", 1, 3) = Str(3007)
2. 有如下 VB 程序段:
Dim f(1 To 128) As Integer
Dim t As String
Dim i As Integer , j As Integer , y As Integer , max As Integer
t = Text1.Text
For i = 1 To Len(t)
c = Mid(t, i, 1)
If Asc(c) >= 97 And Asc(c) <= 122 Then f(Asc(c)) = f(Asc(c)) + 1
Next i
max = f(97)
For j = 98 To 122
If f(j) > max Then max = f(j)
Next j
文本框 Text1 的内容为“Hard work, good luck!”,执行程序后,变量 max 的值为
A. 3 B. 4 C. 5 D. 6
3. 小王要从表示年月日时分秒的字符串,如"2018-6-1 11:44:27"、"2018-8-30 07:54:54"、
"2018-11-25 17:21:34"等中提取表示小时的数据(如 11、07、17),因数据量很大,他计划
通过编程来快速提取,以下是他调试的代码:
Dim d As String
Dim p As Integer, kg As Integer, mh As Integer
p = 1 : d = "2018-6-1 11:44:27"
Do While (1)
If (2) Then kg = p
If (3) Then
mh = p : Exit Do
End If
p = p + 1
Loop
xfh = Trim(Mid(d, kg + 1, mh - kg - 1))
上述程序中划线处可选语句为:①Mid(d, p, 1) = " " ②Mid(d, p, 1) = ":" ③p <= Len(d),
则(1)、(2)、(3)处语句依次是
A. ①②③ B. ②③① C. ①③② D. ③①②
4. 有如下 VB 程序段:
Dim a(1 To 6) As Integer
Dim i As Integer, j As Integer, k As Integer
a(1) = 27: a(2) = 94: a(3) = 32: a(4) = 68: a(5) = 51: a(6) = 13
For i = 1 To 3
For j = 1 To 5
If a(j) > a(j + 1) Then
t = a(j): a(j) = a(j + 1): a(j + 1) = t
End If
Next j
Next i
该程序运行后,数组元素 a(4)、a(5)、a(6)的值分别是
A. 32 27 13 B. 51 68 94 C. 32 68 94 D. 51 27 13
5. 有如下 VB 程序段:
Dim a(1 To 20) As Integer, key As Integer
a(1) = 1: a(2) = 4
For i = 3 To 10
a(i) = a(i - 1) + a(i - 2)
Next i
key = (a(1) + a(i - 1)) \ 2
i = 1: j = 10: c = 0
Do While i <= j
m = Fix((i + j) / 2 - 0.5)
c = c + 1
If key = a(m) Then
Exit Do
ElseIf key > a(m) Then
i = m + 1
Else
j = m - 1
End If
Loop
执行程序,语句 c=c+1 执行的次数是( )
A. 1 B. 2 C. 3 D. 4
6. 小朱制作主题为“flash 之逐帧动画”的多媒体作品,首先使用 Photoshop 软件处理图
片,然后用 Flash 软件制作动画。请回答下列问题:
第 6 题图 a
(1)如第 6 题图 a 所示,若要保存为不包含文字内容、背景透明的格式文件,以下操作
中合理的是__________。(多选,填字母:A.将“背景”图层的不透明度设置为 0% B.删除
“找寻”图层 C.设置“背景”图层为隐藏 D.“存储为”JPEG 格式文件 E.“存储为”PNG 格
式文件)
第 6 题图 b
(2)如第 6 题图 b 所示,“文本说明”图层第 12 帧至第 21 帧实现了顺时针旋转 2 次
的动画效果,该图层的补间类型是__________。
(3)测试影片时,发现“文本说明”图层在补间动画结束后就消失了,如果要使该文本说
明文字一直呈现至该场景播放结束,应进行的操作是:__________。
(4)测试影片时,单击“片头”场景中的“记录人生”按钮,影片跳转至“记录人生”场
景的第 1 帧并播放,同时停止播放所有声音,则该按钮上应添加的动作脚本是:__________。
7. 在某次婚庆活动中有一个“掷骰子赢奖品”游戏,规则如下:每桌都有一位宾客可获得
一次掷骰子的机会,每颗骰子最小一点,最大六点,共六颗,以六颗骰子的总点数作为评比
依据,点数超过 20 且排在前六的宾客最终可获得相应的奖品。小俞据此编写了 VB 模拟
程序。点击“生成随机数”按钮 Command1,即模拟进行 9 次掷骰子动作,将相应的序号
和点数显示在列表框 List1 中,点击“限定条件降序排序”按钮 Command2,按限定之条
件进行降序排序,并将排序后的数据显示在列表框 List2 中(如第 7 题图)。代码如下:
Const n = 10
Dim xh(1 To n) As Integer
Dim sz(1 To n) As Integer
Private Sub Command1_Click()
List1.AddItem "序号 点数"
For i = 1 To n
s = 0
For j = 1 To 6
Randomize
_______________
s = s + t
Next j
xh(i) = i : sz(i) = s
List1.AddItem Str(xh(i)) + " " + Str(sz(i))
Next i
End Sub
Private Sub Command2_Click()
List2.AddItem "序号 点数"
For k = 1 To n - 1
m = k
For p = k + 1 To n
If sz(p) > sz(m) Then m = p
Next p
If m <> k Then ‘##
w = sz(m): sz(m) = sz(k): sz(k) = w
w = xh(m): xh(m) = xh(k): xh(k) = w
End If ‘##
Next k
For r = 1 To n
List2.AddItem Str(xh(r)) + " " + Str(sz(r))
Next r
End Sub
(1)如果想实现清空列表框 List1 的全部内容,可实现上述效果的语句是________(单选,
填字母:A. List1.Text=”” B. List1.Caption=”” C. List1.Clear)
(2)程序代码中,加框处有错,请改正。
(3)程序代码中,将划横线处语句补充完整。
(4)程序代码中,若删除标有“##”的两行语句,能否实现与如图那样的排序效果:__________
(单选,填字母:A. 能 B. 不能)






























参考答案
1-5 CADBD
6.
(1)B C E (2 分)
(2)动画补间 (2 分)
(3)在“文本说明”图层第 28 帧作“插入帧”操作
或其它等效答案 (2 分)
(4)on ( press ) {gotoAndPlay("记录人生", 1);stopAllSounds();}
或其它等效答案 (2 分)
7.
(1)C (1 分)
(2)sz(p) > sz(m) And sz(p) >20
或 sz(p) >= sz(m) And sz(p) >20
或 其它等效语句 (2 分)
(3)t = Int(Rnd * 6) + 1 (2 分)
(4)A (2 分)
高三选考提升训练三
1. 生成 6.0 到 12.0 之间随机实数并保留一位小数,如果用随机函数 Rnd 产生这个数, 下列能够符合要
求的是( )
A. (Rnd*61+60)/10 B. Int(Rnd*61)/10+6 C. Int(Rnd*60+60)/10 D. Int(Rnd(60))/10+6
2. 某算法流程图如图所示。执行这部分流程后,输出值为( )
A. 223 B. 224 C. 225 D. 226
3. 有如下 VB 程序段:
Private Sub Command1_Click()
Dim s As Integer
s = Val(Text1.Text)
Text1.Text = f(s)
End Sub
Function f(x As Integer) As String
If x = 1 Then f = 1 Else f = f(x - 1) + 2
End Function
在 Text1 中输入 3 后点击按钮 Command1,文本框 Text1 中
显示的内容是( )
A. 3 B. 5 C. 7 D. 9
4. 有如下 VB 程序段:
For i = 1 To 5
For j = 1 To 10
If j Mod i = 0 Then a(j) = (1 + a(j)) Mod 2
Next j
Next i
s = 0
For i = 1 To 10
s = s + a(i)
Next i
已知数组 a 中的所有元素初值为 0,运行上述程序段后,变量 s 的值是( )
A. 4 B. 5 C. 6 D. 7
5. 有如下 VB 程序段:
n = 6
For i = 2 To 4
k = a(n - i + 1)
j = n - i + 2
Do While a(j) < k
a(j - 1) = a(j)
j = j + 1
If j = n + 1 Then Exit Do
Loop
a(j - 1) = k
Next i
数组元素 a(1)到 a(6)的值分别为“23,6,37,45,11,52”,程序运行后,a(1)到 a(6)的值依次为( )
第 2 题
A. 6,23,37,45,11,52 B. 23,6,11,37,45,52
C. 6,11,23,37,45,52 D. 23,6,37,11,45,52
6. 某对分查找改进算法 VB 程序段如下:
i = 1: j = n
Do While i <= j
If i + 1 = j Then
If Abs(a(i)) < Abs(a(j)) Then Label1.Caption = a(i) Else Label1.Caption = a(j) Exit Do
End If
m = (i + j) \ 2
If a(i) * a(m) > 0 Then i = m
If a(j) * a(m) > 0 Then j = m
Loop
非零数组元素 a(1)到 a(8)的值依次是“-8,-5,-3,-2,1,4,7,9”,则以上程序段 执行后,在 Label1
中显示的内容是( )
A. -8 B. -2 C. 1 D. 9
7. 小明使用 Flash 软件创作了一个关于“江雪”的多媒体作品,请回答下列问题:
(1)小明进行了下列工作,其中属于“脚本编写”的是
(多选,填字母:A. 把多媒体作品取名为“江雪” /B. 列出作品需要的图片、声音 等素材清单 /C. 计划
将作品通过微博推广 /D. 用文字详细描述作品的展示过程/E. 要求使用 Flash 软件进行制作)
(注:全部选对得 2 分,选对但不全的得 1 分,不选或者有错选的得 0 分)
(2) 测试影片时,鸟扇动着翅膀从舞台左侧往右侧飞行,飞至舞台外消失,由此可知鸟是用元件库中的
(单选,填字母:A.按钮元件/B.影片剪辑元件/C.位图图片)产生的实例。
(3) 在“背景”图层第 1 帧添加动作脚本“stop();”,同时“music”图层中音频的 同步方式如下图所
示,请问测试影片刚开始能否听见声音? (选填:能/不能)
(4) 测试影片时,以下操作不会改变原动画效果的有 (多选,填字母)
A.对“背景”图层第 1 帧复制粘贴至第 25帧 B.对鸟图层的第 60 帧执行插入帧操作
C.删除“music”图层的最后 5 帧 D.对“按钮”图层第 60 帧执行清除帧操作
(5)单击“退出”按钮,实现关闭并退出动画,该按钮添加的动作脚本是 。
8.冬天到了,室外运动显然已经不适合,因此效实中学准备要举办室内的乒乓球赛啦。现在有 2
k
个同学
参加,每天安排若干场比赛,且每位同学每天仅参加一场比赛,试给出一种赛程安排表,使得 2
k-1
天内任意
两个同学都至少比赛过一场。 按照比赛要求,可以设置赛程表为 n行 n-1 列的二维表,其中第 i 行第 j 列
的元素表示和第 i个选手在第 j天进行比赛的同学编号。
若 k=1,则赛程表如下:
若 k=2,则赛程表如下:
观察两个表不难发现:
①二个表的左上角和右下角与第一个表相同;
②第二个表的左下角和右上角相同,恰好是第一个表各元素值加 2。 因此可以通过第一个表来构造第二个
表。同理可得,当 n=2k 个同学的比赛日程表,可以通过 n=2k-1 个同学的比赛日程表构造得到。
实现上述功能的 VB 程序如下:
Private Sub Command1_Click() Dim a(1 To 10000) As Integer
Dim n As Long, tmp As Long, i As Integer, j As Integer, t As Integer a(1) = 1 : n = 1
k = Val(Text1.Text)
For t = 1 To k
tmp = ①
n = n * 2
For i = tmp + 1 To n
For j = 1 To tmp

Next j
Next i
For i = tmp To n '改错
For j = tmp + 1 To n
a((i - 1) * 2 ^ k + j) = a((i + tmp - 1) * 2 ^ k + (j + tmp) Mod n)
Next j
Next i
For i = tmp + 1 To n
For j = tmp + 1 To n
a((i - 1) * 2 ^ k + j) = a((i - tmp - 1) * 2 ^ k + j - tmp)
Next j
Next i
Next t
For i = 1 To n st = ""
For j = 1 To n
st = st + Str(a((i - 1) * 2 ^ k + j))
Next j
List1.AddItem st
Next i
End Sub
请回答下列问题:
(1)该按钮事件的标准名为 。
(2)加框处代码有误,请改正。
(3)补充①、②处代码实现上述功能。
9.效实中学的同学静校时间经常要被叫去过关,今天又有 n 个同学要去过关啦~但这些同学很不幸,他们必
须先过 A 老师的关,再过 B 老师的关,才能完成过关任务。 现在知道每个人过 A、B 关的时间,比如第 i
个人,过关的时间分别为 A ,B 。求一个过关顺序使得过关时间总用时最短,就是让 A、B老师的总空闲
时间最短。 很明显第一个同学在 A 老师处过关时,B 老师必须等待,最后一个同学在 B 老师处过关时,A
老师也在等待。因此将在 A处过关最短的放在最前面,将在 B处过关最短的放在最后面
假设 M 是 A ,B 中较小的那一个,例如 N = 3 时,过关时间如下图:
若 M = A ,则将他排在从头开始过关者后面;
若 M = B ,则将他排在从尾开始过关者前面;
则最优的过关顺序为(同学 2,同学 3,同学 1),计算最短时间 = 3 + 19 + 22 +10 = 54,
计算时请注意,在过程中若 A 老师的过关时长较长,会增加 B老师的过关时长,最后还需要加上 B老师过
关的最后一个同学的过关时长。
实现上述功能的 VB 程序如下:
Private Sub Command1_Click()
Dim a(1 To 100) As Integer, b(1 To 100) As Integer
Dim m(1 To 100) As Integer, s(1 To 100) As Integer
Dim ans(1 To 100) As Integer, n As Integer, tmp As Integer
Dim k As Integer, i As Integer, j As Integer, t As Integer
排序后
'输入略,将同学在 A 老师处的过关时间存在 a 数组 , 在 B 老师处的时间存在 b 数组
n = 5
For i = 1 To n
If a(i) > b(i) Then m(i) = b(i) Else m(i) = a(i)
s(i) = i
Next i
For i = 1 To n - 1
For j = i + 1 To n
If ① Then
tmp = m(i): m(i) = m(j): m(j) = tmp tmp = s(i): s(i) = s(j): s(j) = tmp
End If
Next j
Next i
k = 0: t = n + 1
For i = 1 To n
If ② Then
k = k + 1
ans(k) = s(i)
Else
t = t - 1
ans(t) = s(i)
End If
Next i
k = 0: t = 0
For i = 1 To n
k = k + a(ans(i))
If ③ Then t = k
t = t + b(ans(i))
Next i
Print t
End Sub
请回答下列问题:
(1)若在 A 老师处过关的 5 个同学的时间分别是:3 5 8 7 10,在 B 老师处过关的是 6 2 1 4 9,那么,
最终过关的总时间是 ?
(2)补充①、②、③处代码实现上述功能。
参考答案
1 B 2 C 3 B 4 C 5 B 6 C
7.(1)BD (2 分)
(2)B (1 分)
(3)能 (1 分)
(4)BC (2 分)
(5)On (press){fscommand(“quit”);}
或 On (release){fscommand(“quit”);} (2 分)
8.(1)Click (1 分)
(2)1 To tmp (2 分)
(3)
① n (2 分)
② a((i - 1) * 2 ^ k + j) = a((i - tmp - 1) * 2 ^ k + j) + tmp
(2 分)
9.(1)34 (1 分)
(2)① m(i)>m(j) (2 分)
② m(i)=a(s(i)) (2 分)
③ t高三选考提升训练四
1. 使用 Flash软件制作多媒体作品,测试影片时,动画播放到“上学去”场景第 45帧时自动停止,
点击“按钮”图层第 45帧的按钮后,影片继续播放,部分界面如图所示:
下列说法不正确的是
A.“按钮”图层第 1帧执行“清除关键帧”命令,按钮将从第 1帧开始显示
B.选中“太阳”图层第 20帧到 30帧, 执行“删除帧”命令后,太阳图层依然有两段动画
C.将“背景”图层的第 12帧拖动到第 6帧,“背景”图层中的内容约 1秒后在当前场景中消失
D.“音乐”图层第 45帧设置的帧动作是“stop();”
2.有如下 VB程序段:
Private Sub Text1_Change()
Dim a As Integer, i As Integer
a = Val(Text1.Text)
For i = 1 To 7 Step 3
If a <= 1000 Then a = a + i
Next i
Text1.Text = Str(a)
End Sub
执行该程序段,在文本框 Text1 中分别输入“1”、“2”、“3”、“4”,text1中的结果
A.输入“1”时最大 B.输入“2”时最大 C.输入“3”时最大 D.输入“4”时最大
3. 有如下 VB 程序段:
For i = 1 To 6
a(i) = Int(Rnd * 10) + 1
Next i
For i = 1 To 5
If i Mod 2 = 1 And a(i) < a(i + 1) Then
t = a(i): a(i) = a(i + 1): a(i + 1) = t
Else
a(i) = a(i) - 1
End If
Next i
执行程序后, a 数组各元素可能是
A.9,9,8,7,5,3 B.2,6,10,8,9,5
C.9,6,7,3,11,8 D.9,3,8,-1,7,2
4.某算法程序段如下:
Dim a(1 To 10) As Integer
Dim i As Integer, j As Integer
Dim key As Integer
i = 1: j = 10: n = 0
Randomize
key = Int(Rnd * 10) * 2 + 1
Do While i <= j
m = Int((i + j) / 2 + 0.5)
If key = a(m) Then
Exit Do
ElseIf key > a(m) Then
j = m - 1: n = n - 1
Else
i = m + 1: n = n + 1
End If
Loop
Text1.Text = Str(n)
已知数组元素 a(1)至 a(10)的值依次为 20,19,17,16,14,11,8,5,2,0 若执行该程序后,
文本框 Text1中显示的内容不可能是
A.-3 B.-2 C.-1 D.1
5.有如下 VB 程序:
Private Sub Command1_Click()
Dim s As Integer, i As Integer, j As Integer
s = 0: i = 5
Do While i >= 1
For j = 1 To i
If i Mod j = 0 Then s = s + fx(j)
Next j
i = i - 2
Loop
Text1.Text = Str(s)
End Sub
Function fx(n As Integer) As Integer
If n = 1 Then fx = 2
If n = 2 Then fx = 7
If n > 2 Then fx = fx(n - 2) + fx(n - 1)
End Function
该程序运行后,文本框 Text1 中显示的内容是( )
A. 38 B.40 C.68 D.70
6.有如下程序段:
Dim a(1 To 8) As String, s As String
s = "AbAdAbyAbbeAcreAbbetAcketAbdey"
p = 0
For i = 1 To Len(s)
ch = Mid(s, i, 1)
If ch = "A" Then
If p > 0 Then List1.AddItem a(p)
p = p + 1
a(p) = ch
Else
a(p) = a(p) & ch
End If
Next i
i = p
Do While i > 1
For j = p To p - i + 2 Step -1
If a(j) < a(j - 1) Then t = a(j): a(j) = a(j - 1): a(j - 1) = t
Next j
i = i - 1
Loop
List1.AddItem a(i) & a(p)
执行程序后,输出 a(i)和 a(p)的值分别为( )
A.“Ab”和“Acket” B.“Ad”和“Ab” C.“Aby”和“Ad” D.“Ab”和“Ad”
7. 小张制作了主题为“垃圾分类”的多媒体作品。他首先用 Photoshop 软件制作一张背景图片,
然后用 Flash 软件制作相关动画,请回答下列问题:
第 7 题图 a
(1)如第 7 题 a 所示,下列操作不可行的是 ____ ▲ ______(多选,填字母:A.用“文字”
工具里的字体大小命令调整“垃圾分类”图层的文字大小/B.对“厨余垃圾”图层重命名/ C.用
“自由变换”操作改变“有害垃圾”图层的图像大小/D.为“可回收物”图层添加图层样式 /E.选
中“背景”图层设置“镜头光晕”滤镜)/F.直接调整“背景”图层的不透明度(2 分)
第 7 题图 b
(2)当前状态下,将帧频改为 24fps,其它场景的播放速度__▲ _(选填字母:A.变快/B.变慢)。
(3)“热气球”图层实现的是热气球图像变成“垃圾分类”文字的动画效果,则该图层上的动画属
于 _ ▲__。(选填,填字母,A.逐帧动画/B.形状补间动画/C.动画补间动画)(1 分)
(4)为使“按钮”图层的内容从动画开始就出现在舞台上,正确的操作是 ____▲ ______。(1 分)
(5)测试场景时,在当前文件夹中会产生一个 ____▲ ______的文件(填写完整的文件名)。(1 分)
此时单击“了解更多”按钮跳转至百度首页“www.baidu.com”,则“了解更多”按钮上的动作脚本
为 ____▲ ______。(1 分)
(6)测试影片时,弹出如第 14 题图 c 所示的错误提示窗口,由图中信息可知,该动作脚本设置
在 __▲ __上(选填字母,A.按钮 / B.关键帧)。(1 分)
第 7 题图 c
8.加工厂有一批钢管,现在需要把这些钢管切割成一些长度相等的小段(并不是所有钢管都一定
要用完,可以有剩余),你的任务是计算能够得到的小段钢管的最大长度。钢管长度的单位是 cm,
假定原始钢管长度都是正整数,我们要求切割得到的小段钢管的长度也是正整数。
例如原始有 3 段钢管,长度分别为{ 232、125、580 } ,需要将这 3 段钢管加工成长度相等
的 8 段,得到的最大值为 116。程序运行时,在 List1 中显示原始 k 段钢管长度,在文本框 Text1
中输入需要加工的总段数 t,单击按钮 Command1,在标签 Label1 中输出切割后得到的小段钢管
的最大长度。运行结果如下图所示,实现上述功能的 VB 代码如下:
第 8 题图
Const n = 1000
Dim a(1 To n) As Integer '存储原始钢管的长度
Dim k As Integer 'k 存储待加工钢管总数
Private Sub Form_Load()
'读取待加工钢管数,存储在变量 k 中
'读取每段钢管的长度,依次存储在数组 a 中
'将待加工钢管总数和每段钢管原始长度显示在列表框 List1 中
'代码略
End Sub
Function cut(x As Integer, t As Integer) As Boolean
Dim i As Integer, num As Integer
num = 0: cut = False
For i = 1 To k
num = ____▲ ______ '②
If num >= t Then cut = True: Exit Function
Next i
End Function
Private Sub Command1_Click()
Dim t As Integer, i As Integer
Dim left1 As Integer, right1 As Integer, m As Integer
t = Val(Text1.Text) 't 存储加工后的钢管总段数
For i = 1 To k
If a(i) > right1 Then right1 = a(i)
Next i
right1 = right1 + 1
left1 = 0
Do While left1 + 1 < right1
m = (left1 + right1) \ 2
If Not cut(m, t) Then
right1 = ____▲ ______ '①
Else
left1 = m
End If
Loop
Label1.Caption = Str( m ) '改错
End Sub
(1)上述代码中有____▲ ___个事件处理过程。
(2)如果原始 3 段钢管长度分别为{ 232、125、580 },输入需要加工的总段数 t 是 6,则加工
后的钢管最大平均长度是____▲ ___。
(3)加框处语句有错,请改正。
(4)请将程序①②划线处代码补充完整。
9. 某种字符加密方法描述如下:
①将明文字符串 s 中的每个字母字符根据它所在的位置往后移动相应的位置,并转化为对应的小
写字母或大写字母(例如:大写字母 A 往后移动 5 位变成 F,转化成小写字母得到 f;小写字母
y 往后移动 8 位得到 g,转化成大写字母得到 G),非字母字符不处理,得到新串 ss。
②将①得到的新串 ss 从中切割成两部分,再将后面一段字母依次逐个插入到前一段字符后边,组
成一段密文。
例如:“ Good.Luck !”生成密文过程如下:
①明文字符串 s 移位和大小写转换过程:
②将①得到的密文 ss 切割成两部分:假定 n 为明文字符串的长度
n 为偶数:[1?n\2]、[n\2+1?n]
n 为奇数:[1?n\2、n\2+1]、[n\2+2?n]
例如将上述(1)得到的字符串 6~10 位置的字符依次、逐个连接在 1~5 字符后面,生成密文如下:
(1)已知采用上述加密方法得到的密文是“iTCDS!”,则明文为:____▲ ___。
(2)根据上述加密算法,小张设计了一个字符串加密程序,运行界面如图所示,请在划线处填入
合适的代码。
第 9 题图
Private Sub Command1_Click()
Dim s As String, ss As String, mw As String, c As String
Dim n As Integer, i As Integer, j As Integer
s = Text1.Text: n = Len(s)
For i = 1 To n
c = Mid(s, i, 1)
If iszm(c) Then
ss = ____▲ ______ '①
Else
ss = ss + c
End If
Next i
i = 1: j = n \ 2 + 1
If n Mod 2 = 1 Then j = j + 1
Do While i <= n \ 2
mw = ____▲ ______ '②
i = i + 1: j = j + 1
Loop
If n Mod 2 = 1 Then mw = ____▲ ______ '③
Text2.Text = mw
End Sub
Function iszm(c As String) As Boolean
iszm = False
If c >= "a" And c <= "z" Or c >= "A" And c <= "Z" Then iszm = True
End Function
Function movec(x As String, w As Integer) As String
If x >= "a" And c <= "z" Then
movec = Chr((Asc(x) - 97 + w) Mod 26 + 65)
Else
movec = ____▲ ______ '④
End If
End Function
参考答案
1、D
2、C
3、A
4、A
5、B
6、D
7.
(1)(2分)CF
(2)(1分)A
(3)(1分)B
(4)(1分)选中“按钮”图层的最后一帧将其移动到第 1帧。
或者,选中“按钮”图层的第 1帧右键清除关键帧。
或其他等价答案。
(5)(1分)垃圾分类_main.swf
(1 分)on(release){geturl(“http://www.baidu.com”);}
或 on(press){geturl(“http://www.baidu.com”);}
(6)(1分)B
8.
(1)(1分)2
(2)(1分)125
(3)(2分)left1
(4)①(1分)m②(2分)num + a(i) \ x
9.
(1)(1分)Happy!
(2) ①(1分)ss + movec(c, i)
②(1分)mw + Mid(ss, i, 1) + Mid(ss, j, 1)
③(2分)mw + Mid(ss, i, 1)
④(2分)Chr((Asc(x) - 65 + w) Mod 26 + 97)
高三选考提升训练五
1.有如下 VB 程序段:
str1 = Text1.Text : len1 = Len(str1)
i = 0
Do While i <= len1
m = 0 : c = Mid(str1, i, 1)
Do While c <> ","
m = m * 10 + Val(c)
i = i + 1
c = Mid(str1, i, 1)
Loop
i = i + 1
If m Mod 3 = 0 Then n = n + 1
Loop
Label1.Caption = Str(n)
在文本框 Text1 中输入“123,35,43,23,56,78,132,”,单击命令按钮 Command1 运行程序,则在
Label1 中显示的结果为( )
A.2 B.3 C.4 D.5
2.有如下 VB 程序段:
n = 8
For i = 1 To n
d(i) = Int(Rnd * 10) + 1
Next i
For i = 2 To n
k = 1
For j = 1 To n - i
If d(j) * k > d(j + 2) * k Then
temp = d(j): d(j) = d(j + 2): d(j + 2) = temp
End If
k = -k
Next j
Next i
执行该程序段后,d 数组各元素可能是( )
A.1,3,4,5,6,6,7,8 B.6,4,5,6,5,7,1,10
C.2,11,3,8,5,6,8,5 D.3,9,3,5,4,4,10,1
3.某对分査找算法的 VB 程序段如下:
Private Sub Command1_Click()
Dim d(10) As Integer, i As Integer, j As Integer, m As Integer
Dim Key As Integer, s As String
Key = Int(Rnd * 100)
s = "": i = 1: j = 10
Do While i < j
m = (i + j) \ 2
If Key = d(m) Then Exit Do 'Exit Do 表示退出循环
If Key < d(m) Then
j = m: s = s + "L"
Else
i = m + 1: s = s + "R"
End If
Loop
Label1.Caption = s
End Sub
若数组元素 d(1)到 d(10)的值依次为“3,7,9,13,16,18,19,30,45,57”,执行该程序段后,
标签 Label1 上显示的字符串 s 出现字母“L”和“R”个数相同的情况有( )
A.1 种 B.2 种 C.3 种 D.4 种
4.逻辑运算符 And 在计算数值时是转换为二进制数后按位进行与运算,计算规则是:1 And1 = 1,1
And 0 = 0,0 And 1 = 0,0 And 0 = 0, 例如 7 转换为二进制数 00000111,12 转换为二进制为
00001100,因此 7 And 12 的结果为 4。有如下 VB 程序段:
Private Sub Command1_Click()
n = 0
For i = 1 To 31
k = i
t = 0
Do While k > 0
k = k And (k - 1)
t = t + 1
Loop
If t = 3 Then n = n + 1
Next i
Label1.Caption = Str(n)
End Sub
单击命令按钮 Command1,标签 Label1 中显示的结果为( )
A.6 B.8 C.10 D.12
5.小李制作了主题为“杭州亚运会“的多媒体作品,首先用 Photoshop 软件处理了图片,然后使
用 Flash 软件制作动画。请回答下列问题:
(1)如图所示,下列说法正确的是______(多选,填字母:A.可以通过“填充”命令更改图层” Hangzhou
2022”的文字颜色/B.“背景”图层一定没有添加了“高斯模糊”的滤镜效果/C.调整“场馆”和“背
景”的图层顺序,场馆图像将不可见/D.将该图像文件保存为“a.jpg”,则” Asian Games”文字
上的“外发光”效果不可见/E.无法直接删除“场馆”图层)(注:全部选对 2 分,选对但不全 1 分,
不选或有错选 0 分)
(2).将动画 GIF 文件“闪烁.gif”导入库中产生一个影片剪辑元件,则该元件中动画的动画类型
是__ _(单选,填字母:A.逐帧动画/B.形状补间动画/C.动画补间动画)
(3).影片剪辑元件“礼花”的编辑界面如图 b所示。若在不改变其他动画效果的情况下,希望礼花
的动画速度提高一倍,下列操作可行的是_________(单选,填字母:A.将帧频改成 6fps/B.删除
第 11-20 帧/C.将 20 帧移动至第 10 帧,并删除 11-20 帧)
图 b
图 c
(4).如图 c 所示,按钮一开始就出现,若要使按钮直到最后才出现,则应如何操作
__________________________________________________________________
(5).测试影片时,动画播放到最后,停止。按钮出现,
单击按钮,将停止声音(声音设置如图 d 所示),并打开
http://www.hangzhou.net 网页。那么按钮上的动作命令

__________________________________ 图 d
6.小明用 VB 编写了统计短文(不超过 500 字)中英语单词频次的程序。在文本框 Text1
中输入短文,单击“单词统计”按钮 Count 后,在列表框 List1 中按字典升序输出单词
(不区分大小写)和出现频次,程序运行结果如第 6 题图所示。
第 6 题图
请回答下列问题:
(1)观察程序代码,该事件处理过程名为 。
(2)实现上述功能的 VB 程序如下,请在划线处填入合适的代码。
Private Sub Count_Click()
Dim word(1 To 500) As String, num(1 To 500) As Integer
Dim s As String, c As String, tmp As String, t As Integer
Dim i As Integer, j As Integer, k As Integer, low As Integer, high As Integer
Dim m As Integer, n As Integer, b As Integer
For i = 1 To 500
num(i) = 0
Next i
s = Text1.Text : n = Len(s)
i = 1 : b = 1 : m = 0 : j = 0
Do While i <= n
c = Mid(s, i, 1)
If c >= "A" And c <= "Z" Or c >= "a" And c <= "z" Then
j = j + 1
Else
If j > 0 Then
tmp = ①
low = 1
high = m
Do While low <= high
t = (low + high) \ 2
If tmp = word(t) Then Exit Do
If tmp < word(t) Then high = t - 1 Else low = t + 1
Loop
If ② Then
For k = m To low Step -1
word(k + 1) = word(k)
num(k + 1) = num(k)
Next

num(low) = 1
m = m + 1
Else
num(t) = num(t) + 1
End If
j = 0
End If
b = i + 1
End If
i = i + 1
Loop
List1.Clear
For i = 1 To m
List1.AddItem word(i) + ":" + Str(num(i)) + "次"
Next i
End Sub
Function Lowcase(t As String) As String
Dim c As String, s As String, i As Integer
s = ""
For i = 1 To Len(t)
c = Mid(t, i, 1)
If c >= "A" And c <= "Z" Then s = s + Chr(Asc(c) + 32) Else s = s + c
Next i

End Function
7.循环排序。任意生成 10个[1, 100]之间的整数,编程实现将这 10个数进行循环降序排序,即首尾
相连后是一个降序序列。要求最大值位置不变,然后依次进行排列。程序运行界面如图所示:
(1)要使程序启动后,窗体的标题栏显示“循环排序”文字,可在 Form_ Load 事件过程中添加语句
_ ▲ (单选, 填字母)
A. Form1=" 循环排序” B. Form1. Name="循环排序”
C. Form1. Caption="循环排序” D. Form. Capt ion="循环排序”
(2)实现上述功能的 VB程序如下,加框处的代码有误,请改正,并将划线处的代码补充完整。
Const n= 10
Dim a(1 To n) As Integer, b(1 To n) As Boolean
Private Sub Form_ Load()
随机生成 n个[1,100]之间的整数,存储在数组 a中,并初始化数组 b为 False,
'按顺序输出在列表框 List1 中,代码略。
End Sub
Private Sub Command1_ _Click()
Dim max As Integer, pMax As Integer, temp As Integer
Dim i As Integer, j As Integer, k As Integer
max= a(1): pMax= 1
For i=2 To n
If a(i) >= max Then
max= a(i)

End If
Next i
b(pMax) = True: pMax = pMax+ 1
If pMax> n Then pMax= 1
For i= 1 To n-2
k = pMax
For j= 1 To n
If a(j) < a(k) Then k=j "②
Nextj
If k <> pMax Then
temp = a(k): a(k) = a(pMax): a(pMax) = temp
End If
b(pMax) = True
pMax=_ ③
Next i
Fori= 1 To n
List2.AddItem Str(a(i))
Next i
End Sub
8.酒店房间管理问题:某酒店房间(房间数小于 1000) 编号按 1、2、....连续编号,客房经理对没有
入住的房间使用如 7下方法来登记管理。连续的空房间,登记第一个房间的编号和连续的空房间数,
比如空房间 1, 2, 6, 7, 8, 10,则登记 3 条记录,分别为 1_2, 6_ 3,10_1。某旅客如果退房,需
要把这个房间号也登记进去,共有 4中情况需要处理:
(1)上靠:若退的房间号为 3,则原来登记的记录变为 1_3, 6_3,10_1;
(2)下靠:若退的房间号为 5,则原来登记的记录变为 1_2,5_4,10_1;
(3)上下靠:若退的房间号为 9,则原来登记的记录变为 1_2,6_5;
(4)上下都不靠:若退的房间号为 4,则原来登记的记录变为 1_2, 4_1, 6_3,10_1
根据上述规则,小明编写了相应的 VB程序,程序启动时读入空房间数据,并在列表框 List1
中显示,在文本框 Text1中输入退房号,单击“退房”按钮后更新列表框 List1 中的数据。
程序界面如下图所示,请回答下列问题:
(1)当前登记的记录有 3条,分别为 2_3,6_2,9_4。某旅客退掉 8号房间,则登记的记录将变为_▲_。
(2)实现上述功能的 VB程序如下,请将划线处的代码补充完整。
Constn = 1000
Dim a(0 To n) As Integer 'a(i)保存 第 i条记录的开始房间号
Dim b(0 To n) As Integer 'b(i)保存 第 i条记录的房间数
Dim c As Integer, k As Integer, sp As Integer 'k 为原始记录数
Private Sub Form_Load()
'程序启动时从数据库中读取原始 k条记录,依次存入 a(1),b(1),a(2),b(2),...a(k),b(k),代码略
'为了程序处理方便?虚设下面两条记录
a(0) = 0: b(0) = 0: sp = k + 1: a(sp) = 0: b(sp) = 0
End Sub
Private Sub Command1_Click()
Dim i As Integer, j As Integer
c = Val(Textl.Text)
i = 1
Do While a(i) < c
i = i + 1
Loop
i = i - 1
'以下处理退房登记问题
If a(i) + b(i) = c Then
If a(i + 1) = c + 1 Then '处理第 3种情况
_ ①
For j = i + 1 To sp - 1
a(j) = a(j + 1): b(j) = b(j + 1)
Next j
sp = sp - 1
Else '处理第 1种情况
b(i) = b(i) + 1
End If
Elself c+1=a(i+1)Then '处理 第 2种情况
a(i+1) = c: b(i+1) = b(i+1) + 1
Else '处理第 4种情况
For j = _ ②
a(j) = a(j - l): b(j) = b(j - 1)
Nextj
a(i+ l)=c : b(i+ 1)=1 :_ ③
End If
List1.Clear
For i = 1 To s - 1
List1.AddItem "第" & Ctr(i) & "条记录" & CStr(a(i)) & "" & CStr(b(i))
'CStr函数的作用是将数字转成字符申
Next i
End Sub
参考答案
1、B 2、D 3、B 4、C
5.(1)ADE (2 分)
(2)A (1 分)
(3)C (1 分)
(4)在“按钮”图层第 50 帧插入关键帧,并删除第 1 帧上的按钮对象 (2 分)
(5)on(press){stopallsounds();geturl(“http://www.hangzhou.net”);}
6.
(1)Count_Click() (1 分)
(2)
① Lowcase(Mid(s, b, j)) (2 分)
② low > high (1 分)
③ word(low) = tmp 或 word(k+1)=tmp (2 分)
④ Lowcase = s (1 分)
7.(1)C 1 分
(2)①pMax = i 2 分
② a(j)>a(k) And b(j)=False 或其他等价答案 2 分
③pMax Mod n +1 2 分
8. (1)2_3,6_7 1 分
(2)①b(i) = b(i) + 1 + b(i + 1) 2 分
②sp + 1 To i + 1 Step -1 2 分
③sp=sp+1
高三选考提升训练六
1.有 VB程序段如下:
Const n =6
Max = 0
For i = 1 To n
d(i)= 1
For j = 1 To i - 1
If a(j)< a(i) And d(j)+ 1 > d(i) Then d(i)= d(i)+ 1
Next j
If d(i)> Max Then Max = d(i)
Next i
数组元素 a(1)到 a(6)的值依次为“2,40,15,1,25,37”,执行该程序段,变量 max 的值为( )
A.2 B.3 C.4 D.5
2.有如下程序段,程序运行结束后,S的值为( )
Private Sub Command1_ Click()
Dim s1 As String
Dim s As Integer, t As Integer
s1=" 8+9+11+12"
For i = 1 To Len(s1)
If Mid(s1,i,1) = "+”Then
s=s+t
Else
t = Va1(Mid(s1,i, 1))
End If
Next i
labell. Caption = str(s)
End Sub
A.40 B. 28 C. 18 D. 20
3.已知一无序数组 a中的元素为”90,15,40,72,65,32,81,6”,通过引入数组 b 存储 a中元素按
升序排序时的下标,b数组元素为”8,2,6,3,5,4,7,1”,使得 a(b(1))<=a(b(2))<=……<=a(b(n)),
从而对数组 a中的元素进行对分查找。部分代码如下:
i = 1: j = 8: c = 0
key = 32
Do While i <= j
m = (i + j) \ 2
t = b(m)
c = c + 1
If a(t) = key Then p = t: Exit Do
If a(t) < key Then i = m + 1 Else j = m - 1
Loop
程序运行结束后变量 c的值为( )
A. 2 B. 3 C. 4 D. 5
4.有如下 VB程序段:
Dim a(0 To 10) As Integer
n= 10
For i = 1 To n\ 3
a(i)=3*i+1
Next i
For i= n To 5 Step-1
a(i)=a(n-i)
Next i
text1. Text = Str(a(n - 2))
执行该程序段后,在文本框 text1中显示的值为( )
A. 7 B. 8 C. 6 D. 5
5.下列 VB程序段的功能为:生成 n个不重复的随机整数,保存在数组 a中,并升序排列。
Const n = 6
Dim a(1 To n) As Integer, f(1 To 10) As Boolean
Dim tmp As Integer, i As Integer, j As Integer, t As Integer
′f数组各元素的初值置为 False,代码略
For i = 1 To (1)
t = Int(1 + Rnd * 10)
If Not f(t) Then
a(i) = t : f(t) = True
For j = (2)
If a(j) < a(j - 1) Then
tmp = a(j): a(j) = a(j - 1): a(j - 1) = tmp
End If
Next j
Else
(3)
End If
Next i
上述程序段 3个方框处的表达式分别为( )
A.(1)n - 1 (2)2 to i (3) i = i - 1
B.(1) n (2)i to 2 Step -1 (3) i = i - 1
C.(1)n - 1 (2)2 to i (3) t = Int(1 + Rnd * 10)
D.(1)n (2)i to 2 Step -1 (3) t = Int(1 + Rnd * 10)
6.某对分查找的 VB程序段如下:
Dim a(0 To 5) As Integer
i = 0:j=5:n=0
Key = Val (Text1. Text)
Do While i <= j and Not flag
n=n+1
m=(i+j)\2
If Key = a(m) Then flag = true
If Key < a(m) Then j=m-1 Else i=m+1
Loop
数组元素 a(0)到 a(5)的值依次为“21,27,49, 63,88,90”。 下列说法不正确的是( )
A.在文本框 Text1中输入“26”后运行该程序,变量 n的值为 3
B.在文本框 Text1中输入“63”后运行该程序,变量 i的值为 4
C.在文本框 Text1中输入“26”后运行该程序,变量 i的值为 2
D.在文本框 Text1中输入“63”后运行该程序,变量 n的值为 3
7.小明编写了一个字符串加密程序,功能如下:在文本框 Text1 中输入明文,单击“加密”按钮
Command1后,在文本框 Text2中显示加密后的密文,运行界面如图所示。加密算法如下:
1)将明文中每个字符用 8位二进制 ASCII码(不足八位的左端补 0,凑足八位)表示;如“A”的二
进制 ASCII码值为 01000001;
2)对 8位二进制编码进行取反码(0变 1,1变 0)操作,如 01000001的反码是 10111110;
3)将 8位二进制反码用 2位十六进制表示,得到该字符的密文;
4)将每个字符的密文按照明文的倒序连接。
实现上述功能的 VB程序如下:
Private Sub Command1_Click()
Dim i As Integer, j As Integer, m As Integer, k As Integer
Dim c As String, x As Integer, y As Integer
Dim d(1 To 8) As Integer '数组 d存储字符 ASCII 码二进制从左到右的各位数码
Dim mw As String 'mw存储密文
mw = ""
For i = 1 To Len(Text1.Text)
c = Mid(Text1.Text, i, 1)
For j = 1 To 8
d(j)=1 ‘I处
Next j
m = Asc(c)
k = 8
Do While m > 0 ‘II处
d(k)= ①
m = m \ 2
k = k - 1
Loop
mw = btoh(d) + mw
Next i
Text2.Text = mw
End Sub
Function btoh(m() As Integer) As String
′自定义函数是将 m数组中的二进制数转换成对应的十六进制数
Dim s As Integer, i As Integer
Dim str As String, ch As String
str = "0123456789ABCDEF"
s = 0: ch = ""
For i = 1 To 8
s = s * 2 + m(i)
If ② Then
btoh =btoh+ Mid(str, s + 1, 1)
s = 0
End If
Next i
End Function
阅读分析程序代码,请回答下列问题:
(1).按照加密算法,字符“Z”的密文是_________;
(2).请在划线处填入合适代码。①_________;②_________;
(3).若 I处方框内代码改成 d(j)=0,则 II处的方框内代码应改为:_________。
8.小红打算用 VB程序来查找数组 a中下降数列的方法,其算法思想描述如下:
1)用数组 b存储最小下降数列中最小的元素(查找过程中的最小值)b(1)开始为数组 a第 1个元素;
2)加入方法:将 a(i)与数组 b中的每个元素依次逐个比较:若 a(i)比 b(j)小就用 a(i)替换 b(j)
中的值;将 a(i)添加到第 j个下降数列中,并存储在 c数组的 c(j)中;
3)若数组 a 各元素的值为:34,54,3,76,2,3 时,则 3 个下降数列分别为:“34,3,2”,
“54,3”,“76”。
依据上述描述设计了如下 VB程序。请回答下列问题:
(1).若数组 a的值是:“145,34,2,134,12”,数组 b(1)的值是_______。
(2).请在划线处填入合适的代码。
Const n = 20
Dim a(1 To n) As Integer
Private Sub Form_Load()
'读取 n个数据,依次存储到 a(1)、a(2)、……a(n)中,代码略
End Sub
Private Sub Command1_Click()
Dim b(1 To n) As Integer '存储数列最小的值
Dim c(1 To n) As String '存储下降数列
Dim i As Integer
Dim j As Integer
Dim bn As Integer '存储下降数列个数
b(1) = a(1)
bn = 1
c(1) = Str(a(1))
For i = ①
For j = 1 To bn
If a(i) < b(j) Then
b(j) = a(i)

Exit For
End If
Next j
If j > bn Then
bn = bn + 1

c(bn) = Str(a(i))
End If
Next i
For i = 1 To bn
List1.AddItem c(i)
Next i
Text2.Text = "数列中共有" + Str(bn) + "个下降序列"
End Sub
9.已知数组 a有 n*n 个元素,将自然数 1~n*n (n<10)依次存储到数组 a中。其存储的算法如下:
1.存储方式从左下向右,上,平行于矩阵的对角线依次进行存储,以 6*6 为例,数组 a 元素对应的
赋值情况如第 9题图 a所示。
2.输出数组 a,按 1~n*n 依次在列表框中按数字矩阵输出,以 6*6 为例,其输出结果如第 9 题图 b
所示。
第 9 题图 a 第 9 题图 b
小明依据上述描述设计了如下 VB 程序,单击"存储显示"按钮 Command1, 在 List1 中显示 n*n
的矩阵。请回答下列问题:
(1)若 n=4,则数组元素 a (8)的值是_ 。(填数字)
(2)请在划线处填入合适的代码。
Const n = 6
Dim a(1 To n * n) As Integer
Private Sub Command1_Click()
Data = 1
i = 1
j = 1
Do While Data <= n * n
a( ① ) = Data
Data = Data + 1
i = i - 1
j = j + 1
If j = n + 1 Then

i = 6
ElseIf i = 0 Then
i = j
j = 1
End If
Loop
For i = 1 To n * n
s = ③
If i Mod n = 0 Then
Listl.AddItem s
s = ""
End If
Next i
End Sub
Function dy(x As Integer) As String '函数 dy 将变量 x 转换为字符串
If x < 10 Then
dy = "" + Str(x)
Else
dy = Str(x)
End If
End Function
10.区间覆盖问题。数轴上有 n 个闭区间[ai, bi] (闭区间含端点),其中 ai, bi 都是正整数,选择尽量
少的区间,使其覆盖一条指定的线段[s, t] (闭区间)。基本算法思想:先排序,然后贪心选择。
选择区间的算法设计如下:
例如有闭区间: [6, 13]、[8,17]、 [6,9]、 [12, 15]。
(1)排序。把各区间按照 ai 从小到大排序,当 ai 相同时,按照 bi 从大到小排序。排序结果: [6,13]、
[6,9]、 [8, 17]、[12, 15]
(2)选择。如果任意区间的起点不是 s,无解,否则选择起点在 s 的最长区间。选择[ai, bi]
后,新的起点设置成 bi.反复操作,直至覆盖整个线段。.挑选结果: [6, 13]、[8, 17]
设计程序界面如下图所示,在文本框 Text1 中按格式输入原始区间,在文本框 text2 中按格式输入
要覆盖的区间,点击“计算”按钮后,在文本框 Text3 中按顺序输出能覆盖整个线段的区间。
依据上述描述设计如下 VB 程序:
Const m=10 ' 程序最多处理 10 个区间
Dim a(1 To 2 * m) As Integer
' a(1)、 a(2)存放第 1 区间的下限和上限,a(3)、 a(4)存放第 2 区间的下限和上限
Private Sub Commandl_ Click ()
Dim res As String, n As Integer, flag As Boolean
Dim maxlen as integer
' 从文本框 text1 中获取区间的数据分别存储在 a 数组中,代码略
n 表示输入的区间个数
For i = 1 To n-1
For j = n To i+1 Step-1
If a(2*j-1) < a(2*j-3) Then
t=a(2*j-1) : a(2*j-1)=a(2*j-3) :a(2*j-3)=t
t=a(2*j) : a(2*j)=a(2*j-2) : a(2*j-2)=t
ElseIf ①
t=a(2*j):a(2*j)=a(2*j-2):a(2*j-2)=t
End If
Next j
Next i
'从文本框 text2 中分别获取 s、e 的值,代码略。s 表示区间的起点,e 表示区间的重点
length = 0: news = s
flag = True
Do While length < e - s And flag
maxlen = 0
For i= 1 To n '寻找当前最适合的区间
If ② Then
tmp=a(2*i)-news
If tmp > maxlen Then
maxlen = tmp
j =i
End If
Else .
Exit For
End If
Next i
If maxlen = 0 Then
flag = False
Else
res = res+" ["+ CStr(a(2 * j- 1)) +","+ CStr(a(2*j))+ "]"

news=a(2* j)
End If
Loop
If flag Then Text3.Text = res Else Text3. Text = "无法覆盖该区间! "
End Sub
(1)对于给定区间[3,9]、[6,13]、[2,8],需要覆盖的区间[3,10]则输出
(2)请在划线处填入合适的代码。
参考答案
1、C
2、C
3、B
4、A
5、B
6、C
7.共 7 分
(1) A5 1 分
(2)①(m+1) mod 2 或 1-m mod 2 2 分
②i mod 4=0 或 i=4 Or i=8 2 分
(3) k>0 或 k>=1 2 分
8. 共 7 分
(1)2 1 分
(2)
① 2 To n 2 分
② c(j) = c(j) + Str(a(i)) 2 分
③ b(bn) = a(i) 2 分
9.
(1)13 (1 分)
(2)(i-1)* n + j (2 分)
(3)j=j+2 (2 分)
(4)s+dy(i) (2 分)
10.
(1)[3,9] [6,13](1 分)
(2)
① a(2 * j - 1) = a(2 * j - 3) And a(2 * j) > a(2 * j - 2) Then(2 分)
② a(2 * i - 1) <= news(2 分)
③ length = length + maxlen(2 分)
高三选考提升训练二
1. 下列 VB表达式的值等于 35的是( )
A. Abs(Int(-34.3)) B. Val(Str(30)+"5")
C. Len("xue")+5 D. Int(sqr(50))*11\2
2. 有如下 VB程序段:
Private Sub Commandl_Click()
Dim d(1 To 8) As Integer
Dim i As Integer, s As Integer
d(1)= 1
For i=2 To 10
d(i)=d(i-1)*i
Next i
For i = 1 To 5
s= s + d(i)
Next i
Textl.Text = Str(s)
End Sub
程序运行时,单击命令按钮 Commandl后,将会出现的提示信息是
A. 溢出 B.下标越界 C. 要求对象 D. 无效的过程调用或参数
3. 有如下 VB程序段:
Dim a(1 To 10) As Integer
a(1)= 2:a(2)= 18:a(3)=10: a(4)=34:a(5)= 16
a(6)= 7:a(7)= 37:a(8)=6: a(9)=15:a(10)= 15
c=0:x=0:t= 1
For i = 1 To 10
a(i)=a(i)*t
c=c + a(i)
If c > 0 Then x = x + 1
t=-t
Next i
Textl.Text = Str(x)
则程序运行后 Textl 中显示
A. 1 B. 3 C.5 D.1
4. 有如下 VB程序段:
For i= 1 To 8
d(i)= Int(Rnd* 10)
Next i
For i= 2 To 8
If i Mod 2 = 0 And d(i) > d(i-1) Then
d(i)=d(i- 1)+ 1
ElseIf i Mod 2 = 1 Then
If d(i) > d(i- 2) Then
t= d(i): d(i)= d(i-2):d(i-2)=t
End If
End If
Next i
执行该程序段后,d(1)~d(8)各元素值依次可能的是
A. 8 8 7 1 3 5 0 1 B. 9 0 8 3 5 6 0 1
C. 6 2 5 4 7 8 2 3 D. 9 10 6 7 5 3 2 2
5. 以下 VB程序段用以实现 10个数组元素升序排序。
Dim a(1 To 10) As Integer
Dim flag As Boolean
Dim i As Integer, j As Integer, tmp As Integer
随机生成 10个不重复的数据存入数组 a中,代码略
For i= 2 To 10
tmp = a(i)
j=i
flag = False
Do While ① And Not flag
a(j)=a(j-1)
j=j-l

Loop
a(j)= tmp
Next i
要实现上述功能,方框①②中的语句分别是
A. ①tmp < a(j- 1) ②If j= 1 Then flag= True
B. ①tmp > a(j- 1) ②If j= 1 Then flag= True
C. ①tmp < a(j ) ②If j= 0 Then flag = True
D. ①tmp > a(j) ②If j= 0 Then flag = True
6.小段使用 Flash 软件创作主题为"旋转的风车"的多媒体作品,部分界面如图 a 所示。
请回答下列问题:
(1)编写脚本是设计多媒体作品的重头戏,脚本编写的一般步骤有:①编写脚本大纲
②媒体元素分解③编写文字脚本④编写制作脚本,则正确的脚本编写顺序 为
____ (单选,填字母:A. ①②④③/ B. ②①③④/ C. ①④③②/ D. ①③④②)
(2)图中“文字”图层第 1 帧到第 36 帧实现了文字“放飞梦想”渐变为“超越自我”
的动画,则第 36帧中的“超越自我”为 (填文字:形状 / 实例)。
(3)如图所示,在不影响其他动画效果的前提下,为使“音乐”图层中的声音从本场
景第 1帧开始播放,正确的操作是 。
(4) 图中“风车”图层应用了影片剪辑元件“风车”,修改“风车”元件的帧频为 6fps,
则当前场景的播放速度 (填文字:变快 / 变慢 / 不变)
(5)“播放“按钮的编辑界面如图 b 所示,该按钮 (填文字:能 / 不能)正常响应鼠
标事件。
(6)测试影片时,单击“播放”按钮,停止所有声音的播放,并使影片跳转到“scene2”
场景的第 1帧并继续播放,则“播放”按钮的动作脚本为 。
7. 数组元素 a(1)~a(100)用以存储某班级 50 位学生的信息技术和通用技术成绩,奇数
位置存储信息技术成绩,偶数位置存储对应学生的通用技术成绩。该数组已经按照两科
总成绩升序排序。依据对分查找思想,设计一个在数组 a 中查找总成绩为 key 的程序,
统计输出两科总成绩大于等于 key的人数。部分运行界面如图所示:
实现该功能的 VB程序如下:
Private Sub Commandl_ClickO
Dim a(1 To 100) As Integer
Dim sum As Integer
Const t = 50
'将 50个学生的信息技术和通用技术成绩依次存储在数组 a(1)~a(100),代码略
Key = Val(Text2.Text)
i= 1
j= 100
m=(i+j)\2
Do While ① And m > 1
If m Mod 2= 1 Then m= m- 1
sum = a(m)+ a(m- 1)
If ② Then
j= m-2
Else
i=m-2
End If
m=(i+j)\2
Loop
Label2.Caption="大于等于" & Key &"分的人数为:" +Str (t-j \ 2)
End Sub
(1) 代码“Private Sub Commandl_Click0”中的 Commandl_Click是 (单选,
填字母:A.对象名/B.属性名/C.事件名/D.事件处理过程名)。
(2) 请在①②划线处填入合适代码。
(3) 加框处代码有错,请改正。
8. 二叉树是每个结点最多有两个子树的树结构,如值为 9的结点有两个子树 6和 8,值
为 6的结点有两个子树 5和 3。若设二叉树的深度为 h,则除第 h层外,其它各层(1~h-1)
的结点数都达到最大个数,第 h层所有的结点都连续集中在最左边,这就是完全二叉树。
现要构造大根堆,堆是一棵顺序存储的完全二叉树,大根堆又是一种特殊的堆,它的特
征是每个双亲结点的值都不小于其孩子结点的值。如下图所示,值为 9 的结点是 6 和 8
的双亲结点,而 6和 8分别是 9的左孩子和右孩子;同理,6是 5和 3的双亲结点,而 5
和 3分别是 6的左孩子和右孩......
假如我们用数组表示上述大根堆:
现有一算法把一个无序数组改造成大根堆。例如:我们在上图的大根堆中再增加一个值
为 8的新元素,如下图所示。
a(1) a(2) a(3) a(4) a(5) a(6) a(7) a(8) a(9)
9 6 8 5 3 4 7 2 1
第 8 题图
数组存储为:
具体操作方法如下:
第 1步:因为 a(10)大于它的双亲结点 a(5),故需交换 a(10)和 a(5)的值;
数组存储为:
第 2步:因为 a(5)大于它的双亲结点 a(2),故需交换 a(5)和 a(2)的值;
数组存储为:
第 3步:因为 a(2)不大于它的双亲结点 a(1),故无需做交换操作。此时新元素已经放到
了正确的位置,新的大根堆构造完成,上移行动结束。
(1) 若在第 8题图中增加值为 4的新元素,则元素 4将被存储在数组元素 中。
(2) 小段为此编制一 VB 程序:在文本框 Textl 中输入结点个数 n,单击命令按钮
Commandl, 随机产生 n个[1,99]的整数作为结点值,并由此构造大根堆,结果显示在列
表框 Listl 中,程序运行界面如图所示。
a(2) a(3) a(4) a(5) a(6) a(7) a(8) a(9) a(10)
6 8 5 3 4 7 2 1 8
a(2) a(3) a(4) a(5) a(6) a(7) a(8) a(9) a(10)
6 8 5 8 4 7 2 1 3
a(1) a(2) a(3) a(4) a(5) a(6) a(7) a(8) a(9) a(10)
9 8 8 5 6 4 7 2 1 3
实现上述功能的程序代码如下,请在划线处填入合适的代码。
Dim a(1 To 100) As Integer
'该函数功能为实现数据的对齐输出
Function pout(x As Integer, y As Integer) As String
代码略
End Function
Private Sub Commandl_ClickO
Dim tmp As Integer, Dim m As Integer
Dim n As Integer, Dim s As String
n= Val(Textl.Text)
For i= 1 To n
a(i) = Int(Rnd() *99)+ 1
Next i
For i = 2 To n
p=i
f=p \ 2
Do While ①
tmp= a(p): a(p) = a(f): a(f) = tmp
p = f
f = p \ 2
If f = 0 Then Exit Do
Loop
Next i
m = 0
k = n
Do While k >= 1
m = m+ 1

Loop
k=l
For i =0 To m- 1
s = " "
For j= 1 To ③
If k > n Then Exit For
s=s+ pout(a(k), (2^(m-1)-2^i)/2^i)
k=k+1
Next j
List1.AddItem s
Next i
End Sub
参考答案
1 2 3 4 5
6
7
8
同课章节目录