1)用数组b存储最小下降数列中最小的元素(查找过程中的最小值)b(1)开始为数组a第1个元素;
2)加入方法:将a(i)与数组b中的每个元素依次逐个比较:若a(i)比b(j)小就用a(i)替换b(j)中的值;将a(i)添加到第j个下降数列中,并存储在c数组的c(j)中;
3)若数组a各元素的值为:34,54,3,76,2,3时,则3个下降数列分别为:
“34,3,2”,“54,3”,“76”。
程序运行界面如下图所示:
依据上述描述设计了如下VB程序。请回答下列问题:
Const n = 20
Dim a(1 To n) As Integer
Private Sub Form_Load()
'读取n个数据,依次存储到a(1)、a(2)、……a(n)中,代码略
End Sub
Private Sub Command1_Click()
Dim b(1 To n) As Integer '存储数列最小的值
Dim c(1 To n) As String '存储下降数列
Dim i As Integer
Dim j As Integer
Dim bn As Integer '存储下降数列个数
b(1) = a(1)
bn = 1
c(1) = Str(a(1))
For i =
For j = 1 To bn
If a(i) < b(j) Then
b(j) = a(i)
Exit For
End If
Next j
If j > bn Then
bn = bn + 1
c(bn) = Str(a(i))
End If
Next i
For i = 1 To bn
List1.AddItem c(i)
Next i
Text2.Text = "数列中共有" + Str(bn) + "个下降序列"
End Sub
|
原1-7号男生身高 |
171 172 180 174 176 179 178 |
|
筛选排序后序列 |
171 172 174 176 178 179 180 |
|
“造型设计”后序列 |
180 178 174 171 172 176 179 |

图1
身高顺序:男3号〉男6号〉男7号〉男5号〉男4号〉男2号〉男1号

图2
Dim h (1 To n) As Integer
Dim height1(1 To n) As Integer
Dim height2(1 To n) As Integer
Dim n As Integer, i As Integer, j As Integer, num As Integer, tmp As Integer
Dim sex(1 To n) As String
Private Sub Form_Load()
'n名学生的身高和性别由数据库导出,分别存储在数组h和sex中,代码略!
End Sub
Private Sub Command1_Click()
b = 0
For i = 1 To n 'n名学生中的男生
If sex(i) = “男” Then ① : height1(num) = h(i)
Next i
For i = 1 To num – 1
For j = num To i + 1 Step -1
If height1(j) < height1(j - 1) Then
tmp = height1(j): height1(j) = height1(j - 1): height1(j - 1) = tmp
End If
Next j
Next i
For i = 1 To num
Text1.Text = Text1.Text + " " + Str(height1(i))
Next i
End Sub
Private Sub Command2_Click()
Dim left, right As Integer, i As Integer, mid As Integer
mid = Int((1 + num) / 2)
left = 0: right = 0
height2(mid) = height1(1)
For i = 1 To (num - 1) \ 2
right = right + 1
height2(mid + right) = height1(2*i)
left = left + 1
②
Next i
If num Mod 2 = 0 Then ③
For i = 1 To num
Text2.Text = Text2.Text + " " + Str(height2(i))
Next i
End Sub
①②③
以3×3数据块为例,原矩阵和转置矩阵的结果如图所示。

小明发现对这个矩阵进行转置后,主对角线上的数字没有发生变化,所以决定编写VB程序随机生成一个n×n的矩降再试一下。程序实现的功能如下:在文本框Text1中输入整数n(2≤n≤10),单击“生成矩阵”按钮Command1,生成n2个10到99之间(包含10和99)的随机整数,并以n行、n列矩阵的形式显示在列表框List1中,将转置后的矩阵也显示在List1中。再单击“主对角线”按钮Command2,则在标签Label1中输出两矩阵主对角线上的元素,运行界面如图所示,程序代码如下,请在画线处填入合适的代码。

