题目

病毒疫苗抗体检测。使用字符串序列表示志愿者注射疫苗后细胞的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 答案:【1】i【2】Pnum(i) > Pnum(j) 或 Pnum(j) < Pnum(i)【3】Mid(RVch, j, s) 或 Mid(Ach + Ach, j, s) 或 Mid(Ach & Ach, j, s)或 Mid(Ach,j,s-j+1) + Mid(Ach,1,j-1)【4】str1 = Mid(str2, i, Len(str1))
信息技术 试题推荐
最近更新