试题详情
操作题 适中0.65 引用3 组卷31
编写“数字提取”程序,实现如下功能:在文本框Text1中输入文本信息,点击“提取”按钮Command1,将文本信息中的数字以“,”间隔输出到文本框Text2中。程序运行界面如图所示,VB代码如下,请回答下列问题:

(1)如图所示,该程序共有________个对象。
(2)请根据题意将下列程序补充完整。
Private Sub Command1_Click()

Dim m As String,tmp As String,ch As Strin

Dim s As String,i As Integer

m=Text1.Text

tmp=""

s=""

For i=1 To Len(m)

ch=Mid(m,i,1)

If ch>="0"And ch <="9" Then

______________

Else If tmp<>"" Then

s=s+tmp+","

______________

End If

Next i

Text2.Text=s

End Sub
(3)输入的文本信息如图a所示,若删除加框处代码,则文本框Text2中显示的内容为________________
18-19高二上·浙江温州·期末
知识点:VB程序的调试 答案解析 【答案】很抱歉,登录后才可免费查看答案和解析!
类题推荐
在“抗击疫情,‘宅’出精彩”征文活动中,每位选手可以提交一篇作品。活动以互评的形式展开:每位选手对m篇作品进行打分(本人作品回避),方法如下:
① 用1-n数字代表n个作品,打乱顺序后分配给n个选手。分配方案保存在数组a中,如图a存储了两组分配方案(n=5)。在第一个分配方案中把4号作品分配给1号参赛者,1号作品分配给2号参赛者(选手编号与序号错开)……。

4

1

5

2

3

a(1)~a(n)中存储第一个分配方案

2

3

4

5

1

a(n+1)~a(2*n)中存储第二个分配方案

↑第i列中的作品拿给i号参赛者打分

图a

②分配方案的形成方法: 将1~n之间的随机数字依次放到第1个位置、第2个位置……,随机数不能与位置号相同,并且要防止分配冲突,如前三个分配序号是“2 3 4”,那么在第4位上只能放“5”(如放“1”会导致第5个位置没有符合要求的数字,因此位置n-1需要判断数“n”是否已经分配,如果未分配,位置n-1放置数“n”),最终方案“2 3 4 5 1”。
③评m个作品需要m个分配方案。方案间要避免同一个人拿到重复的作品。如第16题图a第3行上的数据“5 1 2 3 4”不符合要求,因为会使第2号选手重复拿到1号作品。
小明依据上述方法设计了VB程序,功能如下:在文本框Text1和Text2分别输入参赛人数和每人打分的作品数量,单击“分配”按钮Command1,在列表框List1中输出结果。程序运行效果如图b所示。

请回答下列问题:
(1)n=5,m=3,a(1)~a(10)中的数据如图a所示,a(11)~a(15)的数据可能是            (单选,填字母:A.5 4 3 1 2/B.5 4 1 3 2/C.3 4 5 1 2)
(2)请在划线处填入合适的代码。

Dim n As Integer     '总人数/总作品数

Dim m As Integer     '每人分配篇数

Dim a(1 To 500) As Integer   '数组a大小满足处理要求

Dim c(1 To 100) As Integer   '数组c大小满足处理要求

Private Sub Command1_Click()

       Dim i As Integer, j As Integer, k As Integer

       n = Val(Text1.Text): m = Val(Text2.Text)

       Randomize

       i = 1

       Do While i <= m

          For j = 1 To n

             c(j) = 0       '本轮分配方案中还没有数字j, c(j)=0,否则c(j)=1

          Next j

          For j = 1 To n

                 If j = n - 1 And c(n) = 0 Then

                                  

                 Else

                      k = r(n, j)

                 End If

                 a((i - 1) * n + j) = k       '分配数字k到当前方案的第j个位置上

                 c(k) = 1

          Next j

                    If                  Then i = i + 1       

       Loop

       s = ""

       For i = 1 To n

             s = "参赛者" & i & ":"

             For j = 1 To m

                    s = s + Str(a((j - 1) * n + i))+ ","

             Next j

             List1.AddItem s

             s = ""

       Next i