Const max=100
Dim n As Integer
Dim a(1 To max)As Integer
Dim b(1 To max)As Integer
Private Sub Command1_Click( )
n=Val(Text1.Text)
For i=1 To n*n
a(i)= ①
Next i
p=1
For i=1 To n*n
b(i)=a(p)
If i Mod n=0 Then
p=p-n*(n-1)+1
Else
②
End If
Next i
List1.Clear
List1. AddItem Str(n)+"*"+Str(n)+"方阵”
Call Output(a( ))
List1.AddItem"转置矩阵"
Call Output(b( ))
End Sub
Private Sub Command2_Click( )
Label1.Caption="原矩阵":L.abel2.Caption="转置矩阵"
For i=1 To n
Label1.Caption=Label1.Caption & Str(a(i+(i-1)*n))
Label2.Caption=label2.Caption & Str(b(i+(i-1)*n))
Next i
End Sub
Sub Output(a()As Integer)
Dim line As String
line=""
For i=1 To n*n
If i>1 And i Mod n=1 Then
List1. AddItem line
line=Str(a(i))
Else
③
End If
Next i
List1. AddItem line
End Sub
以上程序段运行时,为了实现上述功能,画线处应填入的代码分别为:①;②;③。
Dim x As String, s As String
x = Text1.Text: s=""
For i = 1 To Len(x)
c = Mid(x, i, 1)
If c = "a" Then
s = s + "z"
Else
s = s + Chr(Asc(c) - 1)
End If
Next i
在文本框Text1中输入“dream”,执行该程序段后,变量s的值是( )
For i = 1 To 2
For j = 6 To 2 * (i + 1) Step -2
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(1)~a(6)的值依次为“happy,sky,change,sk,bellow,hello”。执行该程序段后,a(4)~a(6)的值依次是( )
图a
程序VB代码如下:
Private Sub Command1_Click()
Const n = 20
Dim i, j As Integer
Dim a(1 To n) As Integer
Dim max As Integer
Dim c As Integer
Randomize
For i = 1 To n
a(i) = ①
For j = 1 To i - 1
If a(j) = a(i) Then
②
Exit For
End If
Next j
Next i
'将不重复无序数组a添加到列表框List1中,代码略
For i = 1 To n - 1
For j = 1 To ③
If a(j) > a(j + 1) Then
temp = a(j): a(j) = a(j + 1): a(j + 1) = temp
End If
Next j
Next i
max = Abs(a(2) - a(1))
i = 2
Do While i <= n – 1
If c > max Then max = c
i = i + 1
Loop
Label1.Caption = "相邻两个元素最大的差值为:" + Str(max)
End Sub
请回答下列问题:
① ② ③
Dim S, i As Integer
S=0
For i=1 To 100
S=S+i
Next i
Print "S="&S
import math
def IsPrime(i):
if i==1:
return False
for j in range(2,int(math.sqrt(i))+1):
if:
return False
return True
a=int(input("请输入a:"))
b=int(input("请输入b:"))
summ=0
for i in range(a,b+1):
if IsPrime(i):
while t>0:
summ=summ+t%10
print("数字和为:",summ)
Const n = 10
Private Sub Command1_Click()
num = 0: k = 0
Do While k < n
k = k + 1
If ① Then
num = num + 1
b(num) = a(k)
Else
②
End If
Loop
For j =③
a(j) = b(j - n + num)
Next j
End Sub
下列选项中,①②③中的代码顺序正确的是( )
Function arr(x As Integer) As Boolean
Dim s As Integer, i As Integer
s = 1
For i = 2 To x \ 2
If x Mod i = 0 Then s = s * i
Next i
If s = x Then
arr = True
Else
arr = False
End If
End Function
Private Sub Command1_Click()
Dim i As Integer
For i = 2 To 10
If arr(i) Then List1.AddItem str(i)
Next i
End Sub
单击Command1按钮后,List1中显示的结果是( )
①将密文进行转换为一个十进制数值:例如密文242转换的表达式为:2*53+4*5*+2*5*=72 对应的明文字符为大写“H":
②得到的数值就是对应明文的ASCII 字符的十进制编码(提示:空格所对应的ASCII值为十进制32,小写字母“z”所对应的ASCII值为十进制数122);
程序运行界面如下图所示。在文本框Text1中输入密文,单击“解密”按钮,在文本框Text2 中输出解密后的明文密码。实现上述功能的VB代码如下:

