①如果n是奇数,选出所有数据中最大元素,将其放在a数组正中间位置。
②从剩下待处理数据中选出最大的两个元素,同时将较大元素放在已处理数据段的右侧, 较小元素放在已处理数据段的左侧。
③反复执行操作②,直到所有数据处理完毕。 按上述要求,小章编写一个 VB 程序,功能如下:
在文本框 Text1 中输入 n,单击“生成”按钮 Command1,并在文本框 List1 中显示排序前 数据;单击“排序”按钮 Command2,在列表框 List2 中输出处理后的结果。程序运行界面如下图所示。
![](https://img.xkw.com/dksih/QBM/2020/7/1/2496128856891392/2535708148236288/STEM/8fb12805ea934add8b7aa3acff9019ad.png?resizew=220)
(1)下列哪个选项,可以将窗体Form1标题改为:“生成合唱队列”
(2)实现上述功能的VB程序如下,请在划线处①②③填入合适代码。
①
②
③
(3)程序加框处代码有错,请改正。
改正:
Dim a(1 To 100) As Integer
Dim n As Integer
Private Sub Command1_Click()
'在文本框 Text1 中输入 n(n<=100)
'排序前数据存储在数组 a 中,并在文本框 List1 中显示
'代码略
End Sub
Private Sub Command2_Click()
Dim i As Integer, j As Integer, t As Integer
Dim pMax1 As Integer, pMax2 As Integer pMax1 = n \ 2 + 1: pMax2 = n \ 2
If ① Then
For i = 1 To n
If a(i) > a(pMax1) Then t = a(pMax1): a(pMax1) = a(i): a(i) = t
Next i
pMax1 = pMax1 + 1
End If
For i = 1 To n \ 2
If ② Then t = a(pMax1): a(pMax1) = a(pMax2): a(pMax2) = t j = pMax1 Mod n + 1
Do While j <> pMax2
If a(j) > a(pMax1) Then
t = a(pMax1): a(pMax1) = a(j): a(j) = t
t = a(pMax2): a(pMax2) = a(j): a(j) = t
![](https://img.xkw.com/dksih/QBM/2020/7/1/2496128856891392/2535708148236288/STEM/b089586d5fb24ec7a96b96e81f28a7be.png?resizew=25)
t = a(pMax2): a(pMax2) = a(j): a(j) = t
End If
③
Loop
pMax1 = pMax1 + 1
pMax2 = pMax2 - 1
Next i
For i = 1 To n
List2.AddItem Str(a(i))
Next i
End Sub
相似题推荐
例如:42、50、14、16、22、10、34、10、12、38这10个数中,最大的d为50,50=12+16+22。
请回答下列问题:
(1)分析程序可知,生成随机数的事件处理过程名是
(2)实现功能的VB程序如下,请在划线处填入合适的代码。
(3)程序中加框处代码有错,请改正。
Dim a(1 To 20) As Integer
Const n = 10
Private Sub Command1_Click()
Dim i As Integer
Randomize
For i = 1 To n
a(i) =
Text 1. Text = Text 1. Text + Str(a(i))
Next i
End SubPrivate Sub Command2_Click ()
Dim i As Integer, j As Integer, t As Integer
Dim left As Integer, right As Integer
Dim ans As Integer, flag As Bool ean
flag = True
’对数组a进行升序排序,代码略
i = n
Do While i > = 1 And flag
j = i - 1
Do While j > = 1 And flag.
left = 1
right = j - 1
Do While
If ans > a(left) + a(right) Then
left = left + 1
ElseIf ans < a(left) + a(right) Then
right = right - 1
Else
Text2. Text = Str(a(i))
flag = False
End If
Loop
j = j - 1
Loop
Loop
If flag Then
Text2. Text = "no solution"
End If
End Sub(1)将该字符的 ASCII 码转换成对应的 2 位十六进制数;
(2)将产生的十六进制数互换位置;
(3)步骤(2)产生的二位十六进制数即为该明文字符加密后的密文字符。
小明按照上述方法,设计了一个字符串加密的 VB 程序,功能如下:单击“生成密文”按钮 Command1,程序依次将文本框 Text1 中每个字符按上述规则进行加密处理,连接这些加密字符,最后在文本框 Text2 中输出加密结果。程序运行界面如图所示。
Private Sub Command1_Click()
Dim s As String, a As String, ans As String Dim c As Integer, i As Integer
Dim c1 As Integer, c2 As Integer Dim d1 As String, d2 As String
s = Text1.Text ans = ""
For i = 1 To Len(s) a = Mid(s, i, 1) c = Asc(a)
c1 = c \ 16
c2 = ①
d1 = Mid(Str(c1), 2, 1) '使用 Str(c1)将在字符 c1 前增加一个空字符
If c2 >= 10 Then ② Else d2 = Mid(Str(c2), 2, 1)
ans = ③
Next i
Text2.Text = ans
End Sub
(1)按照上述加密算法,明文“B”生成的密文是
(2)实现上述功能的 VB 程序如下,请在划线处填入合适代码。
①
②
③
按上述要求,编写一个VB程序,功能如下:程序运行时从数据库中读取志愿者的检测号、DNA序列存入相应数组,在文本框Text1中输入抗体DNA序列,单击“检测结果”按钮Command11,在列表框List1中按检测号顺序显示每个志愿者的检测结果,并在标签Label1显示疫苗抗体的阳性率(以百分比表示,并保留2位小数),程序运行界面如图所示,请在划线处填入合适的代码。
Dim Pch(1 To 100) As String 'Pch数组存储志愿者的DNA序列
Dim Prs(1 To 100) As String 'Prs数组存储志愿者的检测结果
Dim n As Integer '存储志愿者的总人数
Private Sub Form_ Load ()
Dim i As Integer, j As Integer
Dim tmp As String, chtmp As String
Dim Conn As New ADODB.Connection
Dim Rs As New ADODB.Recordset
Conn.ConnectionString = "Provider=Mi crosoft. ACE.OLEDB.12. 0;Data Source=" + App.Path+"\DNADB.accdb"
Conn.Open
Set Rs.ActiveConnection = Conn
Rs.Open "SELECT * FROM Source"'从数据库的名为 "Source"数据表中读取数据
i =0
Do While Not Rs.EOF
i=i+1
Pnum(i) = Rs.Fields(0)
Pch(i) = Rs.Fields(1)
Rs.MoveNext
Loop
Rs.Close
Conn.Close
n=①
For i=1 To n-1 '以检测号作为关键字对DNA序列数据进行升序排列
j=i+1
Do While j <= n
If②
chtmp = Pch(i):Pch(i)= Pch(j):Pch(j)= chtmp
tmp = Pnum(i):Pnum(i)= Pnum(j):Pnum(j)= tmp
End If
j=j+1
Loop
Next i
End Sub
Private Sub Command1_ Click ()
Dim Ach As String,RVch As String,Vch As String
Dim i As Integer,j As Integer,k As Integer,m As Integer
Ach = Text1. Text: s = Len(Ach): RVch = Ach + Ach
k=0:m=0
For i=1 To n
If Len(Pch(i)) <= Len (Ach) Then
k =k+ 1: Prs(i) = "无效"
Else
For j=1 To s '按环状序列依次进行比较
Vch =③
If Test(Vch,Pch(i)) Then
m=m+1
Prs(i) ="阳性": Exit For
Else
Prs(i) = "阴性"
End If
Next j
End If
Next i
For i =1To n
List1. AddItem Pnum(i) +" " + Prs(i)
Next i
Label1. Caption = Str(Int(m/(n-k)*10000 +0.5)/100) + "%"
End Sub
Function Test(str1 As String,str2 As String) As Boolean '字符串比对函数
Dim i As Integer
Test = False
For i = 1 To Len(str2) - Len(str1) + 1
If④
Test = True: Exit For
End If
Next i
End Function