组卷网 > 高中信息技术综合库 > 算法软件操作 > VB程序的调试
题型:操作题 难度:0.4 引用次数:53 题号:10987319
小章想将a数组中n个元素排列成合唱队列形态,具体方法如下:
①如果n是奇数,选出所有数据中最大元素,将其放在a数组正中间位置。
②从剩下待处理数据中选出最大的两个元素,同时将较大元素放在已处理数据段的右侧, 较小元素放在已处理数据段的左侧。
③反复执行操作②,直到所有数据处理完毕。 按上述要求,小章编写一个 VB 程序,功能如下:
在文本框 Text1 中输入 n,单击“生成”按钮 Command1,并在文本框 List1 中显示排序前 数据;单击“排序”按钮 Command2,在列表框 List2 中输出处理后的结果。程序运行界面如下图所示。

(1)下列哪个选项,可以将窗体Form1标题改为:“生成合唱队列”_____(单选,填字 母:A.Form.Caption="生成合唱队列"/ B.Label1.Caption ="生成合唱队列"/ C.Form1.Caption="生成合唱队列")
(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

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
【知识点】 VB程序的调试

相似题推荐

操作题 | 较难 (0.4)
【推荐1】编写一个VB程序,功能如下:单击“随机数”按钮Command1, 随机产生n个[10, 50]范围的偶数。单击“计算”按钮Command2,在这n个随机数中找出四个数a, b, c, d,满足d=a+b+c,且d为所有满足条件组合中的最大值,如果存在符合要求的d,则在Text2中显示d的值,否则显示“no solution"。
例如: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 Sub
Private 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
2021-01-05更新 | 38次组卷
操作题 | 较难 (0.4)
【推荐2】【加试题】某字符(限 ASCII 字符)加密算法,对明文中的每个字符进行下列加密处理:
(1)将该字符的 ASCII 码转换成对应的 2 位十六进制数;
(2)将产生的十六进制数互换位置;
(3)步骤(2)产生的二位十六进制数即为该明文字符加密后的密文字符。
小明按照上述方法,设计了一个字符串加密的 VB 程序,功能如下:单击“生成密文”按钮 Command1,程序依次将文本框 Text1 中每个字符按上述规则进行加密处理,连接这些加密字符,最后在文本框 Text2 中输出加密结果。程序运行界面如图所示。

实现上述功能的 VB 程序如下:
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 程序如下,请在划线处填入合适代码。
_____________________________________
______________________________________
______________________________________
2019-04-24更新 | 29次组卷
操作题 | 较难 (0.4)
【推荐3】病毒疫苗抗体检测。使用字符串序列表示志愿者注射疫苗后细胞的DNA和疫苗抗体的DNA(志愿者的DNA序列长度大于疫苗抗体的DNA序列长度),通过检测疫苗抗体DNA序列是否在志愿者的DNA序列中出现来分析疫苗效果。其中疫苗抗体的DNA序列是环状的,志愿者的DNA序列是线性的。只要疫苗抗体的DNA序列在志愿者的DNA序列中出现,说明已产生抗体。例如:疫苗抗体的DNA序列是环状的“cced”,即可以表示为“cced”,也可以表示为“cedc”、“edcc”、“dcce”。A志愿者的DNA序列为“mtrcnmdaced”, 没有出现抗体序列,结果为“阴性”,B志愿者的DNA序列为“acedssdfaef”,出现抗体序列,结果为“阳性”,C志愿者的DNA序列为“ce”,志愿者的DNA序列长度不够,无法比对,结果为“无效”。
按上述要求,编写一个VB程序,功能如下:程序运行时从数据库中读取志愿者的检测号、DNA序列存入相应数组,在文本框Text1中输入抗体DNA序列,单击“检测结果”按钮Command11,在列表框List1中按检测号顺序显示每个志愿者的检测结果,并在标签Label1显示疫苗抗体的阳性率(以百分比表示,并保留2位小数),程序运行界面如图所示,请在划线处填入合适的代码。

Dim Pnum(1 To 100) As String             'Pnum数组存储志愿者的检测编号
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________ Then
                    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________Then
             Test = True: Exit For
       End If
Next i
End Function
2020-08-26更新 | 19次组卷
共计 平均难度:一般