End Sub

Function r(x As Integer, y As Integer) As Integer   

'生成一个取值在[1,x]之间,可以放在y位置上的随机数,满足条件r<>y andc(r)=0

End Function

Function check(c As Integer) As Boolean     

'本轮方案和前面几次的分配方案比较,如果有人分到了重复作品,返回FALSE

   Dim p As Integer,f As Boolean

   f = True

   p = 1

   For i = 1 To c * n

             If                  Then
                  f = False: Exit For
             End If
              p = p mod n +1
        Next i
        check = f

End Function

舟山城市规模较小,人口流动量不大,通常两个完全不认识的陌生人通过2~3个亲戚或朋友的牵线搭桥就可以建立联系。王老师建立了一种人际关系矩阵来模拟这种现象,如有甲,乙,丙,丁,戊,己6人,相互之间认识,在矩阵中用1表示;相互之间不认识,在矩阵中用0表示;对于自身,用0表示,即矩阵左上角到右下角的对角线全为0。如表所示,当前甲和戊不认识,只需通过一人(乙或丁)牵线即可建立联系。
011100
101011
110100
101011
010100
010100

王老师设计了一个用来求两个陌生人建立联系所需最少介绍人的VB程序,程序运行时,点击“生成矩阵”按钮Command1,随机产生一个关系矩阵,并在列表框List1中显示。在文本框Text1和Text2中输入两个陌生人的编号,点击“建立联系”按钮Command2,在Labell中输出需要介绍人的最少个数。VB程序运行界面如图所示。
                                                    
对陌生人pl和p2建立联系的方法:
①pl所在行开始,将其认识的人依次添加到联系人数组b中。
②若数组b中未出现p2,依次搜索下一位联系人所在行,将新出现的认识人添加到联系人数组b中。
③在搜索过程中同时记录搜索步数,数组b内全部搜索完毕,若p2还是未出现,则视为无法建立联系,反之输出介绍人的个数。
程序代码如下:
Const n=8
Dim a(1 To n*n) As Integer
Private Sub Command1_Click()

Dim s As String

List1.Clear

For i=1 To n

For j=i To n

If j=i Then

a((i-1)*n+j)=0

Else

a((i-1)*n+j) = Int(Rnd * 2)

__________

End If

Next j

Next i

For i=1 To n

s=""

For j=1 To n

s=s+Str(((i-1)*n+j))

Next j

List1.AddItem s

Next i


End Sub
Private Sub Command2_Click()

Dim b(1To n)       As Integer

Dim ren(1To n)   As Integer          '记录建立联系的步数

Dim find(1To n)     As Boolean        '记录某人是否被添加到联系人数组中

Dim p1 As Integer,p2 As Integer,cur As Integer,k As Integer,

q As Integer

p1=Val(Text1.xt)

p2=Val(Text2.Text)

cur=p1:k=1:q=0

find(cur)=True

Do While find(p)=False

For i=1 To n

If a( (cur-1)*n+i)=1 And find(i)=False Then

b(k)=i:k=k+1

find(i)=True

_____________

End If

Next i

q=q+1

If q=k Then Exit Do Else_______________

Loop

If find(p2)=True Then

Label1.Caption="需要"+Str(ren(p2)-1)+"个介绍人"

Else

Label1.Caption="无法建立联系"

End If


End Sub
请回答以下问题:
(1)如图所示的人际关系,要建立2号和5号之间的联系需要的介绍人数最少为_____
(2)请在划线处填入合适的代码。
病毒疫苗抗体检测。使用字符串序列表示志愿者注射疫苗后细胞的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

组卷网是一个信息分享及获取的平台,不能确保所有知识产权权属清晰,如您发现相关试题侵犯您的合法权益,请联系组卷网