首页
高中语文
高中数学
高中英语
高中物理
高中化学
高中历史
高中道德与法治(政治)
高中地理
高中生物
高中音乐
高中美术
高中体育
高中信息技术
高中通用技术
资源详情
高中信息技术
学考(选考)专区
二轮专题
2020浙江高考信息技术VB算法与程序专项练习专题一 求程序运行结果
文档属性
名称
2020浙江高考信息技术VB算法与程序专项练习专题一 求程序运行结果
格式
zip
文件大小
329.0KB
资源类型
教案
版本资源
浙教版
科目
信息技术(信息科技)
更新时间
2020-03-10 13:57:12
点击下载
图片预览
1
2
3
4
5
文档简介
专题一 求程序运行结果
1.有如下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.11,11,7,9,3,9 B.6,2,8,10,5,9
C.6,9,3,7,8,12 D.3,9,0,8,2,7
解析 产生a(i)值的范围是[1,10],排除答案C和D。当i是奇数时,并且a(i)>a(i+1)时交换,也就是说奇数位的数小于等于他后面的数。当奇数位的数小于等于他后面的数,或者是偶数位时,执行a(i)=a(i)+1,此时a(i)有可能等于11。
答案 A
2.有VB程序段如下:
For i = 1 To 6
a(i) = Int(Rnd * 20) + 1
If a(i) Mod 2 = i Mod 2 Then
a(i) = a(i) - 1
Else
a(i) = a(i) + 2
End If
Next i
执行该程序段后,a(1)~a(6)各元素可能的是( )
A.13,2,7,12,5,18 B.22,7,0,15,4,19
C.20,9,18,23,4,7 D.6,0,4,21,18,17
解析 产生a(i)值的范围是[1,20],当i是奇数时,如果a(i)也是奇数,将他减1,成为偶数。当i是偶数时,如果a(i)也是偶数,将他减1,成为奇数。因此奇数位产生的是偶数,偶数位产生的奇数。当产生的最小奇数为1时,减1为0,即最小偶数为0,当产生的最大偶数为20时,加2为22。同理可得奇数的范围是[1,21]。
答案 B
3.有如下所示VB程序段:
str1 = ”ABCDEFGHIJKLMNOPQRSTUVWXYZ”
s = ” ”
For i = 1 To 4
t = Int(Rnd * 10) + 1
If t Mod 2 = i Mod 2 Then
t = t + 1
Else
t = t + 2
End If
s = s + Mid(str1, t, 1)
Next i
List1.AddItem s
执行该程序段后,列表框List1中可能显示的内容是( )
A.BADC B.BCDY
C.DEFG D.CDEF
解析 产生t值的范围是[1,10]。当i是奇数时,如果t也是奇数,加1成为偶数,t不是奇数,加2还是偶数,且数的范围是[2,12]。当i是偶数时,如果t也是偶数,加1成为奇数,t不是偶数,加2还是奇数,且数的范围是[3,11]。因此奇数位产生的是偶数,偶数位产生的奇数。
答案 C
4.有如下VB程序段:
i = 1: n = 5
Do While i <= n
x = Int(Rnd() * 9) + 1
If x Mod 2 = 1 Then
a(i) = x
Else
a(n)=x
n=n-1
End If
i = i + 1
Loop
数组元素的初值均为0,执行该程序段后,在下列选项中a(1)至a(5)各元素值不可能的是( )
A.7 1 3 9 8 B.3 3 0 8 8
C.0 1 0 4 2 D.1 3 5 5 0
解析 产生的数[1,9],偶数放在后面,奇数放在前面。A选项,先产生4个奇数,再产生一个偶数。B选项,先产生两个奇数,再产生两个偶数,此时i=4,n=3,不满足条件,退出循环,因此第3个元素为0。C选项,先产生一个偶数,再产生一个奇数,再生产2个偶数,此时n=3,i=5,不满足条件。D选项,先产生4个奇数,此时n=5,条件成立,但产生的数不可能是0。
答案 D
5.有如下 VB 程序段:
a(1) = 3: a(2) = 4: a(3) = 1: a(4) = 2: a(5) = 5
k = Int(Rnd * 4) + 1
For i = 1 To 5
If i <> k Then
If a(i)
End If
Next i
执行该程序段后,数组元素 a(1)到 a(5)中的值依次不可能为( )
A.5 4 3 2 1 B.3 4 1 2 5
C.3 4 2 1 5 D.1 4 3 2 5
解析 k的取值范围是[1,4],A选项中只有当i=5,k=1时才能把5换到最前面,但此时又不满足条件a(i)
2就不会换,当i=2时k等于任何值,均不会换,当i=3时,k=3,不换。C选项中,3和4互换,D选项2和4互换。
答案 A
6.有以下VB程序段:
a(1) = 2
For i = 2 To 3
a(i)=a(i-1)-Int(Rnd()*2)
If i Mod 2 = 1 Then
a(i) = a(i) + 1
Else
a(i) = a(i) - 1
End If
Next i
执行程序后,a(2)和a(3)的值不可能的是( )
A.1,1 B.1,0
C.0,1 D.0,0
解析 语句a(i)=a(i-1)-Int(Rnd()*2)的功能是让a(i)的值比他前面的小1或相等。即a(2)为1或2,他的值减去1后,值可能为0或1。当a(2)=1时,a(3)的值可能是1或0,加1后的值可以是1或2。当a(2)=0时,a(3)的值可能是-1或0,加1后的值可以是0或1。
答案 B
7.有如下 VB 程序段:
For i = 1 To 6
a(i) = Int(Rnd() * 10) + 1
If a(i) Mod 2 <> i Mod 2 Then i = i - 1
Next i
For i = 1 To 5
For j = 6 To i + 2 Step -1
If a(j) < a(j - 2) Then
t=a(j):a(j)=a(j-2):a(j-2)=t
End If
Next j
Next i
执行程序后,a 数组各元素可能是 ( )
A.1,2,3,4,5,6 B.1,0,3,6,5,8
C.3,2,7,6,11,8 D.2,1,4,3,10,9
解析 a(i)中产生的是[1,10]之间的随机数,且奇数位为奇数,偶数位为偶数。接下来按奇偶分别进行排序。B选面中不可能产生0,C选项中不可能产生11。
答案 A
8.有如下 VB 程序段:
a(1)=6:a(2)=9:a(3)=3
a(4)=7:a(5)=8:a(6)=1
t = 2 * Int(Rnd * 3) + 1
For i = t To 5
k = i
For j = i + 1 To 6
If a(j) < a(k) Then k = j
Next j
If k <> i Then
temp = a(i): a(i) = a(k): a(k) = temp
End If
Next i
执行该程序段后,a(1)~a(6)各元素的值不可能是( )
A.6,1,3,7,8,9 B.6,9,1,3,7,8
C.6,9,3,7,1,8 D.1,3,6,7,8,9
解析 t的值为1,3,5,D选项属于t=1的情况,A选项属于t=2的情况,即从第2个数开始排序。选项B属于t=3,选项C属于t=5。
答案 A
9.有如下 VB 程序段:
n = 8
For i = 1 To n
d(i) = Int(Rnd * 10) + 1
Next i
For i = 2 To n - 1
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.3,10,3,5,4,4,10,1 B.0,3,4,5,6,6,7,8
C.2,1,3,4,5,6,8,7 D.6,4,5,6,5,7,1,10
解析 当i为偶数时,k=1,偶数位的数实现降序排列,当i为奇数时k=-1,奇数位的数实现升序排列。
答案 A
10.有如下 VB 程序段:
Dim a(1 To 6) As Integer, i As Integer
Randomize
For i = 1 To 6
a(i) = Int(Rnd * 10) + 1
If a(i) Mod 2 = 1 Then
i = i - 1
ElseIf i Mod 2 = 0 Then
a(i)=a(i)+a(i-1)
End If
Next i
最终 a 数组各元素的值可能是( )
A.8,14,3,10,2,12 B.2,4,6,10,12,24
C.10,16,8,18,8,4 D.6,12,10,20,4,8
解析 产生的数在[1,10],如果是奇数,重新产生。奇数位不可能超过10,偶数位上数字是他与他前面数字之和,肯定为偶数,且比他前面的数大。
答案 D
11.有如下VB程序段:
b(1) = a(1):t = 1
For i = 2 To 6
For j = 1 To t
If a(i) > b(j) Then
b(j) = a(i)
Exit For
End If
Next j
If j > t Then t = t + 1: b(t) = a(i)
Next i
数组a(1)至a(6)的值分别为15、22、13、134、43、2,执行该程序段后,变量t的值为( )
A.2 B.3 C.4 D.5
解析 b数组中存储的是较大值,当a(i) > b(j)条件成立时,中途退出内循环,此时不满足j > t。变量t只有在a(i)小于或等于b数组中的值才增加1。
i t b(1) b(2) b(3)
2 2 22
3 3 13
4 3 134
5 3
6 3
答案 B
12.有如下 VB 程序段:
flag = True : i = 1
Do While i <= 6
x = Int(Rnd * 100) + 1
If flag Or x >50 Then
a(i)=x
flag = Not flag
i = i + 1
End if
Loop
执行该程序段后,在下列选项中,a(1)~a(6)各元素值不可能的是( )
A.52,95,46,74,77,83 B.50,55,46,70,21,97
C.62,78,57,61,69,50 D.31,54,48,72,50,82
解析 本题考查循环过程中变量的变化规律。通过flag=Not flag语句得知,Flag的值是True和False交替出现的,当i的值为奇数时flag为True,偶数时flag为False。当i为偶数时flag为False,只有x>50成立才会给数组a赋值,即数组a偶数位(a(2)、a(4)、a(6))上的值肯定大于50。C选项a(6)=50不能出现。
答案 C
13.有如下程序段:
Const n = 6
Dim a(1 To n) As Integer
Dim i As Integer, j As Integer, t As Integer
Do While True
For i = 1 To n - 1
If a(i) > a(i + 1) Then Exit For
Next i
If i < n Then
For k = 1 To n
j = Int(Rnd * 6) + 1
t=a(j):a(j)=a(i):a(i)=t
Next k
Else
Exit Do
End If
Loop
数组中 a(1)到 a(6)的值依次为“56,34,48,87,65,96”,经上述程序段执行后a(1)到a(6)的值依次为( )
A.96 87 65 56 48 34
B.34 48 56 65 87 96
C.选项A和B都有可能
D.选项A和B都不可能
解析 当条件i
=n),退出循环,结束程序。在For循环中,满足条件a(i)>a(i+1)就中途退出循环,此时i
a(i+1),因此该数组中的数已经是升序排列。
答案 B
14.有如下程序段:
Sum = 6
a(11) = 49
For i = 10 To 1 Step -1
a(i) = a(i + 1) - 1
If a(i) Mod 3 = 0 Then Sum = Sum + a(i)
Next i
Text1.Text = Str(Sum)
该程序段运行后,文本框Text1中显示的内容是( )
A.174 B.180 C.36 D.42
解析 从第10个元素开始,是他后面一个元素值减1,且是3的倍数相加(共有4个数,即a(10)a(7)a(4)a(1)),即48+45+42+39+6。
答案 B
15.以下VB程序段:
n = Val(Text1.Text)
Do While n > 0
t = n Mod 10
If t Mod 2 = 0 Then a(t) = a(t) + 1
n = n \10
Loop
List1.AddItem a(2)
若在文本框Text1中输入2686261,程序运行后,在列表框List1中显示的值为( )
A.0 B.2 C.3 D.6
解析 t是数n的个位数,当t是偶数时,进行计数。因此2的个数有2个。
答案 B
16.有如下VB程序段:
Dim i As Integer, Sum As Integer
Dim a(1 To 6) As Integer, b(1 To 6) As Integer
Sum = 0
a(6) = 18: a(5) = 7: b(6) = 14: b(5) = 16
For i = 4 To 1 Step -1
a(i)=a(i+2)-a(i+1)
b(i)=b(i+2)-a(i)
If b(i) Mod 3 = 0 Then Sum=Sum+b(i)
Next i
Text1.Text = Str(Sum)
该程序段运行后,文本框 Text1 中显示的内容是 ( )
A.39 B.30 C.-9 D.12
解析 采用列表法进行变量跟踪。
i a(i) b(i) sum
4 11 3 3
3 -4 20 3
2 15 -12 -9
1 -19 39 30
答案 B
17.有如下VB程序段:
s = ” ”
For i = 2 To 5
For j = i To 5
If j Mod i = 0 Then a(j) = a(j) + 1
Next j
Next i
For i = 1 To 5
If a(i) <> 1 Then s = Str(i) & s
Next i
Text1.Text = s
若数组a的初始值都为0,则运行该程序段后,Text1中显示的内容为( )
A.14 B.235 C.532 D.41
解析 如果是大写字母,将他的ASCII值-62,再加上A的ASCII值,表示将该字母加密成该字母后面第3位的字母。小写字母和数字不处理,把加密后的进行反向连接。
答案 D
18.有如下 VB 程序段:
a(1) = 17: a(2) = 16: a(3) = 12: a(4) = 18
a(5) = 15: a(6) = 13: a(7) = 17: a(8) = 20
i = 2
Do While i <= 8
If i Mod 2 = 0 And a(i) > a(i - 1) Then
t=a(i):a(i)=a(i-1):a(i-1)=t
ElseIf a(i - 1) Mod 2 = 1 Then
a(i-1)=a(i-1)+1
End If
i = i + 1
Loop
执行程序后,a 数组各元素是( )
A.17,16,18,12,16,14,20,18
B.18,16,18,12,16,14,20,17
C.16,17,18,12,13,16,20,17
D.18,16,18,12,14,15,17,20
解析 当i=2时,把a(1)加1 ,接着观察奇数位,该位上原来是奇数,加1后是偶数,如果是偶数不操作,因此奇数位肯定是偶数,偶数位上的数字肯定比奇数位上数字小。
答案 B
19.有如下VB程序段:
Dim a(1 to 6) As Integer
Sum= 0
For i = 1 To 6
For j = i+1 To 6
If j Mod i = 0 Then a(j) = 1 - a(j)
Next j
Next i
For i = 1 To 6
Sum = Sum + a(i)
Next i
Text1.Text = Str(Sum)
该程序段运行后,文本框Text1中显示的内容是( )
A.3 B.4 C.5 D.6
解析 语句a(j) = 1 - a(j)的功能是把a(j)中的0改为1,1改为0。当i>=4时,没有j可以除通i。
I a(1) a(2) a(3) a(4) a(5) a(6)
1 0 1 1 1 1 1
2 0 1 1 0 1 0
3 0 1 1 0 1 1
答案 B
20.某VB程序段如下:
s = 0
For i = 2 To 5
For j = i To 5
If j Mod i = 0 Then
a(j) = a(j) + 1
s = s + a(j)
End If
Next j
Next i
数组a中初始值均为0,运行程序段后,变量s的值为( )
A.6 B.5 C.4 D.14
解析 可以列出表格跟踪变量。
i a(1) a(2) a(3) a(4) a(5) s
2 0 1 0 1 0 2
3 0 1 1 1 0 3
4 0 1 1 2 0 5
5 0 1 1 2 1 6
答案 A
21.小王同学编写了一个VB程序段如下所示:
a = 7: b = 3: c = 9
m = 1: k = 1
For i=1 to 3
If Abs(a + b) > c Then
k = k + 1
If k > m Then m = k
Else
k = 1
End If
a = a - b
b = a + b
Next i
Text1.Text = Str(m)
程序运行后,在文本框Text1中显示的结果为( )
A.4 B.3 C.2 D.1
解析 列出表格,进行变量跟踪。
I A b c m k
初值 7 3 9 1 1
1 4 7 9 2 2
2 -3 4 9 3 3
3 -7 -3 9 3 1
答案 C
22.有如下 VB 程序段:
Dim a(1 To 7) As Integer
a(1)=14:a(2)=15:a(3)=0:a(4)=11
a(5)=13:a(6)=21:a(7)=17
i = 6: flag = True
Do While i > 1 And flag
If a(i) Mod 3 = 0 And a(i) <> 0 Then
t=a(i):a(i)=a(i+1):a(i+1)=t
ElseIf a(i) = 0 Then
flag = flase
ElseIf a(i + 1) Mod 2 = 1 Then
a(i)=Abs(a(i)-a(i+1))
End If
i = i - 1
Loop
执行程序后,a 数组各元素是( )
A.14,0,15,4,17,13,21 B.14,15,0,11,4,17,21
C.15,14,0,11,4,17,21 D.14,15,0,11,13,4,17
解析 采用列表法。
i a(1) a(2) a(3) a(4) a(5) a(6) a(7)
初值 14 15 0 11 13 21 17
6 17 21
5 4
4 14 15 0 11 4 17 21
答案 B
23.有如下VB程序段:
n=10
For k=1 To n\3
p=3*k-2
x=p
For t=p+1 To 3*k
If a(t)
Next t
If p<>x Then
y=a(p):a(p)=a(x):a(x)=y
End If
Next k
a(1)到a(10)中的元素依次为8,3,5,9,7,5,7,6,5,4,程序运行结束后,以下数组元素的值错误的是( )
A.a(2)=8 B.a(5)=7
C.a(7)=3 D.a(10)=4
解析 本题考查选择排序算法及程序阅读能力。
k的值 1 2 3
p的值 1 4 7
x的初值 1 4 7
t的值 2 to 3 5 to 6 8 to 9
内层循环功能:在p开始的3个数中,找到最小数的位置存入x,将最小数与p位置的数交换。程序执行结束后,数组a的值依次是:3,8,5,5,7,9,5,6,7,4。
答案 C
24.有如下程序段:
L = a(1): R = b(1): M = 0
For i = 2 To 6
If a(i) <= R Then
If R < b(i) Then R = b(i)
Else
If R - L > M Then M = R - L
L = a(i)
R = b(i)
End If
Next i
If R - L > M Then M = R - L
Label1.Caption = Str(M)
数组元素a(1)到a(6)的值依次为“1,2,6,10,15,20”,数组元素b(1)到b(6)的值依次为“6,4,8,15,18,26”,经过该程序段“加工”后,标签Label1上显示的内容为( )
A.6 B.7 C.8 D.25
解析
i a(i) b(i) L R M
初值 1 6 0
2 2 4 1 6 0
3 6 8 1 8 0
4 10 15 10 15 7
5 15 18 10 18 7
6 20 26 20 26 8
答案 C
25.有如下程序段:
For i = 2 To 6
For j = 1 To i-1
If a(j)<=a(i) And d(j)>=d(i) Then
d(i)=d(j)+1:pre(i)=j
End If
Next j
Next i
max = 0: k = 0
For i = 1 To 6
If d(i)>max Then max=d(i):k=i
Next i
Do While k <> 0
st = a(k) & ”,” & st
k = pre(k)
Loop
Text1.Text = Mid(st,1,Len(st)-1)
数组元素a(1)到a(6)的值依次为“2,6,5,9,8,8”,数组d各元素的值初始化为1,数组pre各元素的值初始化为0,经过该程序段“加工”后,Text1中的值是( )
A.2,5,9 B.2,6,8,8
C.2,5,8,8 D.2,5,6,8,8,9
解析 在数组a中,从第2个数开始,往他前面的数进行查找,若找到比较他小的数,且d(j)>=d(i),进行相应操作。
i d(1) d(2) d(3) d(4) d(5) d(6) pre(1) pre(2) pre(3) pre(4) pre(5) pre(6)
2 1 2 1 1 1 1 0 1 0 0 0 0
3 1 2 2 1 1 1 0 1 1 0 0 0
4 1 2 2 3 1 1 0 1 1 2 0 0
5 1 2 2 3 3 1 0 1 1 2 2 0
6 1 2 2 3 3 4 0 1 1 2 2 5
找到最大值的位置在6,连接a(6),接着把a(5)、a(2)、a(1)连接在前面。
答案 B
26.有以下VB程序段:
a(1) = 68: a(2) = 88: a(3) = 76: a(4) = 60: a(5) = 98
a(6) = 100: a(7) = 64: a(8) = 85: a(9) = 99: a(10) = 59
For i = 1 To 9
b(i)=Abs(a(i+1)-a(i))
c(b(i)\10)=c(b(i)\10)+1
Next i
For i = 0 To 10
If c(i) > 0 Then s = s + ” ” + Str(c(i))
Next i
Label1.Caption = s
数组c各元素初值为0,执行该程序段,标签Label1上显示的内容是( )
A.2 3 2 1 1 B.1 3 2 2 1
C.2 3 2 2 1 D.1 3 2 1 2
解析 b(1)至b(9)数组中的值分别为20,12,16,38,2,36,21,14,40。而c数组是统计b数组元素中十位上数字的个数。
答案 B
27.有如下 VB 程序段:
For k = 1 To 10
f = k Mod 2
If f = 0 Then a(k) = 0 Else a(k) = 1
For j = 1 To k
If f = 0 Then
a(k) = a(k) + 1
Else
a(k) = a(k) * j
End If
Next j
Next k
执行该程序段后,数组元素a(4)的值为( )
A.6 B.4 C.2 D.1
解析 当k是偶数时,f的初值为0,并进行1至k的计数。当k是奇数时,f的初值为1,并进行1至k的累乘。
答案 B
28.有如下VB程序段(数组a各元素的初始值均为0)。
n = Len(Text1.Text)
c = 1
For i = 1 To n
s = Mid(Text1.Text, i, 1)
If s >= ”0” And s <= ”9” Then
a(c) = a(c) * 10 + Val(s)
Else
If a(c) > 0 Then c = c + 1
End If
Next i
在文本框Text中输入 “No1:X:123:Y:680:End”。执行该程序段后,数组a(2)的值为( )
A.1 B.2 C.3 D.123
解析 a数组存储的是字符串中的数字及个数,第二个数字串是123。
答案 D
29.有VB编写的程序如下:
Dim a(0 To 9) As Integer,t as Long
t = Val(Text1.Text)
Do While t <> 0
a(t Mod 10) = 1
t = t \10
Loop
For i = 0 To 9
x = x + a(i)
Next i
Text1中输入10242048则程序执行后x的值为( )
A.1 B.2 C.5 D.10
解析 t Mod 10的值为t的个位数,a(t Mod 10)=1不是计数语句,指只要出现过,该下标对应的数组元素为1,出现过的数有01248。
答案 C
30.以下VB程序段:
Dim n As Long ,t As Integer
Dim a(1 To 9) As Integer
n = Val(Text1.Text)
Do While n > 0
t = n Mod 10
If t Mod 2 = 0 Then a(t)=a(t)+1
n = n \10
Loop
List1.AddItem a(2)
若在文本框Text1中输入26862612,则单击命令按钮Command1后,在列表框List1中显示的值为( )
A.2 B.3 C.4 D.7
解析 计n各个数字中的偶数,a(2)指2的个数。
答案 B
31.有如下 VB 程序段:
For i = 1 To 10
b(i) = 0
Next i
For i = 1 To 5
For j = 1 To 10
If b(i) < a(j) Then b(i)=a(j):t=j
Next j
a(t) = 0
List1.AddItem Str(b(i))
Next i
其中数组元素a(1)到a(10)的值依次为“25,42,53,66,77,83,98,14,38,99”,执行程序后,在列表框List1中依次输出的数据是( )
A.25 42 53 66 77 B.14 25 38 42 53
C.99 98 83 77 66 D.83 98 14 38 99
解析 找出每趟中的最大值,存储在b数组中,同时把数组a该位置中的值赋值为0。
答案 C
32.有如下程序段:
s = 0
For i = 1 To 5
If a(i) Mod 2 = 1 Then s = s + 1
Next i
For i = 1 To 4
If a(i) Mod 2 = 0 Then
For j = 5 To i + 1 Step -1
If a(j) Mod 2 = 1 Then
a(6) = a(i): a(i) = a(j): a(j) = a(6)
Exit For
End If
Next j
End If
Next i
For i = s + 2 To 5
k = i - 1
For j = i To 5
If a(k) > a(j) Then k = j
Next j
If k <> i - 1 Then
a(6) = a(i - 1): a(i - 1) = a(k): a(k) = a(6)
End If
Next i
数组a(1)至a(5)中的数据分别为64,57,22,96,71,运行该程序段,数组a中数据依次为( )
A.22, 57, 64, 71, 96 B.71, 57, 22, 96, 64
C.71, 57, 22, 64, 96 D.57, 71, 22, 64, 96
解析 变量s中存储的是a数组是奇数,因此s=2。当a(i)是偶数时,与最后面第1个奇数互换。数组中值为71,57,22,96,64。接着对后面的偶数采用选择排序进行长序排列。
答案 C
33.有如下VB程序段:
a(1)=1: a(2)=1
b(1)=1: b(2)=2
For i=3 To 5
a(i)=a(i-1)+a(i-2)
b(i)=b(i-1)+a(i)
Next i
执行该程序段后,数组元素b(5)的值为( )
A.12 B.8 C.5 D.4
解析 当i=3 时,a(3)=2 ,b(3)=3。当i=4 时,a(4)=3 ,b(4)=7。当i=5时,a(5)=5 ,b(5)=12。
答案 A
34.有VB程序段如下:
s = ”2019appreciate”: sum = 0
For i = 1 To Len(s)
ch = Mid(s, i, 1)
If ch >= ”a” And ch <= ”z” Then
m = Asc(ch) - Asc(”a”) + 1
a(m) = a(m) + 1
End If
Next i
For i = 1 To 10
If a(i) > 0 Then sum = sum + 1
Next i
数组a各元素的初始值都为0,执行该程序段后,则变量sum的值为 ( )
A.10 B.7 C.4 D.3
解析 表达式Asc(ch) - Asc(”a”) + 1表示小写字母ch在字母表中位置,a(m)表示该位置上字母的个数。只是统计小写字母,且sum是统计a(i)大于0的个数,因此是统计出现几种小写字母。且i只循环了60次。
答案 C
35.有如下VB程序段:
For i = 1 To n
a(i) = Mid(Text1.Text, i, 1)
Next i
Do While n > 1
If Asc(a(n)) >= Asc(a(n - 1)) Then m = 1 Else m = 2
b(m) = b(m) + 1
n = n - 1
Loop
数组b各元素的初始值都为0,文本框Text1的内容为“2019Python”。执行程序后,变量 b(1)的值为( )
A.10 B.6 C.5 D.4
解析 数组a中存储的是输入的每个字符,从最后一个字母开始,如果大于等于他前面一个,m=1,且统计的次数增加1。
答案 C
36.有如下VB程序段:
Private Sub Command1_Click()
Dim s As String, mw As String, ch As String
Dim temp As Integer
s = Text1.Text
temp = 0: mw = ” ”
For i = 1 To Len(s)
ch = Mid(s, i, 1)
If ch >= ”0” And ch <= ”9” Then
temp = temp * 10 + Val(ch)
ElseIf ch = ”-” Then
mw = mw + Chr(temp Mod 27 - 1 + Asc(”A”))
temp = 0
Else
mw = mw + ch
End If
Next i
Text2.Text = mw
End Sub
在 Text1 里输入“1931-572-185”(不包括双引号),当单击按钮后,文本框 Text2 里的输出结果是( )
A.HAD B.NE C.NEW D.ORG-
解析 语句temp = temp * 10 + Val(ch)的作用是取出字符串中的数字串。表达式 Chr(temp Mod 27 - 1 + Asc(”A”))的功能是把数字转换成-1至26之间数,再加上字母A的ASCII码值。并将转换后的数字表达为字母表中大字字母。但文本最后没有“一”,因此只输两个字母。
答案 B
37.有如下 VB 程序段:
Private Sub Command1_Click()
Dim s As String, a As String, t As String
s = Text1.Text: t = ” ”
For i = 1 To Len(s)
a = Mid(s, i, 1)
If a >= ”0” And a <= ”9” Then
t = t + a
ElseIf a = ”!” Then
t = ” ”
ElseIf t <> ” ” Then
List1.AddItem t
End If
Next i
End Sub
执行程序时,在文本框 Text1 中输入“12+34=46!789ok”(不包括双引号),单击按钮 Command1 后,在列表框 List1 中显示的结果是( )
解析 当取出的是数字时,连接到t中,当a = ”!”,清空t,其他情况输出t。当a=“+”,先输出12,当a=“=”,先输出1234,当a=“!”,t=””, 当a=“o”和“k”,分别输出789。
答案 C
38.有如下程序段:
st = Text1.Text
1x = Len(st)
m = 0: k = 1
For i = 2 To 1x
If Mid(st,i,1)>Mid(st,i-1,1) Then
k = k + 1
If k = 2 Then m = m + 1
Else
k = 1
End If
Next i
Text2.Text = Str(m)
若在Text1中输入“abcddecaab”,则该程序段运行后,文本框Text2中显示的内容是( )
A.2 B.3 C.4 D.1
解析 从第2个字符开始,跟他前面的字符比较,如果连续大于或等于前面的字符2次,则计m加1。有递增序列abcd、de、ab。
答案 B
39.执行下列程序:
s = ”ERROR: Divisor must not be zero!”
flag = False: m = 0
For i = 1 To Len(s)
ch = Mid(s, i, 1)
If ch >= ”a” And ch <= ”z” Then
If Not flag Then
m = m + 1
flag = True
End If
Else
flag = False
End If
Next i
Text1.Text = Str(m)
则该程序段运行后,文本框Text1中显示的内容是( )
A.4 B.5 C.6 D.19
解析 如果检测到不是小写字母,则flag为False,一旦小写字母开头,m加1,同时flag为True,第二个小字母时,m不再加1。也就是说小写字母开头的字母有哪些。
答案 A
40.有如下VB程序段:
Ins = Text1.Text
n = Len(Ins): Outs = Mid(Ins, 1, 1)
i = 2
Do While Mid(Ins,i,1)>=Mid(Outs,i-1,1)
Outs = Outs + Mid(Ins, i, 1)
i = i + 1
Loop
Text2.Text = Outs
在文本框Text1中输入“Happy2019”,执行该程序段后,文本框Text2中显示的是( )
A.Ha B.Happy C.Happy29 D.Happy2019
解析 查找后面的字符大于或等于前面的字符。字符的顺序为数字小于大写字母小于小写字母。
答案 B
41.有如下VB程序段:
s = Text1.Text
t = Mid(s, 1, 1)
max = 0
For i = 2 To Len(s)
If Mid(s, i, 1) > Mid(s, i - 1, 1) Then
t = t + Mid(s, i, 1)
If Len(t) > max Then
max = Len(t)
ans = t
Else
t = Mid(s, i, 1)
End If
End If
Next i
Text2.Text = ans
在文本框Text1中输入“11341358901”,执行该程序段后,文本框Text2中显示的是( )
A.13435891 B.01
C.3589 D.13589
解析 当后面字母大于前面字母,存入变量t中,因此t的长度每次都是在增长的,语句t = Mid(s, i, 1)是不可能执行到的。最终变量ans中存储的是只要后面比前面大的字符串。
答案 A
42.有如下程序段:
Function delStr(S As String, m As Integer) As String
Dim n As Integer : n = Len(S)
If m < 1 Or m > n Then delStr = ”输入位置有误!”
If m = 1 Then delStr=Mid(S,2,n-1)
If m < n Then delStr=Mid(S,1,m-1)+Mid(S,m+1,n-m)
If m = n Then delStr=Mid(S,1,n-1)
End Function
Private Sub Command1_Click()
Dim S As String : Dim i As Integer
S = Text1.Text
For i = 1 To 10 Step 2
S = delStr(S, i)
Next i
Text2.Text = S
End Sub
文本框Text1中输入Happybirthday,执行该程序段,文本框Text2中显示的是( )
A.apybrtda B.apbrhday
C.Happybirhday D.day
解析 共调用自定义函数5次,分别删除第1,3,5,7,9个字母,这里的3指删除第1个字母后的第3个,即原来的1,4,7,10,13个字母。
答案 A
43.有如下 VB 程序:
s1 = Text1.Text
For i = 1 To Len(s1)
ch = Mid(s1, i, 1)
If Asc(ch) >= 65 And Asc(ch) <= 90 Then
ch = Chr(65 + (Asc(ch) - 62) Mod 26)
End If
s2 = ch + s2
Next i
Label1.Caption = s2
已知大写字母 A 的 ASCII 码为 65。运行上述程序,若文本框 Text1 中的内容为“A1b2C3”,单击命令按钮 Command1,标签 Label1 中显示的是( )
A.A1b2C3 B.3C2b1A
C.D1b2F3 D.3F2b1D
解析 A的ASCII码为65,Asc(ch)-62表示该字母将后移3位。因此程序的功能是只将其中的大写字母后移3位,大小和数字不变,并将转换的字符反向连接。
答案 D
44.某个进行素数判断的VB程序段如下:
Private Sub Command1_Click()
Dim x As Integer
x = Val(Text1.Text)
Label1.Caption = Str(x) + prime(x, 2)
End Sub
Function prime(n As Integer, m As Integer) As String
If n = m Then
prime = ”是素数。”
ElseIf n < 2 Or n Mod m = 0 Then
prime = ”不是素数。”
Else
prime = prime(n, m + 1)
End If
End Function
在文本框Text1中输入的值是123,并执行程序后,自定义函数prime被执行的次数是( )
A.1次 B.2次 C.122次 D.123次
解析 本题考核的是递归算法。调用函数prime(123,2), prime(123,2)=prime(123,3),返加函数的值为”不是素数。”,因此调用了2次。
答案 B
45.有如下 VB 程序段:
Dim a(1 to 6)as String
i = 1
Do While i <= 2
For j = i 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
Text1.Text = Text1.Text + ” ” + a(i)
i = i + 1
Loop
数组元素 a(1)到 a(6)的值分别为”9”,”121”,”58”,”34”,”78”,”21”,程序运行后,文本框Text1 中显示的内容为( )
A.9 34 B.9 21
C.121 34 D.121 21
解析 比较的对象是字符串变量。分类讨论,当i=1时,把”9”换到最后,当i=2时,把”58”换到”34”的后面。
答案 C
46.有一个数组,采用冒泡排序,第一遍排序后的结果为:4,10,5,32,6,7,9,17,24那么该数组的原始顺序不可能的是( )
A.10,5,32,6,7,9,17,24,4
B.10,5,32,6,7,9,4,17,24
C.10,5,32,4,6,7,9,17,24
D.4,10,5,32,17,9,24,6,7
解析 第一趟排序的最值出现在第1个位置,因此是从小到大排序,从后往前冒泡。
答案 D
47.有如下VB程序段:
i = 1
Do While i <= 5
If i=1 Or a(i-1)<=a(i) Then
i = i + 1
Else
t=a(i):a(i)=a(i-1):a(i-1)=t
i = i - 1
End If
Loop
数组元素a(0)到a(8)的初始值依次为“0,4,7,3,5,1,8,6,2”。执行该程序段后,数组元素a(1)到a(8)的值分别是( )
A.1 3 4 5 7 8 6 2
B.7 5 4 3 1 8 6 2
C.4 7 3 1 2 5 6 8
D.4 7 3 8 6 5 2 1
解析 该算法是对前5个数进行升序排列。
答案 A
48.某排序算法的VB程序段如下:
For i = 1 To 2
For j = 1 To 6-2*i
If a(j)
t=a(j):a(j)=a(j+2):a(j+2)=t
End If
Next j
Next i
数组元素a(1)~a(6)的初始值依次为“15,13,44,38,26,7”,执行该程序段后,数组a 元素的值分别为( )
A.44,38,26,13,15,7 B.44,7,26,13,15,38
C.15,38,26,13,44,7 D.44,38,26,15,13,7
解析 排了两趟,分别是奇数位和偶数位分别排序,降序。
答案 A
49.有如下程序段:
k = 0 : First = 1
Last = 5 : Flag = True
Do While Flag
k = k + 1
p = False
Flag = False
For j = First To Last
If a(j)>a(j+1) Then
t=a(j):a(j)=a(j+1):a(j+1)=t
Last = j : Flag = True
If p = False Then
First = j :p = True
End If
End If
Next j
If First <> 1 Then First = First - 1
Last = Last - 1
Loop
数组元素a(1)到a(6)的值依次为“3,6,8,5,7,9”,经过该程序段“加工”后,下列说法正确的是( )
A.此过程中数据共交换了3次
B.此过程中该数组的数据共比较了7次
C.变量k的值为2
D.数组元素a(1)到a(6)的数未排成有序
解析 本题主要考查排序算法的优化。flag表示是否有序的标志,First表示最后一次前面交换的位置,如果前面的有序,下次First的位置开始比较。Last表示后面第一次交换的位置,后面Last+1至n肯定是序的,只要跟Last+1进行比较比较就可以了。变量k表示排序的趟数。第1趟时,8和5及7进行互换,结果为3,6,5,7,8,9,Last=4,First=3,接着在第2和第3个数之间排序,实现5和6互换,Last=2,First=2。第3趟,才发现没有数据交换,退出循环,数组有序。因此共交换了3次,第1趟比较了5次,第2趟比较了2次,最后一趟比较1次,共8次。
答案 A
50.有如下VB程序段:
Dim s(1 To 6) As String
Text1.Text =” ”
For i = 1 To 5
For j = i + 1 To 6
If s(i)+s(j)
t=s(j):s(j)=s(i):s(i)=t
End If
Next j
Next i
For i = 1 To 6
Text1.Text = Text1.Text + s(i)
Next i
如果程序运行,一开始当数组元素s(1)到s(6)的值依次为“4”、“343”、“312”、“12”、“246”、“121”,运行该段代码后,文本框Text1中显示的内容为( )
A.434331224612121
B.434331224612112
C.343312246121124
D.121122463123434
解析 根据字符串连接进行判断是否交换。当i=1,2,3时,他均比后面的字符串大,因此不交换,“12”和“246”互换,“12”和“121”互换。
答案 B
51.有如下VB程序段:
i = 1: j = 8
Key = Text1.Text: f = False
Do While i <= j And Not f
m = Int((i + j) / 2)
If a(m) = Key Then
f = True
List1.AddItem Str(m) + ” is good luck!”
ElseIf a(m) > Key Then
j = m - 1
List1.AddItem Str(m)
Else
i = m + 1
List1.AddItem Str(m)
End If
Loop
If Not f Then List1.AddItem ”sorry!”
a(1)到 a(8)依次为 ”as”、”book”、”can”、”pig”、”see”、”you”、
”we”、 ”zero”。当在文本框Text1中输入以下哪个内容时,列表框list1中显示的结果和别的三项不一样 ( )
A .pear B.quick C.run D.sad
解析 A、B、C、D在数据均没有找到,BCD均处于pig和see,因此输出的结果是一样的。
答案 A
52.某对分查找算法的VB程序段如下:
Key=val(Text1.text)
i = 1: j = 10
Do While i <= j
m = Int((i + j) / 2)
If a(m) = key Then Exit Do
If key>a(m) Then i =m+1 Else j=m–1
Text2.Text= Text2.Text+Str(a(m))
Loop
数组元素a(1)到a(10)的值依次为“5,12,20,29,36,40,55,58,66,74”,若在文本框 Text1 中输入数据,执行该程序段,文本框 Text2 中显示的内容为:36,58,40,55,则 key 的值可能是 ( )
A.38或45 B.45或56
C.56或58 D.57或70
解析 采用二叉树分析,如下图所示:
最后查找的结点是7号,有3种可能,大于6号但小于7号,等于7号,或大于7号但小于8号。
答案 B
53.有如下程序段:
i = 1: j = 10: key = Val(Text1.Text)
Do While i <= j
m = (i + j) \'2
If key < a(m) Then
j = m - 1
ElseIf key > a(m) Then
i = m + 1
Else
Do While m > 1 And a(m - 1) = key
m = m - 1
Loop
Exit Do
End If
Loop
数组中a(1)到a(10)依次为“1,1,2,3,3,3,3,4,4,4”,若在文本框Text1中输入值3,经上述程序段执行后变量m的值为( )
A.7 B.6 C.5 D.4
解析 当找到一个他前面的,又不是第一个跟key相等的数,继续往前找,即有多个相等的数时,找一个最前面的相等的数。
答案 D
54.某对分查找算法的VB程序段如下:
k = Val(Text1.Text)
i = 1: j = 6:
f = False
Do While i <= j And Not f
m = (i + j) \2
If a(m) = k Then f = True
If a(m)>a(i) Then
If a(i)<=k And k
Else
If a(m)
End If
Label1.Caption = Label1.Caption + Str(a(m))
Loop
数组元素a(1)到a(6)的值依次为“58,66,72,24,35,40”,在文本框Text1中输入的值为35,执行该程序段,标签Label1中显示的值是( )
A.72 35 B.24 35
C.72 24 35 D.72 24 24 35
解析 该数据段前半段和后半段均升序,查找一个数时,要判断处于前半个升序段带是后半个升序段。
i J m a(m)
1 6 3 72
2 6 4 24
3 6 4 24
4 6 5 35
答案 D
55.有如下VB程序段:
Key = Val(Text1.Text)
i = 1: j = 10
flag = False
s =” ”
Do While i <= j And Not flag
mid1 = Int(i+(j-i)/3)
mid2=Int(j-(j-i)/3)
If Key = a (mid1) Then
flag = True
Elseif Key
j = mid1 - 1
Elseif Key = a(mid2) Then
flag = True
Elseif Key >a(mid2) Then
i = mid2 + 1
Else
i = mid1 + 1
j = mid2 - 1
End If
s = s & ” ” & mid1 & ”:” & mid2
Loop
Text2.Text = s
已知数组 a(1 To 10)中的数据分别是 12、21、34、45、59、63、72、86、94、100,在文本框Text1中输入34,程序运行后文本框Text2 中显示的内容是( )
A.4:7 1:2 B.4:7 1:2 3:3
C.4:7 1:3 3:3 D.4:7 3:3
解析 利用列表法变量跟踪。
i j mid1 a(mid1) mid2 a(mid2)
1 10 4 7 45 72
1 3 1 2 12 21
3 3 3 3 34 34
答案 B
56.数组a为一组正整数,其奇数下标的数组元素是升序排序的奇数,偶数下标的数组元素是升序排序的偶数,依据对分查找思想,设计一个在数组 a 中查找数据 Key 的程序。实现该功能的 VB 程序段如下:
Key = Val(Text1.Text): i = 1: j = 10
Do While i <= j
m = Int((i + j) / 2 + 0.5)
If Key Mod 2 + a(m) Mod 2 = 1 Then m = m - 1
If a(m) = Key Then
List1.AddItem ”找到了!”: Exit Do
ElseIf a(m) > Key Then
j = m - 2
Else
i = m + 2
End If
Loop
If i > j Then List1.AddItem ”未找到此数”
如果数组元素 a(1)到 a(10)的数据依次是“1,4,5,6,11,10,23,16,25,20”,
key 的值为5,则执行上述程序段,查找的次数为( )
A.4 B.3 C.2 D.1
解析 依次访问的下标为5,1,3,因此答案为查找3次。
答案 B
57.有如下 VB 程序段:
i = 1: j = 6
Key = Text1.Text
s = ” ”
Do While i <= j
m = Int((i + j) / 2 + 0.5)
s = s + ” ” + a(m)
If Key > a(m) Then
i = m + 1
Else
j = m - 1
End If
Loop
Text1.Text = s
数组元素 a(1)到 a(6)的值分别为”Beijing”、”Guangdong”、”Jiangsu”、
”Jiangxi”、”Shanghai”、“Zhejiang”,已按字典序排序。当 key 的值为“Zhejiang”时,单击命令按钮Command1,文本框 Text1 中显示的内容为( )
A.Jiangxi Zhejiang
B.Jiangsu Shanghai Jiangxi Zhejiang
C.Jiangxi Zhejiang Shanghai
D.Jiangsu Shanghai Zhejiang
解析 采用列表法。
i j m a(m)
1 6 4 Jiangxi
5 6 6 Zhejiang
答案 A
58.插值查找。在有序数组中查找值的 VB 程序段如下:
Dim a(1 To 10) As Integer
Dim i As Integer, j As Integer, m As Integer, flag As Boolean
Dim key As Integer, n As Integer,c As Integer,d As Integer
i=1:j=10:m=0:flag=False
key = Val(Text1.Text)
Do While i<= j And Not flag
If key
a(j) Then n=-1 : Exit Do ′未找到退出
If a(i) <> a(j) Then
c=key-a(i):d=a(j)-a(i)
m=i+Int(c*(j-i)/d)
Else
m = i
End If
If key = a(m) Then flag=True:n = m
If key > a(m) Then i = m + 1
If key < a(m) Then j = m - 1
Loop
If flag = False Then n = -1
其中数组元素a(1)到a(10)分别为“15,25,37,40,63,70,87,90,92,96”,下列说法错误的是( )
A.如在文本框Text1中输入10,程序执行后,变量m取初值0,结果n=-1
B.如在文本框Text1中输入25,程序执行后,变量m的值变化为0→2,结果n=2
C.如在文本框Text1中输入40,程序执行后,变量m的值变化为0→3→4,结果n=4
D.如在文本框Text1中输入78,程序执行后,变量m的值变化为0→6→7,结果n=-1
解析 文本框Text1中输入10,不在查找范围。输入25,c=10,d=81,m=2。输入78,m的值变化为0→8→6。
答案 D
59.有如下程序段:
m = 1: n = 12
key = Val(Text1.Text)
mid = (m + n + 1) \2
Do While a(mid) <> key And m <= n
If a(mid) > key Then
n = mid - 1
left = left + 1
Else
m = mid + 1
End If
mid = (m + n) \2
sum = sum + 1
Loop
数组a(1)至a(12)中的数据分别为2,3,8,16,19,27,29,32,49,64,72,99,在文本框Text1中输入19,运行该程序段,则变量sum和left的值分别为( )
A.1 1 B.1 2 C.2 1 D.2 2
答案 C
60.某对分查找算法的VB程序段如下:
Key = Val(Text1.Text) Mod 10
Text2.Text = ” ”
i = 1: j = 10: f = False
Do While i <= j And Not f
m = (i + j) \2
If a(m) \10 = Key Then
search = m:f = True
ElseIf a(m) \10 < Key Then
i = m + 1
Else
j = m - 1
End If
Text2.Text = Str(m) + Text2.Text
Loop
数组元素a(1)到a(10)的值依次为:8,15,19,23,35,37,42,48,55,68,文本框Text1中输入21,执行该程序段,文本框Text2中显示的是( )
A.5 2 B.2 5
C.15 35 D.35 15
解析 要找的数是输入数的个位数,但查找的是十位数字,并按升序排列。
答案 D
61.将6个数据23,45,93,95,95,99依次存放在数组a(1)到a(6)中,在文本框Text1中输入95,运行下列程序段:
x=Val(Text1.Text)
i=1: j=6: n=6
f=False
Do While (i <= j) And (f=False)
m=Int((i+j) / 2)
If a(m)=x Then f=True
If a(m) < x Then i=m+1 Else j=m - 1
Loop
If f=True Then
For k=m To n-1
a(k)=a(k+1)
Next k
n=n - 1
Label1.Caption=” ”
For k=1 To n
Label1.Caption=Label1.Caption+Str(a(k))+” ”
Next k
Else
Label1.Caption=”找不到该数”
End If
程序运行后,Label1中显示的内容是( )
A.23 45 93 95 95 95 99 B.23 45 93 95 99
C.23 45 93 99 D.23 45 93 95 95 95
答案 B
62.有如下程序段:
n = 0: i = 2: f = True
Do While i <= 6 And f
n = n + 1
f = False
For j = 6 To i Step -1
If a(j) < a(j - 1) Then
t =a(j):a(j)=a(j-1):a(j-1)=t
Last = j
f = True
End If
Next j
i = Last + 1
Loop
数组元素a(1)到a(6)的值依次为“10,16,82,36,51,87”,经过该程序段“加工”后,下列说法不正确的是( )
A.变量n 的值为5
B.此过程中数据共需比较8次
C.此过程中数据共需交换2次
D.数组元素a(1)到a(6)的值为升序
解析 f是每趟排序是否交换的标志,如果没有交换,则提前退出循环。变量n是排序的趟数。Last是记录每趟最后一次交换的位置。当i=2时,比较5次,交换1次,Last=4。接下来i=5,比较2次,交换1次,Last=5。接下来i=6,比较1次,但未交换,退出循环。排了3趟。
答案 A
63.有如下 VB 程序段:
flag = True : i = 1
Do While i <= 6
x = Int(Rnd * 100) + 1
If flag Or x >50 Then
a(i)=x
flag = Not flag
i = i + 1
End if
Loop
执行该程序段后,在下列选项中,a(1)~a(6)各元素值不可能的是( )
A.52,95,46,74,77,83 B.50,55,46,70,21,97
C.62,78,57,61,69,50 D.31,54,48,72,50,82
解析 本题考查循环过程中变量的变化规律。通过 flag = Not flag 语句得知,Flag 的值是 True 和 False 交替出现的,当 i 的值为奇数是 flag 为 True,偶数时 flag 为 False。当 i 为偶数时,偶数时 flag 为 False,只有>50 成立才会给数组 a 赋值,即数组 a 偶数位(a(2)、a(4)、a(6))上的值肯定大于 50。C 选项 a(6)=50 不能出现。
答案 C
64.有如下VB程序段:
n=6
For i = 1 To 3
s = ” ”
For j = 1 To n \2
s = s + a(j) + ”-” + a(n - j + 1) + ”;”
Next j
t = a(n)
For j = n To 2 Step -1
a(j) = a(j - 1)
Next j
a(2) = t
Next i
若数组a(1)至a(6)的值分别为”1”、”2”、”3”、”4”、 ”5”、”6”,执行该程序段后,变量s的值为( )
A.”1-4;5-3;6-2;” B.”1-5;6-4;2-3;”
C.”1-3;4-2;5-6;” D.”1-2;3-6;4-5;”
解析 i表示循环次数,共循环了3次。j和n - j + 1是对称位置的关系。第1次s=”1-6;2-5;3-4;”,从最后1个元素开始,直到第2个元素,等于他前面的值,a数组中元素值依次为1、6、2、3、4、5;第2次s=”1-5;6-4;2-3;” 从最后1个元素开始,直到第2个元素,等于他前面的值,a数组中元素值依次为1、5、6、2、3、4;第3次s=”1-4;5-3;6-2;”。
答案 A
点击下载
同课章节目录
点击下载
VIP下载