
Private Sub Command1_Click()
Dim a As Integer, b As Integer
Dim i As Integer, n As Integer
Dim c1 As String, s1 As String
Dim c2 As String, s2 As String
Dim c3 As String, s3 As String
List1.Clear
s1 = "甲乙丙丁戊己庚辛壬癸"
s2 = "子丑寅卯辰巳午未申酉戌亥"
s3 = "鼠牛虎兔龙蛇马羊猴鸡狗猪"
n = Val(Text1.Text)
For i = n To
a = (i + 6) Mod 10
b = (i + 8) Mod 12
c1 = Mid(s1, a + 1, 1)
c2 = Mid(s2, b + 1, 1)
c3 = Mid(s3, b + 1, 1)
List1.AddItem + "年" + c1 + c2 + " " + c3
Next i
End Sub

具体算法描述如下:
⑴将文本框Text1中的n个数据依次读取到数组a中;
⑵构造一个数组b(j),j表示升序子序列的长度,b(j)的值表示所有j长度升序序列中最小的末尾元素值。例:序列(2,6,4,5),长度为2的子序列有(2,6)、(2,4)、(2,5)、(4,5),则b(2)=4;
⑶从第1个元素开始,依次处理到第i(1≤i≤n)个元素为止,b数组所能达到的最大下标值maxlen,处理过程分两种情况:
A.a(i)>b(maxlen),则最长升序子序列的长度增加;
B.a(i)<b(maxlen),则在b数组中逆序查找到第一个b(j)>a(i)(maxlen-1≤j≤1),更新数组b中升序子序列长度为j+1时所存储的元素值。
以图中数据为例:

⑷数组b的最大下标值即为最长升序子序列的长度。实现上述过程的VB程序如下,请回答下列问题:
Private Sub Command1_Click()
Dim a(1 To 100) As Integer '存储原序列
Dim b(1 To 100) As Integer '存储各长度序列的最小末尾元素Dim s As String
Dim n As Integer, i As Integer, j As Integer, maxlen As Integer s = Text1.Text
n = 1: j = 1
For i = 1 To Len(s) c = Mid(s, i, 1)
If c = "," Then
a(n) = Mid(s, j, i - j ) n = n + 1
j = i + 1 End If
Next i
maxlen = 1: b(1) = a(1) For i = 2 To n
If a(i) > b(maxlen) Then
maxlen = maxlen + 1 b(maxlen) = a(i)
Else
j = maxlen - 1: flag = True Do While j >= 1 And flag
If a(i) > b(j) Then
flag = False End If
j = j - 1 Loop
IfThen b(1) = a(i)
End If Next i
Label1.Caption = "最长升序子序列的长度为:" + Str(maxlen)
End Sub
a(1) = 1: a(2) = 2
b(1) = 1: b(2) = 2
For i = 3 To 10
a(i) = a(i-1) + a(i-2)
b(i) = b(i-1) + a(i)
Next i
执行该程序段后,数组元素b(5)的值为( )
a(1) = 1
For i = 2 To 6
Randomize
a(i) = a(i - 1) + Int(Rnd * 5 + 1)
If a(i) Mod 2 = 1 Then
a(i) = a(i) \ 2 + 1
Else
a(i) = a(i) / 2
End If
Next i
执行程序后,a数组各元素可能是( )
原始数据:
|
a(1) |
a(2) |
a(3) |
a(4) |
|
1 |
2 |
3 |
4 |
方法一:
①向右旋转1步:
|
a(1) |
a(2) |
a(3) |
a(4) |
|
4 |
1 |
2 |
3 |
②向右旋转2步:
|
a(1) |
a(2) |
a(3) |
a(4) |
|
3 |
4 |
1 |
2 |
③向右旋转3步:
|
a(1) |
a(2) |
a(3) |
a(4) |
|
2 |
3 |
4 |
1 |
方法二:
①将a(1)值放至旋转3个位置后位置a(4):
|
a(1) |
a(2) |
a(3) |
a(4) |
|
1 |
2 |
3 |
1 |
②将原a(4)值放至旋转3个位置后位置a(3):
|
a(1) |
a(2) |
a(3) |
a(4) |
|
1 |
2 |
4 |
1 |
③将原a(3)值放至旋转3个位置后位置a(2):
|
a(1) |
a(2) |
a(3) |
a(4) |
|
1 |
3 |
4 |
1 |
④将原a(2)值放至旋转3个位置后位置a(1):
|
a(1) |
a(2) |
a(3) |
a(4) |
|
2 |
3 |
4 |
1 |
有n个数存储在数组a中,给定一个整数p(1≤p≤n),将数组a的前p个数与后n-p个数分别向右旋转k次。例如数组a的各个数值分别是1,2,3,4,5,6,7,当p=4,k=1时,旋转后的结果为4,1,2,3,7,5,6。小明为此编写了VB程序,功能如下:在文本框Text2、Text3中依次输入p和k的值,单击“旋转数组”按钮Command1后,数组旋转后结果显示在Text4中。程序运行界面如下图所示,请回答下列问题:
Dim a(20) As Integer
Const n = 20
Private Sub Form_Load()
'随机产生n个[1,100]之间的随机整数,依次存储到a(1)、a(2)、…a(n)中,并在文本框Text1显示,代码略
End Sub
Private Sub Command1_Click()
Dim i As Integer, p As Integer, k As Integer, cnt As Integer, c As Integer, t As Integer
p = Val(Text2.Text)
k = Val(Text3.Text)
i = 1: start = 1:c = a(i): cnt = 1
Do While cnt<= p '方法二
i = ①
t = a(i)
a(i) = c
If ② Then
start = start + 1
i = i + 1
c = a(i)
Else
c = t
End If
cnt = cnt + 1
Loop
For i = 1 To k '方法一
temp = a(n)
For j = ③
a(j) = a(j - 1)
Next j
a(p + 1) = temp
Next i
For i = 1 To n
s = s + Str(a(i))
Next i
Text4.Text = s
End Sub
① ② ③

