Dim a(1 To 5) As Integer
Dim f As Boolean
a(1) = 23: a(2) = 12: a(3) = 56: a(4) = 34: a(5) = 10
i = 1: f = True
Do While i <= 5 And f = True
If a(i) = 56 Then f = False
i = i + 1
Loop
Label1.Caption = i
Const n = 8
Dim a(1 To n) As Integer
For i = 1 To n
a(i) = Int(Rnd * 20)
Next i
x = n \ 2
For i = x To 2 Step -1
For j = 1 To i - 1
If a(j) < a(i) Then
t = a(j): a(j) = a(i): a(i) = t
End If
Next j
Next i
i = n
Do While i > x + 1
k = i
For j = i - 1 To x + 1 Step -1
If a(j) > a(k) Then k = j
Next j
If k <> i Then
t = a(k): a(k) = a(i): a(i) = t
End If
i = i - 1
Loop
执行完这段代码后,数组 a 中各个元素的值可能的是( )
Dim a(1 To 5) As Integer
a(1) = 1
For i = 2 To 5
a(i) = Int(Rnd() * 3) + 3
Next i
For i = 2 To 5
If a(i) Mod 2 = 1 Then
a(i) = a(i) + a(i - 1)
Else
a(i) = a(i) / 2
End If
Next i
执行程序后,a数组各元素可能是( )
Private Sub Command1_ Click( )
Dim a(1 To 15) As Integer
Dim i As Integer
a(1) = 1
For i = 1 To 15
a(i) = a(i-1) + i
Next i
Text1. Text = str(a(i))
End Sub
运行程序,单击命令按钮 Command1后,出现的错误提示为( )
先打顺子牌(顺子指连续的5个及以牌型,如45678,顺子最大到A),若有多个顺子,先长后短长度和同按先小后大的顺序打出然后按4张、3张、2张、1张的顺序出牌,同一个牌型从小到大。
小刘依据上述算法设计了VB程序,其中牌型“10”用数字“0”代替表示,如图所示,请回答下列问题。
Private Sub Command1_Click()
Dim i As Integer, j As Integer
Dim a (1 To 13) As Integer, max As Integer, t As Integer, last As Integer
Dim sa As String, stem As String, flag As Boolean
Const s="34567890JQKA2" '用0代替牌10
'发牌和洗牌代码略,在标签Label1显示初始牌型,洗牌后数组a各元素分别存储牌型3~2的数量
t=17 '刚开始牌有17张
Do While t>0 '打牌
flag=True
Do While flag '寻找牌中有没有顺子牌
max =0: k =1: flag=False
For i=1 To 13
If ① Then
k=k+1
If k > Max Then
Max = k
Last = i+1 '记录连续牌的最后一张
End If
Else
k=1
End If
Next i
If Max >= 5 Then '有顺子牌,把最长的这把顺子打出来
flag=True: sa= ""
For j = ② To last
Stem=Mid(s, j, 1)
sa=sa +stem+ ""
a(j)=a(j)-1
Next j
List1.AddItem sa '顺子在列表框显示
t=t-max
End If
Loop
For i= 1 To 13 '出4个一样的牌
If a(i)=4 Then
stem=Mid(s, j, 1)
List1.AddItem stem+stem+stem+stem
a(i)=0
③
End If
Next i
'3张、2张、单张出牌,具体代码略
Loop
End Sub
① ② ③
编写一个VB程序,实现如下功能:程序启动时产生n个1~20之间的随机整数,在文本框Text2中输入整数k(k≤n),单击“查找”按钮Command1后,在标签Label1上显示第k大的数及位置。程序运行界面如图所示。
Const n = 10
Dim a(1 To n) As Integer
Private Sub Form_Load()
'本过程产生n个1~20之间的随机整数存数组a中,并在文本框Text1中显示,代码略
End Sub
Private Sub Command1_Click()
Dim i As Integer, sum As Integer, key As Integer,c As Integer,k As Integer
Dim b(1 To 20) As Integer
①
For i = 1 To n
b(a(i)) = b(a(i)) + 1
Next i
i = 20
sum = 0
Do While i >= 1 And sum < k
②
i = i – 1
Loop
③
Label3.Caption = "第" + Str(k) + "大的数是" + Str(key)
c = 0
For i = 1 To n
If a(i) = key Then c = c + 1
If c =
Then Exit For
Next i
Label3.Caption = Label3.Caption + ",在第" + Str(i) + "位置"
End Sub
① ② ③
操作1:在文本框中分别输入L,R,T(1≤L≤R≤n),对数组下标为L到R之内(包含L和R)的字符做相应的字符加密操作(1≤T≤100)。
操作2:在文本框中输入M(1≤M≤n),在标签中输出a(M)的值。
为了提高算法的效率,小明设计了如下算法,以n=10为例,将n个元素依次分成
段(
表示对
向下取整),每段的元素个数为
,若最后有不足
个元素,则自成一段。给每段设置一个标记,如下表所示。

①对于操作1,若输入的L,R属于同一段,则直接对a(L to R)的每个元素的ASCII码进行后移T位的操作。如输入4,6,3,则第2段中的每个字符变为k,r,q,操作后如下表所示。

②对于操作1,若输入的L,R不属于同一段,则对元素a(L)所在段中从a(L)开始到该段最后一个元素为止的每个字符的ASCII码做后移T位的操作,并对元素a(R)所在段中从该段第一个元素开始到a(R)为止的每个字符的ASCII码做后移T位的操作,对a(L)元素所在段的下一段开始到a(R)元素所在段的上一段为止的每个段标记值增加T,这些段中的元素值保持不变。如在上表的基础_上再输入1,8,2,则第1段的3个字符和第3段中的前2个数都做相应的字符后移2位的操作,第2段的段标记值增加2,如下表所示。

