保密★启用前
选修一过关测试
信息技术
(全卷满分100分,考试用时90分钟)
一、选择题
1.采用冒泡排序算法对某数据序列进行排序,经过第一轮排序后的结果是“2,8,3,9,5,6,7”,那么原数据序列不可能的是( )
A.8,3,9,5,2,7,6 B.8,3,9,2,6,5,7
C.8,2,9,3,5,7,6 D.8,3,2,9,6,5,7
2.有如下对分查找程序段:
Private Sub Command1_Click()
Dim a(l To 8)As Integer
a(1)=3:a(2)=6:a(3)=9:a(4)=6:a(5)=11:a(6)=20:a(7)=15:a(8)=24
i=1:j=8
Key Val(Text1. Text):n=0
Do While i<=j
m=(i+j)\2
If m Mod 2<> Key Mod 2 Then m=m+1
If a(m)= Key Then Exit Do
n=n+1
If a(m)>Key Then
j=m-2
Else
i=m+2
End If
Loop
Text2.Text=Str(n)
End Sub
程序运行后,下列说法不正确的是( )
A.若输入Key值为15,则Text2中显示1
B.若输入Key值为12,运行程序结束后,i-j=1
C.若输入Key值为7,运行程序结束后,m=1
D.Text2中显示的值可能为0
3.有如下 VB 程序段:
i=1 : j=10
key=Val(Text1.Text)
Do While i
m=Fix((i+j)/2)
If key>a(m) Then
i=m+1
Else
j=m
End If
Loop
数组元素 a(1)到 a(10)依次为 2,3,7,9,9,10,13,13,13,19,如果key是数组a中的一个数,那么程序执行后正确的是( )
A.i=j+1 B.a(i+1)=key C.i=j D.i>j
4.某对分查找算法的VB程序如下:
i = 1: j = 20
m = (i + j + 1) \2
Do While i < j And Key <> a(m)
If a(m) > Key Then i = m+ 1 Else j = m -1
m = (i + j + 1) \2'①
Loop
数组元素a(1)到a(20)各不相同且按降序排列,若查找键key与a(4)相等,执行该程序段,①处语句的执行次数有( )
A.5 B.4 C.3 D.2
5.利用冒泡排序给数组[15,78,88,23,69,71,20,53]升序排序,第三遍冒泡加工之后的数据结果是( )
A.[15,20,23,78,88,69,71,53] B.[15,20,23,53,78,88,69,71]
C.[15,78,23,69,71,20,53,88] D.[15,23,69,71,20,53,78,88]
6.数组a(1)-a(n) (n>1)中的数据为非递增序列,为了在数组中查找出最后一个大于等于key的元素下标,小杨采用对分法的思想,编写了如下代码:
key= Val(Text1. Text)
L=1:R=n
Do While L < R
m=(L+R)\2
If ① Then
L=m+1
Else
②
End If
Loop
Label1 Caption=”最后一个不小于”&Su(key)&"的元素下标是:"&Str( ③ )划线处的内容是( )
A.①keyB.①key<=a(m) ②R=m-1 ③R
C.①key<=a(m) ②R=m-1 ③m
D.①key<=a(m) ②R=m ③R
7.在面对较大项目时,随着堆砌的代码越来越多,我们不可以通过______来简化代码。( )
A.重复的顺序结构转换为循环结构
B.重复代码封装为函数
C.优化算法
D.删除不理解的代码
8.某 VB 程序中有语句:Command1.Caption="确定"。该语句中的"Caption"是( )
A.对象名 B.类名 C.属性名 D.属性值
9.如图所示的程序设计界面中,若要利用窗体装载事件过程对程序进行初始化,图中所选中的窗体对应的装载事件过程应该是( )。
A.F1_ Load B.Form1_Load C.Form_Load D.Form1_Show
10.有如下VB程序段:
Private Sub Command1_Click()
Dim i As Integer
Dim x As Integer
Dim s As String
Randomize
i = 1: s = "1"
Do While i <= 6
x = Int(Rnd * 9) + 1
If x Mod 2 = i Mod 2 Then
s = s + Str(x)
i = i + 1
End If
Loop
Label1.Caption = s
End Sub
运行程序后,标签 Label1 中可能出现的是( )
A.1 8 3 4 5 2 B.1 9 4 3 7 5 6 C.1 9 4 7 6 5 2 D.1 8 1 2 7 6 1
11.有如下VB程序段:
For i=1 To 6
j=7
Do While j>i
If a(j)>a(j-1) Then
a(j)=a(j)+a(j-1):a(j-1)=a(j)-a(i-1):a(j)=a(j)-a(j-1)
End If
j=j-1
Loop
Next i
For i=3 To 6
s=s+a(i)
Next i
Label1.Caption=Str(s)
已知数组元素a(1)到a(7)的值依次为“8,2,3,7,10,6,5”,则执行该程段后,标签Label1中显示的是( )
A.21 B.26 C.41 D.18
12.回文字符串的特征是从左到右读和从右到左读是完全一样的,如“aba”、“aabbaa”,判断字符串中忽略“,”字符后,该字符串是否是回文字符串的VB程序段如下:
s = "ab,,,cb,a"
n = Len(s)
i = 1: j = Len(s)
flag = True
Do While i <= j
If Mid(s, i, 1) = Mid(s, j, 1) Then
i = i + 1: j = j - 1
Else
End If
Loop
If flag = False Then Print ("不是回文") Else Print ("回文")
横线处的代码由以下三部分组成:
① If Mid(s, i, 1) = "," Or Mid(s, i, 1) = "," Then i = i + 1
② If Mid(s, j, 1) = "," Or Mid(s, j, 1) = "," Then j = j – 1
③ If Mid(s, i, 1) <> "," And Mid(s, j, 1) <> "," Then flag = False: Exit Do
下列选项中,代码顺序正确的是( ):
A.①②③ B.②①③ C.②③① D.③②①
13.【加试题】有如下程序段:
c=0
For i=1 to 5
f=False
For j=1 to 6-i
If a(j) > a(j+1) Then
f=True : c=c+1
t=a(j) : a(j)=a(j+1) : a(j+1)=t
End If
Next j
If f=False Then Exit For
Next i
数组元素 a(1)到 a(6)的值依次为“19,65,27,53,48,36”,经过该程序段“加工”后,变量 c 的值为( )
A.5
B.6
C.7
D.8
14.下列运算结果中,表达式值最大的是
A.2 Mod 3 B.3 Mod 2 C.2 / 3 D.2 \ 3
15.某算法的流程图如图所示。执行这部分流程,则输出n的值是( )
A.3 B.4 C.5 D.6
16.某对分查找算法的VB程序段如下:
i =1:j=10:nc=0:f=False
Key = Val(Textl. Text)
Do Whilei < = j And Not f
m=(i+j)\ 2
nc=nc+1
If a(m) = Key Then
f = True
ElseIf Key > a(m) Then
j = m-1
Else
i = m+1
End If
Loop
数组元素a(1)到a(10)的值依次为“94,91,87,76,73,70,67,61,18,17”,该程序段运行结束后,若nc的值为2,则Key的值是 ( )
A.76或67 B.91或61 C.87或61 D.94或91
17.分别采用选择排序和冒泡排序对数据序列“15 89 60 34 10 28 70”完成升序排序,则在两种排序方法过程中,数据“60”发生交换的次数分别可能为( )
A.3 3 B.2 4 C.21 4 D.3 4
18.有如下 VB 程序段:
Const n= 10
Dim a(1 To n) As Integer , b(1 To n) As Integer
For i = 1 To n
b(i) = i
Next i
For i = 2 To n
j = i - 1
t = b(i)
Do While a(b(j)) > a(t)
b(j + 1) = b(j)
j = j - 1
If j = 0 Then Exit Do
Loop
b(j + 1) = t
Next i
若数组a中的数据依次为:69,16,44,17,34,46,10,29,37,51 ,执行程序后,b(1)~b(10)的值为( )
A.3 5 4 10 1 9 8 6 7 2 B.7 2 4 8 5 9 3 6 10 1
C.5 8 2 1 4 7 3 9 10 6 D.1 6 2 4 8 9 7 10 3 5
19.若希望TEXT1中的内容不能编辑但可获得焦点,则( )属性的值应为TRUE.
A.ALIGNMENT
B.LOCKED
C.TEXT
D.BACKCOLOR
20.小明为机器人设计算法“机器人走棋盘”。观察图a棋盘,为使机器人从A位置沿着箭头方向到达B位置,图b流程图中的条件应该设置成( )。
A.i<=3 B.i<=4 C.i<7 D.i<=5
21.有如下VB程序段:
s = "Live on No evil"
n = Len(s):ans = ""
For i = 1 To n
c = Mid(s, i, 1)
If Abs(i - n) < n\2 Then
If c > = "a" And c < = "z" Then c = Chr(Asc("A") + Asc(c) - Asc("a"))
ans = C + ans
End If
Next i
Text1. Text = ans
执行上述程序段后,文本框Text1中显示的内容是( )
A.live oN B.No evil C.LIVE ON D.NO EVIL
22.某算法的部分流程图如图所示。执行这部分流程,依次输入“3,6,5 ,0,-1,-2”,则输出s的值是( )
A.8 B.10 C.14 D.16
23.某对分查找算法的VB程序段如下:
t-="": i=0:j=9 : key=62 : f=False
Do While i <=j And Not f
m=Fix((i+j)/ 2)
t=t+Str(m)
If a(m)= key Then
f=True
EIself a(m)>key Then
i=m+1
t=t+"→"
Else
j=m-1
t=t+"←- "
End If .
Loop
数组元素a(0)到a(9)的值依次为99,94,90,87,78,70,63,56,45,36”执行该程序段的值是( )
A."4→7←5→" B."4→7←5→6→"
C."4→7←5→6" D."4→7←-5"
24.当现有的软件无法解决问题时,我们可以利用编程语言自己编制程序解决问题。下列选项中用编程来解决比较合适的是( )
A.将一组统计数据转换成图表显示
B.制作二维动画
C.用计算机修复发黄的旧照片
D.找出所有的4位水仙花数
二、填空题
25.小明设计了一个Visual Basic程序:求 1~n(不超过10000)之间能被5整除但不能被3整除的自然数。其设计界面如图1所示、代码编辑窗口如图2所示。
图1
图2
(1)解决此问题主要采用的算法为 ① (填:解析算法 / 枚举算法)。
(2)图2中标注A处应填写的代码为 ② 。
(3)图2中List1.AddItem Str(i)语句中AddItem是List1的 (填: 事件/属性/方法)。
26.编写一段程序求1 2 3 …… 100的值,程序代码如下:
Private Sub Command1_Click()
Dim i As Integer, t As Integer
t = 1
For i =" 1" To 100
①
Next i
Text1.Text = Str(t)
End Sub
(1) 请补充①处的代码___________________。
(2) 运行此程序,单击Command1按钮,出现对话框如图所示:
请分析出现该错误的原因__________,如何修改可以解决此问题_______________________。
27.
若依次输入5、8、-7、12,则输出的结果为_________。
28.设计VB程序,该程序将输入的字符串中小写字母转换成大写字母后输出。在文本框Text1中输入一串字符(数字、字母均可),单击“转换”按钮Command1,在标签Label2中输出结果。(提示:Asc(x):将字符x转换为ASCII码值;Chr(x):将ASCII代码x转换为所对应的字符)该程序的设计界面如图所示,请根据算法将下列程序补充完整。
Private Sub Command1_Click()
Dim ch As String, s As String
Dim i As Integer, j As Integer
ch = Text1.Text
For i =" 1" To (1)
j =" Asc(Mid(ch," i, 1))
If j > 96 And j < 123 Then
s =" s" + Chr(j - 32)
Else
s =" s" + Chr(j)
End If
Next
(2)
End Sub
29.酒店房间管理:酒店房间(房间数小于10000)编号按1、2、3…连续编号,老板对于没有出租的房子使用如下的方法来登记管理。连续的空房间,登记第一间的编号和连续的空房间数,比如空房间1,2, 6,7,8,10,则登记3条记录,分别为(1 2),(6 3),(10 1),某旅客退房了,需要把这房子也登记上去,有四种情况需要处理:
1)上靠,例如退的房间号为3,则原来登记的3条记录变成(1 3), (6 3),(10 1);
2)下靠,例如退的房间号为5,则原来登记的3条记录变成(1 2), (5 4), (10 1);
3)上下不靠,例如退的房间号为4,则登记的记录数变成4条(1 2) ,(4 1), (6 3),(10 1);
4)上下靠,例如退的房间号为9,则登记的记录数变成2条(1,2),(6,5);
小王依据上述描述设计了如下VB程序。请回答下列问题:
(1)当登记的记录有3条,分别为(1,4),(6,2),(10,3),现在某旅客退掉5号房间,则登记的记录变成_______________________________
(2)请在划线处填入合适的代码。
Const n = 5000
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为原始记录数
'读取原始k条记录的数据,依次存入a(1),b(1),a(2),b(2)…a(k),b(k),代码略
'为了程序处理方便,虚设了下面2条记录
a(0) = 0 : b(0) = 0 : sp = k + 1 :a(sp) = 10000 : b(sp) = 0
Private Sub Command1_Click()
Dim i As Integer
c = Val(Text1.Text) 'c为退掉的房间号
i = 1
Do While a(i) < c '查找房间c,应该登记在某位置
i = i + 1
Loop
i = i - 1
'下面为处理退房登记问题
If a(i) + b(i) = c Then
If __________ Then '第4种情况,上下靠
b(i) = b(i) + 1 + b(i + 1)
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
ElseIf c + 1 = a(i + 1) Then '第2种情况,下靠
a(i + 1) = c : b(i + 1) = b(i + 1) + 1
Else '第3种情况,上下不靠
For j =_____________________
a(j) = a(j - 1) : b(j) = b(j - 1)
Next j
a(i + 1) = c : b(i + 1) = 1 : sp = sp + 1
End If
‘下面为输出登记的记录,不包括虚设的两条记录
For i =1 to _______
List3.AddItem "第" & Str(i) & "记录(" & Str(a(i)) & "," & Str(b(i)) & ")"
Next i
End Sub
30.现有如下Visual Basic程序:
Private Sub Command1_Click()
Dim i As Integer, c As String, s As String, t As String
s = Text1.text
t = ""
For i = 1 To Len(s)
c = Mid(s, i, 1)
If c >= "0" And c <= "9" Then t = t + c
Next i
Text2.text = t
End Sub
运行该程序,在文本框Text1中输入“2016_Student”(不包含引号),单击命令按钮Command1后,文本框Text2中显示的内容是_________。
三、操作题
31.质数又称素数,是指除了 1 和本身之外不再有其他因数的数。如果两个质数的差为 2,则这两个质数称为孪生质数对;编写 VB 程序,功能:单击“显示孪生质数对”按钮 Command1,在列表框 List1 中显示 100以内的所有孪生质数对(运行效果如图所示)。实现上述功能的 VB 代码如下, 请在划线处填入合适代码。
Dim a(1 To 50) As Integer
Private Sub Command1_Click()
Dim i As Integer
k = 0: i = 3
Do While i <= 100
If________________Then
k = k + 1
a(k) = i
____________________
i = i + 2
Loop
For i = 2 To k
If______________________Then
List1.AddItem Str(a(i-1)) + "和" + Str(a(i))
End If
Next i
End Sub
Function prime(x As Integer) As Boolean '判断是否是质数
prime = True
For i = 2 To Int(Sqr(x))
If x Mod i = 0 Then prime = False : Exit For
Next i
End Function
32.对分查找算法可用于求解方程的近似解。现要求方程x3-4x2+x+5=0的一个近似解,可设f(x)=x3-4x2+x+5,若有区间[a,b],使f(a)与f(b)异号,则该区间内必存在该方程的一个解。小吴为比编写了VB程序,功能如下:分别在本框Text1和Text2中输入求解的区间值a和b(a实现上述功能的VB程序如下,请在划线处填上合适的代码。
Private Sub Command1_Click()
Dim a As Double, b As Double, m As Double, x As Double
Dim ym As Double, yb As Double
a=Val(Text1.text):b=Val(Text2.Text)
If a>b Then t=a:a=b:b=t
Do While ①____
m=(a+b)/2
ym=m^3—4*m^2+m+5
yb=b^3-4*b^2+b+5
If Abs(ym)<0.00001 Then Exit Do
If ②___ Then
b=m
Else
a=m
End If
Loop
Text3.Text=Str(Int(m*10000)/10000)
End Sub
试卷第2页,共2页
试卷第1页,共1页
参考答案:
1.D
【详解】本题考查的是冒泡排序。冒泡排序,它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来,走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。8,3,9,5,2,7,6从后往前冒泡,按从升序排列,排序后为:2,8,3,9,5,6,7,故选项A可能;8,3,9,2,6,5,7从后往前冒泡,按从升序排列,排序后为:2,8,3,9,5,6,7,故选项B可能;8,2,9,3,5,7,6从后往前冒泡,按从升序排列,排序后为:2,8,3,9,5,6,7,故选项C可能;8,3,2,9,6,5,7从后往前冒泡,按从升序排列,排序后为:2,8,3,5,9,6,7,故选项D不可能,本题应选D。
2.B
【详解】本题考查的是对分查找。若输入Key值为12时,初始值i=1,j=8。
i<=j成立,第一次查找,m=(i+j)\2=4,m Mod 2<> Key Mod 2 不成立, a(m)= Key不成立,a(4)=6>12不成立,执行i=m+2=6;
i<=j成立,第二次查找,m=(i+j)\2=7,m Mod 2<> Key Mod 2 成立,执行m=m+1=8,a(8)=24>12成立,执行j=m-2=6;
i<=j成立,第三次查找,m=(i+j)\2=6,m Mod 2<> Key Mod 2 不成立, a(m)= Key不成立,a(6)=20>12成立,执行j=m-2=4;
(i=6)<=(j=4)不成立,程序结束,i-j=2,故选项B说法错误。
3.C
【详解】 本题主要考查二分查找算法。i=1,j=10,m=Fix((1+10)/2)=5,a(5)=9,第一种情况,若key>9,则i=m+1=6,m=Fix((6+10)/2)=8,a(8)=13,若key>13,经验证不成立,结合数组元素,假设key=10,得到i=j=6;第二种情况,若key<=9,j=5,m=Fix((1+5)/2)=3,a(3)=7,若key=9,i=m+1=4,m=Fix((4+5)/2)=4,a(4)=9,j=m=4,即i=j=4成立。若key<=7,j=3,m=Fix((1+3)/2)=2,a(2)=3,假设key=2或key=3均可得到i=j,故程序执行后正确的是i=j,故本题选C选项。
4.B
【详解】本题主要考查对分查找算法及VB程序实现。数组元素a(1)到a(20)各不相同且按降序排列,key=a(4),i=1,j=20,m = (i + j + 1) \2=11,第一次循环, a(11)key,i=m+1=4,m = (i + j + 1) \2=5;第四次循环,a(5)5.B
【详解】本题主要考查冒泡排序。利用冒泡排序给数组[15,78,88,23,69,71,20,53]升序排序,第一遍冒泡加工之后的数据结果是[15,20,78,88,23,69,71,53],第二遍冒泡加工之后的数据结果是[15,20,23,78,88,53,69,71],第三遍冒泡加工之后的数据结果是[15,20,23,53,78,88,69,71],故本题选B选项。
6.B
【详解】本题考查的是查找算法相关知识。方法一,由题干非递增序列可知数据为递减序列,则可通过带几个值的方法解题;但是这一类题,我们设出的数据一定要符合题干所给的条件,才能带出答案。
方法二,这个对分查找找的是最后一个数,就是循环结束的时候,而结束的条件就是让R7.D
【详解】本题主要考查程序优化。在面对较大项目时,随着堆砌的代码越来越多,我们可以通过重复的顺序结构转换为循环结构、重复代码封装为函数、优化算法等来简化代码,不可以删除不理解的代码,故本题选D选项。
8.C
【详解】本题主要考查VB程序语句。Command1.Caption="确定"。该语句中的"Caption"是属性名,Command1是对象名,"确定"是属性值,故本题选C选项。
9.C
【详解】本题主要考查程序设计界面知识点。利用窗体装载事件过程对程序进行初始化,图中所选中的窗体对应的装载事件过程应该是Form_Load,故本题选C选项。
10.C
【详解】本题主要考查VB程序的执行。 x = Int(Rnd * 9) + 1,x是随机生成[1,9]之间的整数,如果x和i同奇同偶,执行 s = s + Str(x),i=i+1,初值s="1",当i=1时,x的值为奇数,排除A、D选项。同理当i=4时,x的值应为偶数,排除B选项,故运行程序后,标签 Label1 中可能出现的是1 9 4 7 6 5 2,故本题选C选项。
11.B
【详解】本题考查的知识点是冒泡排序算法。这三条语句a(j)=a(j)+a(j-1):a(j-1)=a(j)-a(i-1):a(j)=a(j)-a(j-1)的作用是交换a(j)和a(j-1),因此是从后往前的冒泡升序算法。把5+6+7+8输出。故正确答案为B选项。
12.D
【详解】本题主要考查VB程序的调试。变量i、j分别是左右对应位置,因为字符中有逗号,如果Mid(s, i, 1) <> Mid(s, j, 1),需进一步判断,若i、j对应位置字符均不为逗号,即对应的字母不相等,说明不是回文,退出循环,即③ If Mid(s, i, 1) <> "," And Mid(s, j, 1) <> "," Then flag = False: Exit Do。否则进一步判断,如果其中1处为逗号,则跳过逗号继续判断,对应代码① If Mid(s, i, 1) = "," Or Mid(s, i, 1) = "," Then i = i + 1② If Mid(s, j, 1) = "," Or Mid(s, j, 1) = "," Then j = j – 1。结合选项,可知本题选D选项。
13.C
【详解】本题主要考查冒泡排序算法。分析程序可知,当i=1时,需要交换4次,此时c=4,数组元素 a(1)到 a(6)的值依次为“19,27,53,48,36,65”;当i=2时,需要交换2次,此时c=4+2=6,数组元素 a(1)到 a(6)的值依次为“19,27,48,36,53,65”;当i=3时,需要交换1次,此时c=6+1=7,数组元素 a(1)到 a(6)的值依次为“19,27,36,48,53,65”,数组元素已有序,退出循环。故经过该程序段“加工”后,变量 c 的值为7,故本题选C选项。
14.A
【详解】本题主要考查VB表达式的运算。2 Mod 3=2,3 Mod 2=1,2/3=0.6,2\3=0,故本题选A选项。
15.C
【详解】本题考查对循环结构流程图的理解。变量n的初值为1,执行n←n+1后,n的值为2,条件22>22不成立,继续执行循环;执行n←n+1后,n的值为3,条件23>32不成立,继续执行循环;执行n←n+1后,n的值为4,条件24>42不成立,继续执行循环;执行n←n+1后,n的值为5,条件25>52成立,退出循环,故输出n的结果为5,故选项C符合题意。
16.B
【详解】本题主要考查对分查找算法实现。对分查找的基本思路:在有序的数据序列中(一般放在数组中), 首先把查找的数据与数组中间位置的元素进行比较,若相等,则查找成功并退出查找;否则,根据数组元素的有序性,确定数据应在数组的前半部分还是在后半部分查找;在确定了新的查找范围后,重复进行以上比较,直到找到或未找到为止。本题中,i和j为数组元素的位置,即下标,key为查找关键字,nc为查找次数,m为对分查找时分别获得的数组元素的下标,要严格按照公式m=(i+j)\ 2来获得数据,第一次获得数据a (5) =73, 接下来有两种可能,可能key> 73或key<73,获得数据a(2) =91或a(8)=61,因此B选项正确。
【点睛】
17.B
【详解】本题考查排序算法。选择排序升序过程,若从左往右(大的往后排),第一遍为15,70,60,34,10,28,89,第二遍为15,28,60,34,10,70,89,第三遍为15,28,10,34,60,70,89.“60”发生交换的次数为1次,若从右往左(小的往左排),第一遍为10,89,60,34,15,28,70,第二遍为10,15,60,34,89,28,70,第三遍为10,15,28,34,89,60,70.第四遍为10,15,28,34,60,89,70,“60”发生交换的次数为2次;冒泡排序过程中,若从左往右冒泡(大的往后冒泡),则第一遍为15,60,34,10,28,70,89,第二遍为15,34,10,28,60,70,89,“60”交换的次数为4次,若从右往左冒泡(小的往前冒泡),则第一遍为10,15,89,60,34,28,70,第二遍为10,15,28,89,60,34,70,第三遍为10,15,28,34, 89,60,70,第四遍为10,15,28,34,60,89,70,“60”发生交换的次数为4次,选项B正确。
18.B
【详解】本题主要考查VB中数组及循环结构的使用。“Exit Do”用以跳出Do循环,Do循环的循环条件为“a(b(j)) > a(t)”,由题意可知为“a(b(i-1)) > a(b(i))”,程序执行中数组b变化过程为:2,1,3,4,5,6,7,8,9,10—>2,3,1,4,5,6,7,8,9,10—>2,4,3,1,5,6,7,8,9,10—>2,4,5,3,1,6,7,8,9,10—>2,4,5,3,6,1,7,8,9,10,—>7,2,4,5,3,6,1,8,9,10—>7,2,4,8,5,3,6,1,9,10—>7,2,4,8,5,9,3,6,1,10—>7,2,4,8,5,9,3,6,10,1。故B选项正确。其余选项均不符合题意。
19.B
【详解】本题主要考查VB文本框属性的描述。文本框上有个LOCKED属性,设置为TRUE就可以实现锁定文本框,故本题选B选项。
20.A
【详解】
21.C
【详解】本题考查的是VB循环、选择语句。由If Abs(i - n) < n\2 Then可知,在字符串后半段才把字符连接到ans,由If c > = "a" And c < = "z" Then c = Chr(Asc("A") + Asc(c) - Asc("a"))可知如果是小写转化为大写,由ans = C + ans可知是倒序输出。s ="Live on No evil"后半段字符为:“No evil”小写转成大写后为“NO EVIL”,倒序输出为:LIVE ON。选项C正确。
22.D
【详解】本题考查流程图。依据题意,第一次循环,m=3,m>1,m=3+3 mod 2=4,s=0+4=4;第二次循环,m=6,m>1,m=6+0=6,s=4+6=10;第三次循环,m=5,m>1,m=6,s=10+6=16;第四次循环,m=0,不满足条件,结束循环,此时S等于16,故选项D正确。
23.B
【详解】本题考查的是二分查找。对分查找又称二分查找,是一种高效的查找方法。对分查找的前提是被查找的数据是有序的(升序或降序)。对分查找的基本思想是在有序的数列中,首先将要查找的数据与有序数列内处于中间位置的数据 进行比较,如果两者相等,则查找成功;否则就根据数据的有序性,再确定该数据的范围应该在数列的前 半部分还是后半部分;在新确定的缩少范围内,继续按上述方法进行查找,直到找到要查找的数据,即查找成功,如果要查找的数据不存在,即查找不成功。初始值t=""
i=0,j=9,m=Fix((i+j)/ 2)=4,t=t+Str(m)="4",a(4)=78>62,i=m+1=5,t=t+"→"="4→";
i=5,j=9,m=Fix((i+j)/ 2)=7,t=t+Str(m)="4→7",a(7)=56<62,j=m-1=6,t=t+"←"="4→7←";
i=5,j=6,m=Fix((i+j)/ 2)=5,t=t+Str(m)="4→7←5",a(5)=70>62,i=m+1=6,t=t+"→"="4→7←5→";
i=6,j=6,m=Fix((i+j)/ 2)=6,t=t+Str(m)="4→7←5→6",a(6)=63>62,i=m+1=7,t=t+"→"="4→7←5→6→";
i=7,j=6,i>j推出查找。故选项B正确。
24.D
【详解】本题考查计算机基础知识。A项用Excle较合适;B项用Flash较合适;C项用Photoshop较合适,D项用编程解决比较合适。
25.①枚举算法;②I mod 3<>0;③方法
【详解】
26.(1)t=t*i
(2) t的值超出integer的取值范围(或:t的数据类型声明不当)、修改t的数据类型为取值范围更大的类型
【详解】
27.18
【详解】
28.(1)Len(ch);(2)Label2.Caption = s
【详解】本题意图考核考生对循环结构、分支结构的综合应用以及VB常用函数、赋值语句等的灵活应用。并能根据题意,对程序补充完整。
29. (1,7),(10,3) a(i+1)=c+1 sp+1 to i+2 step -1 sp-1
【详解】本题主要考查VB程序的调试与执行。①退掉5号房间,满足上下靠,则登记的记录变成(1,7),(10,3)②当前处理的是第4种情况,上下靠,所以if条件为a(i+1)=c+1③第三种情况,上下不靠,需要增加一条新记录,需要将当前及后面的记录值均往后移一位,故此处的循环条件为sp+1 to i+2 step -1④通过for循环输出登记的记录,sp的初始值为k+1,所以此处循环范围是i从1到sp-1。
30.2016
【详解】本题主要考查VB程序的执行。分析程序可知,该程序实现将字符串s中的数字提取出来,保存到变量t中,在文本框Text1中输入“2016_Student”(不包含引号),单击命令按钮Command1后,文本框Text2中显示的内容是2016。
31. prime(i) 或 prime(i)=True End IF a(i)-a(i-1)=2
【详解】本题主要考查VB程序的执行与调试。①函数prime()判断是否是质数,是质数返回True,否则返回False。如果i是质数,变量k递增,并将质数i赋给数组a,所以此处填prime(i)或prime(i)=True。②根据语法结构,此处if判断结束,故填End IF。③两个质数的差为 2,则这两个质数称为孪生质数对,故此处填a(i)-a(i-1)=2。
32. ①a<=b ②yb*ym>0
【详解】本题考查的是对分查找。求解出该区间内的一个近似解(精确到10-5),因此Abs(ym)<0.00001时就表示找到了。查找的条件是头指针小于或等于尾指针,故①处填入a<=b;由b=m可知尾指针变为m,只有b和m对应的值yb、ym在同在x轴上方或下方,才需要移动尾指针,故②处为yb*ym>0。
答案第1页,共2页
答案第1页,共2页