Dim classname(1 To 8000) As String '存储原始数据中的班级名称
Dim selectabc(1 To 8000) As String '存储原始数据选项的值
Dim xiangmu(1 To 8000) As String '存储原始数据选项的序号
Dim n As Integer
Private Sub Command2_Click() '从数据库读取数据,并且按班级名称排序
Dim conn As New ADODB.Connection
conn.ConnectionString = "provider=microsoft.ace.oledb.12.0;data source="&App.Path&"\pingjia.accdb"
conn.Open
Dim rs As New ADODB.Recordset
Set rs.ActiveConnection = conn
rs.Open "select * from data"
n = 0' 记录评价的总条数
'读取数据,并按班级排序,代码略
End Sub
Private Sub Command1_Click()
Dim cstart(1 To 50) As Integer '存储每个班级在数组classname中的起始位置
Dim cend(1 To 50) As Integer '存储每个班级在数组classname中的末尾位置
Dim k As Integer '存储班级数量
Dim testall(1 To 20) As Integer '存储每一项总选择人数,例如testall(1)里存储这评价项目1里的总人数,testc(1)里存储评价项目1里选C的人数
Dim testc(1 To 20) As Integer '存储每一题(项)选c的人数
'确定每个班级的起止位置,存储到cstart数组和cend数组
cstart(1) = 1
temp = classname(1)
k = 1
For i = 1 To n
If classname(i) <> temp Then
k = k + 1
cstart(k) = i
temp = classname(i)
End If
Next i
cend(k) = n
For i = 1 To k '每个班级分别统计评价项目
For q = 1 To 20 '对testall和testc数组初始化
testall(q) = 0
testc(q) = 0
Next q
For j = cstart(i) To cend(i) '对第i个班级进行统计
testall(xiangmu(j)) = testall(xiangmu(j)) + 1\
If selectabc(j) = "C" Then
Next j
For p = 1 To 20 '统计完成后输出这个班级的20个项目的A+B所占百分比
s = s &""&Str(Round((testall(p) - testc(p)) / testall(p) * 100, 1))
Next p
List2.AddItem s
Next i
End Sub
Dim a(1 To 10) As Integer
Dim i, j As Integer
For i = 1 To 10
j = i
Do While j <= 10
If j Mod i = 0 Then
a(j) = a(j) + 1
End If
j = j + 1
Loop
Next i
Text1.Text = Str(a(3))
数组a各元素初值为0,执行上述程序段后,文本框Text1中显示的内容为( )
Dim a(1 To 5) As Integer
a(1) = 1
For i = 2 To 5
a(i) = Int(Rnd * 5) + 1
If a(i) Mod 2 = 0 Then
a(i) = a(i) + i
Else
a(i) = a(i) + a(i - 1)
End If
Next i
a(1)~a(5)的值不可能的是( )
Dim a(1 To 8) As Integer, b(1 To 8) As Integer
a(1)=1: a(2)=2: a(3)=3: a(4)=2: a(5)=1:a(6)=4:a(7)=3: a(8)=5
b(1)=5:b(2)=3:b(3)=5:b(4)=9:b(5)=7:b(6)=7:b(7)=7:b(8)=6
n=8
For i=1 To n-1
For j=n-1 To i Step-1
If a(j)*b(j+1)<a(j+1)*b(j)Then
t=a(j):a(j)=a(j+1):a(j+1)=t
t=b(j):b(j) =b(j+1):b(j+1)=t
End If
Next j
Next i
For i=1 To 8
List1.AddItem str(a(i))+" "+str(b(i))
Next i
运行该程序段后,列表框List1第5行显示的内容为( )
Const n = 20
Dim a(1 To n) As Integer
Dim lena As Integer '数组a的实际长度 Dim s As String
Private Sub Form_Load()
'生成lena个非递减序列,并输出到文本框text1中,代码略
End Sub
Private Sub Command1_Click()
Dim i As Integer, j As Integer i = 1
Do While i < lena
If a(i) <> a(i + 1) Then i =
Else
For j = i + 1 To lena
a(j - 1) =
Next j
lena =
End If
Loop
s = ""
For i = 1 To lena
s = s + Str(a(i))
Next i
Text2.Text = s
End Sub
转换的算法如下:
1)改变列的位置:原矩阵第3列变为新矩阵的第1列,原矩阵第1列变为新矩阵第2列,原矩阵第4列变为新矩阵第3列,原矩阵第2列变为新矩阵第4列。
2)改变行的位置:经过(1)处理后的矩阵的第1行和第4行交换,第2行和第3行交换。实现上面的功能,程序运行界面如图所示。
Dim sc(1 To 16) As Integer
Dim zh(1 To 16) As Integer
Private Sub Command1_ Click( )
'在列表框list1中生成4*4矩阵sc,代码略
End Sub
Private Sub Command2_Click( )
Dim pb As Integer, tmp As Integer, i As Integer, line As String
For i=1 To 16 '变化列
If i Mod 4=1 Then
ElseIf i Mod 4=3 Then
pb=i-2
Else
pb=pb+2
End If
zh(pb)= sc(i)
Next i
For i=1 To 8 '交换行
If Then
tmp=zh(i) : zh(i)=zh(i+12) : zh(i +12)= tmp
Else
tmp=zh(i) : zh(i)=zh(i+4) : zh(i+4)= tmp
End If
Next i
line= ""
List2. Clear
For i=1 To 16
If i Mod 4=1 Then
List2. AddItem line
line= adj(Str(zh(i)), 3)
Else
End If
Next i
List2. AddItem line
End Sub
Function adj(a As String,n As Integer) As String
'adj 函数的功能:在字符串a前加入适当的空格,使得a的程度为n位,代码略。
End Function
m=['书法','绘画','体育']
m.append('歌唱')
m.append('舞蹈')
print(m[4])