Private Sub Convnand1_Click()
Dim st, p, c1, c2, c3 As String
Dim i, d, res As Integer
st = Text1.Text: n = Len(st)
i=1:res=””
Do While i <=n- 2 '提取有效密文,并进行转换
c1 = Mid(st, i, 1): c2 = Mid(st, i + 1, 1): c3= Mid(st, i +2, 1)
If
Then ‘①
p = Mid(st, i, 3)
d = conv(p)
If d>=32 And d<=122 Then res= res + Chr(d)
②
Else
i =i+1
End If
Loop
Text2 Text = ③
End Sub
‘以下代码是将有效密文数字转换为十进制数的函数
Function conv(p As String) As Integer
Dim k As Integer, q As String, i As Integer
k=0:q=””
For i =ITo 3
q = Mid(p, i, 1)
④
Next i
conv=k
End Function
Dim a(1 To 3) As Single,i As Integer
Randomize
a(1) = 1
For i =2 To 3
a(i) = (Int(Rnd() * 3)) *2- 2
a(i) = Abs(a(i - 1)) / Sqr(a(i))
Next i
List1.AddItem Str(a(i))
运行该程序段,下列错误提示不可能会出现的是( )
import jieba
str="热烈庆祝建党100周年"
fc=jieba.lcut(str)
print(fc)
for i in fc[::1]:
print(i)
已知分词之后的文本输出fc为:['热烈庆祝', '建党', '100', '周年'],则程序运行结束后的结果是( )
建党
100
周年
C . 热烈庆祝建党100周年 D . 年周001党建祝庆烈热s ="ATCGCGCTACTGA"
s1 =" ACGT"
n= Len(s)
i=1:j=1:c=0
Do While i <= n and j <=4
If Mid(s, i, 1)=Mid(s1, j,1) Then
j=j+1
End If
i=i+1
Loop
s= Mid(s, 1, i-1)
执行该程序段后,变量s的值是( )
listque=[] #定义列表listque存储停车状况
max=8 #停车位最大容量
while(True):
print('1.停车')
print('2.开车离开')
print('3.查看停车库')
print('其他. 退出')
x=input("输入你的选择:") #输入选择项
if x=='1':
if len(listque)< :
print("还有",max-len(listque),"个停车位。")
listque.append(input("请输入停车车牌:"))
else:
print("对不起,停车位已满。")
elif x=='2':
if len(listque)==0:
print("停车库为空。")
else:
print (,"开出。")
elif x=='3':
print(listque)
else:
break
在横线中填入代码中
Private Sub Command1_Click()
Dim a(1 To 3) As Integer, k As Integer, t As Integer, s As Integer
a(1) = 12: a(2) = 41: a(3) = 2
s = 0
For k = 2 To 3
If a(k) > a(1) Then
t = a(1): a(1) = a(k): a(k) = t
s = s + 1
End If
Next k
Text1.Text = Str(a(1))
Text2.Text = Str(s)
End Sub
n=int(input(“请输入:”))
s = x = 0
while n != 0:
x = n % 10
s = x + s
n = n //10
print(s)
执行该程序段后,依据程序提示,输入“20220412”,则程序输出结果是( )
输出该新字符串,实现相应功能的Python程序段如下:
s=input("请输入字符串:")
que = [""] * 100 #该空队列可以满足需要
head = 0
tail = 0
for i in range( ① ): #原字符串全部字符依次入队
que[tail] = s[i]
tail+=1
print("加密后的串为: ")
while head < tail: #队列非空时
print(que[head], end="")
②
if head < tail: #队列非空时,出队的元素加入队尾
③
tail+=1
head+=1
上述程序段3个方框处的代码分别为( )