③对于操作2,若输入M的值为4,则输出a(4)的值,若a(M)所在的段标记为奇数,a(M)的值为该数组元素的值,否则输出a(M)对应的大写字母的值,如a(4)=H。程序运行如下。请回答下列问题:
操作1:在文本框Text1,Text2,Text3中依次输入1,8,3后,点击按钮Command1
操作1:在文本框Text1,Text2,Text3中依次输入7,9,2后,点击按钮Command1
操作2:在文本框Text4中输入6后,点击按钮Command2
Const n=10
Dim a(1 To n)As String
Dim dbj(1 To n)As Integer ‘依次表示每段的标记值
Dim bk As Integer ‘表示每段的元素个数.
Private Sub Form_Lond()
bk = Int(Sqr(n))
‘读取数据,并存储到数组a中,代码略
‘读取数据,并存储到数组dbj中,代码略
End Sub
Function bl(x As Integer)As Integer ‘bl函数返回数组元素a(x)的段编号
bl=
End Function
Private Sub Command1_Click()
Dim L Ax Integer, R As Integer, t As Integer
L= Val(Text1.Text)
R= Val(Text2.Text)
t= Val(Text3.Texr)
If bl(L)= bl(R) Then
For i =L To R
a(i)= Chr((Ase(a(i))- Ase("a")+t) Mod 26+97)
Next i
Else
For i=L To bl(L)*bk
a(i) = Chr((Ase(a(i))- Ase("a")+1) Mod 26+97)
Next i
For i= bl(L)+ 1 To bl(R)-1
dbj(i) = dbj(i) + t
Next i
For i =
a(i) = Chr((Ase(a(i))-Ase("a") + 1) Mod 26 + 97)
Next i
End If
List1. AddItem Str(L) +"," + Str(R) + "," + Str(t) +“加密完成!”
End Sub
Private Sub Command2_Click( )
Dim M As Integer
Dim jg As Suring
M= Val(Text4. Tex1)
If dbj(bl(M)) Mod2 = 0 Then
Jg=
Else
jg= a(M)
End If
Labell. Caption =“经过一 系列操作后. a(” + Str(M) +“)的值为:“+ ig
End Sub
m = Int(Rnd * 4 + 2)
For i = 1 To 6 - m
For j = 1 To 6 - i
If a(j) - a(j + 1) < 0 Then
t = a(j): a(j) = a(j + 1): a(j + 1) = t
End If
Next j
Next i
数组元素a(1)到 a(6)的值依次为“49,45,5,61,42,71”,执行该程序段后,a(1)~a(6)各元素值不可能的是( )
Function f(x As Integer) As Single
f=Abs(x)
End Function
该函数返回值的数据类型是( )
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(1)~a(6)各元素可能的值是( )
|
8 |
5 |
3 |
17 |
14 |
10 |
32 |
25 |
24 |
53 |
50 |
35 |
73 |
66 |
61 |
图 a
依据对分查找思想,设计一个在数组a中查找数据key的程序。执行程序,在文本框Txt1中输入key的值,在文本框Txt2中显示查找结果。根据左右边界,计算中位值,并在标签L1中记录历次中位值的位置。
Private Sub Command1_Click( )
Const n = 15
Dim a(1 To n) As Integer, search As Integer, key As Integer Dim i As Integer, j As Integer, m As Integer
Dim s As String
' 读取一组正整数,按上述规则存入数组,代码略。
key =
i = 1: j = n: search = 0
Do While i <= j
m = (i + j) \ 2
s = s + Str(m) + ","
If m Mod 3 <> 0 Then '把 m调整到三个一组的最后一个数的位置
If key = a(m) Then search = m: Exit Do
ElseIf key < a(m) Then j = m - 3
ElseIfThen i = m + 1
ElseIf key = a(m - 2) Then search = m - 2: Exit Do
ElseIf key = a(m - 1) Then
search = m - 1: Exit Do
End If
Loop
If search <> 0 Then Txt2.Text = Str(search)
Else
Txt2.Text = "找不到" End If
L1.Caption = s
End Sub
Private Sub Command1_Click()
Dim r As Single, s As Single '①
r="10米" '②
s=3.14159*r*r '③
Text2.Text ="某个半径为"+ Str(r)+"米的圆,其面积为"+ Str(s)+"平方米." '④
End Sub
则程序中出错的语句是( )

小明使用选择排序思想对上述n个节目按得分进行降序排序(得分相同的按编号升序排列),并依据得分插入各个节目的排名信息,处理后数组a的存储结构如下图所示:

程序运行时,单击命令按钮Command1后读取数据到数组a中并显示在列表框List1中,单击命令按钮Command2后将节目按照上述规则进行排序,并将排名结果显示在列表框List2中。实现上述功能的VB程序如下,请回答下列问题:
Const n = 20
Dim a(1 To 3 * n) As Integer
Private Sub Command1_Click ()
‘读取数据,存储在数组a中,并显示在列表框List1中。代码略
End Sub
Private Sub Command2_Click ()
![]()
k=i
For j=1 To i-1
If a(2*j) < a(2*k) 0r Then
k=j
End If
Next j
a(3*i)=a(2*k)
a(3*i-1)=a(2*k-1)
a(2*k-1)=a(2*i-1)
Next i
List2. AddItem "第1名:编号”+ CStr(a(2)) + ",分数”+ Str(a(3))
a(1) =1
mc=1
For i=2 To n
If Then mc=i
List2. AddItem "第"+ Str(mc) + "名:编号" + CStr(a(3* i-1)) +",分数"+Str(a(3 * i))
a(3*i-2)=mc
Next i
End Sub