求最长升序子序列的长度。一个数的序列bi,当b1<b2<…<bS的时候,我们称这个序列是升序的。对于给定的一个序列(al,a2,…,aN),我们可以得到一些升序的子序列(ail,ai2,…,aiK),这里1<=il<i2<……<iK<=N。比如,对于序列(1,7,3,5,9,4,8),有它的一些升序子序列,如(1,7),(3,4,8)等等。这些子序列中最长的长度是4,比如子序列(1,3,5,8),小王设计VB程序用于求最长升序子序列的长度,在文本框Text1中输入n个各不相同的数据(各数据之间以逗号隔开),单击“求解”按钮Command1后在标签Labell中输出最长升序子序列的长度,运行界面如图所示。

具体算法描述如下:
①将文本框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程序如下,请回答下列问题:
(1)若在文本框Text1中输入的序列为(4,7,9,8,6),则数组元素b(2)的值为_____________。
(2)请在划线处填入合适的代码。
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(i)Then
______
flag = False
End If
j=j-1
Loop
If______Then b(1)=a(i)
End If
Next i
Label1.Caption="最长升序子序列的长度为:"+Str(maxlen)
End Sub
当前题号:1 | 题型:None | 难度:0.99
如果一个整数是另一个整数的平方,则称该数是“完全平方数”。例:4=2*2,9=3*3,所以4,9是完全平方数。下列表达式能判断整数m为完全平方数的是(   )
①(Sqr(m))^2=m
②Int(Sqr(m))=Sqr(m)
③m/Int(Sqr(m))=m\Int(Sqr(m))
④Int(Sqr(m))^2=m
A.①②B.②③C.②④D.③④
当前题号:2 | 题型:选择题 | 难度:0.99
有如下VB程序段:
a(1)=0:a(2)=1:a(3)=0:a(4)=1:a(5)=0
i=1
Do While i<= 2

n=Int(Rnd()*5+1)

If n > i Then

t=a(i): a(i)=a(n):a(n)=t
i=i+1

End if

Loop
执行程序段后,当前a(1)~a(5)各元素的值不可能是(   )
A.1,0,1,0,0B.1,0,0,1,0C.0,0,1,0,1D.0,0,1,1,0
当前题号:3 | 题型:选择题 | 难度:0.99
数组a为一组正整数,其奇数下标的数组元素是升序排序的奇数,偶数下标的数组元素是升序排序的偶数依据对分查找思想,设计一个在数组a中查找数据key的程序。实现该功能的VB程序段如下:
key=Val(Textl. 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
List 1. AddIton"找到了!": 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的值为1,则执行上述程序段,变量m依次被赋值为(   )
A.5  3  2  1B.6  3  2  1C.5  2  1D.6  5  2  1
当前题号:4 | 题型:选择题 | 难度:0.99
有如下VB程序段:
a(1)=20: a(2)=3: a(3)=21: a(4)=37
a(5)=62: a(6)=20: a(7)=13: a(8)=33
k=Abs(a(2)-a(1))
For i=3 To 8
If Abs(a(i)- a(i-1))>k Then k= Abs(a(i)-a(i-1))
Next
执行该程序段后,变量k的值为(   )
A.7B.17C.25D.42
当前题号:5 | 题型:选择题 | 难度:0.99
展开字符串。如果在输入的字符串中,含有类似于“c-g”或者“3-7”的字符子串,就把它当作一种简写,字符串展开输出时有如下规则:
(1)如果“-”号右边的字符按照ASCI码的顺序大于左边字符,输出时,用连续递增的字母或数字串替代其中的“-”号,例如:“c-g”输出为“cdefg”,“3-7”输出为“34567”。
  
(2)如果“-”号右边的字符按照 ASCII码的顺序小于或等于左边字符,输出时,保留中间的“-”号,例如:“a-a”输出为“a-a”,“4-1”输出为“4-1”。
(3)如果“-”号右边的字符恰好是左边字符的后继,则删除中间的“-”号,例如“d-e”应输出为“de”,“3-4”应输出为“34”。
某同学按照上述算法,编写了VB程序,功能如下:在文本框 Text 1中输入简写字符串,单击“展开”按钮 Command 1,程序进行字符串展开处理并显示在文本框Text 2中。程序运行界面如图所示。
(1)如果输人的简写字符串为“abs-w-Y1234-5S-4z”,则展开后的字符串为___________________。
(2)实现上述功能的VB程序如下,请在画线处填入合适代码。
Private Sub Command1_Click()
Dim stl As String, st2 As String, i As Integer
st1=Text1. Text
n=Len(st1)
st2=""
For i=1 To n

If pos(stl, i)Then<> "-" Then

st2=st2-+pos(stl, i)

Else

If pos(stl, i-1)<pos(stl, i+1) Then
For j=Asc(pos(stl, i-1))+1 To Asc(pos(stl, i+1))-1
_______________
Next j
Else
st2=st2+"-"
End If

End If

Next i
Text2. Text=st2
End Sub
Function pos(s As String, x As Integer) As String   '返回字符串s中x位置的字符
__________________
End Function
当前题号:6 | 题型:None | 难度:0.99
编写VB程序,实现把数据key插入到升序序列中,得到一个新的升序序列,原升序序列各元素已依次存放在数组元素a(1),a(2),a(3),……,a(10)中,VB程序段如下:
i=1: j=10
Do While i<=j
m=(i+j)\2
If key <= a(m)Then
    
Else
    
End If
Loop
For k=10 To i Step-1
    
Next k
a(i)=key
要使程序实现上述功能,则划线处①②③中的语句分别是(   )
A.j=m-1    i=m+1 a(k+1)=a(k)
B.j=m-1    i=m+1 a(k)=a(k-1)
C.i=m+1    j=m-1 a(k+1)=a(k)
D.i=m+1    j=m-1 a(k)=a(k-1)
当前题号:7 | 题型:选择题 | 难度:0.99
某算法的部分流程图如图所示,若n输入的值为0,则变量n,s的值分别是(   )
A.21,85B.18,64C.24,85D.18,46
当前题号:8 | 题型:选择题 | 难度:0.99
小明编写了一个矩阵转换程序,功能如下:单击“生成”按钮Commandl后,在列表框listl中生成1-16顺序矩阵,单击“转换”按钮Command2后,在列表框list2中生成转换后的矩阵。转换的算法如下:
(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 Commandl_Click()
′在列表框 listl 中生成4*4矩阵sc,代码略
End Sub
Private Sub Command 2_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

____________________

Elself 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
当前题号:9 | 题型:None | 难度:0.99
有如下 VB 程序段:
Private Sub Commandl_Click()
Dim s As String, res   As String, ch As String
Dim i As Integer
s=Textl.Text:res="":ch=""
For i=1 To Len(s)
ch=Mid(s,i,l)
If Not(ch>="0"And ch<="9"=Then
res=ch+res
End If
Next i
Labell.Caption=res
End Sub
在文本框 Textl 中输入“Qns 2020_GK”后单击按钮 Command1,在标签Labell 中显示(   )
A.Qns_GKB.QnsGKC.KG_snQD.KGsnQ .
当前题号:10 | 题型:选择题 | 难度:0.99