相关试卷

  • 1、(贪心算法)最大整数问题:设有n个随机生成的正整数,将它们连接成一排,组成一个最大的多位整数。其求解思想是:先把整数转换成字符串,然后再比较ab和ba,如果ab≥ba,就把a排在b的前面,反之则把a排在b的后面。例如:n=3时,3个整数13,312,343,连成的最大整数为34331213。

    小王同学编写了一个VB程序,功能如下:在列表框List1中随机生成n个1~1000之间的整数,单击“运行”按钮Command1后进行处理,最大整数结果输出在文本框Text1中。当n=5时,程序运行界面如图所示。

    实现上述功能的VB程序如下,请回答下列问题:

    (1)、要将按钮Command1的高度修改为800,以下赋值语句正确的是(单选,填字母:A .Command1_Height=800/B .Command1.Height=800/C .Height=800)。
    (2)、当n=3时,生成3个数:618,681,68,由这三个数组成的最大整数为
    (3)、请在画线处填入合适的代码。

    Const n=5

    Dim a(1 To 10)As Integer

    Private Sub Command1_Click( )

      Dim i, j, t As Integer

      For i=1 Ton-1

          For j=n To i+1 Step-1

              If    ①   Then

                  t=a(j-1):a(j-1)=a(j):a(j)=t

              End If

          Next j

      Next i

      For i=1 To n

          Text2. Text=Text2. Text+Str(a(i))

    Next i

    End Sub

    Private Sub Form_Load( )

      Randomize

      For i=1 To n

        a(i)=   ②   

        Text1. Text=Text1. Text +Str(a(i))

      Next i

    End Sub

    Function cmp(a As Integer,b As Integer) As Boolean

      If Str(a)+Str(b)<Str(b)+Str(a) Then

        cmp=True

      Else

        cmp=False

      End If

    End Function

    以上程序段运行时,为了实现上述功能,画线处应填入的代码分别为:①;②

  • 2、对给定的若干种互不相同的钱币面值,编程计算最少需要多少张钱币才能凑成某个给定的钱数。给定的7种钱币面值分别为1,2,5,10,20,50,100,则凑成金额94元,需要50元一张,20元两张,2元两张,共5张纸币时,张数最少。

    程序界面如图所示。

    实现上述功能的VB程序如下,请在画线处填入合适的代码。

    Dim a(1 To 7)As Integer

    Dim b(1 To 7)As Integer

    Private Sub Form_Load( )

      List1.AddItem "面值    张数"

      ‘在数组a中从小到大存储7种钱币面值的整数值

    End Sub

    Private Sub Command1_Click( )

      Dim n, num, k As Integer

      n=Val(Text1.Text)

      k=7

      Do While n>0

        If n>=a(k)Then

             ①   

          b(k)=b(k)+1

        Else

             ②   

        End If

      Loop

      For i=1 To 7

        If b(i)<>0 Then

            num=num+b(i)

            List1.AddItem Str(a(i))+"   "+Str(b(i))

        End If

      Next i

      List1.Addltem"最少"+Str(num)+"  张"

    End Sub

    以上程序段运行时,为了实现上述功能,画线处应填入的代码分别为:①;②

  • 3、某数据存储算法如下:使用长度为n的一维数组h来存储m个不同的整数型数据(m<n),数据的存储位置t根据存储数据的值除n取余计算得到。例如使用长度为11的数组来存储67,45,1275,119,145,269,64,共7个数据,先存储第1个数据67,67 Mod 11=1,在第1个位置上目前没有数据,故存放在第1个位置上。第2个数据为45,45 Mod 11=1,而在第1个位置上已存有数据,那么查找下一位置有没有数据,现第2个位置上没有数据,故存放在第2个位置。在查找空位时,如果到了数组最后一个位置还没有空位,则从头继续查找,以此类推。举例数据存储结果如下表所示。

    位置

    0

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    数据

    64

    67

    45

    145

    269

    119

    1275

    (1)、若按上述规则,再存储一个数据79,则应存储在第个位置。
    (2)、当n=97时,实现上述数据存储及相应数据查找的VB程序如下,运行结果如图所示,请在画线处填入合适的代码。

    Const n=97

    Dim d(0 To 96)As Integer,h(0 To 96)As Integer

    Dim m As Integer     ‘变量m为数据个数

    Private Sub Command1_Click( )      ‘数据存储

      Dim i As Integer, t As Integer

      ‘从数据库读取数据并先存储在数组d中,代码略

      List1.Clear

      For i=0 To n-1

          h(i)=-1          ‘数组元素初始化

      Next i

      For i=0 To m

             ①   

          Do While h(t)<>-1

              t=(t+1)Mod n

          Loop

          h(t)=d(i)

      Next i

      For i=0 To n-1

          List1. AddItem Str(i)&""& Str(h(i))

      Next i

    End Sub

    Private Sub Command2_Click( )    ‘数据查找

      Dim x As Integer, y As Integer

      x=Val(Text1.Text)

      y=x Mod n

      x=1

      Do While   ②   

          z=z+1

          y=(y+1)Mod n

      Loop

      If h(y)=x Then

          Label2.Caption= "共查找了 "&Str(z)&"次,在第"&Str(y)&"个位置找到"

      Else

          Label2.Caption="共查找了" &Str(z)&"次,没有找到"

      End If

    End Sub

    以上程序段运行时,为了实现上述功能,画线处应填入的代码分别为:①;②

    (3)、将数组h中的元素值初始化为一1表示的含义是
  • 4、(约瑟夫问题)n个人围成一圈,从第1个人开始从1报数,数到3的人出圈;再由下一个人继续从1开始报数,数到3的人出圈……输出依次出圈的人的编号和最后一个留在圈里的人的编号。如输入n=8,则依次出圈的人的编号是3,6,1,5,2,8,4,最后留在圈内的是7号。

    以下VB程序在a数组中保存了下一个要报数的人的编号,即若。(w)=p,则表示当第w个人报过数2后,下一个要报数的是第p号。程序在列表框Listl中输出了依次出圈的人的编号,在标签Label1中输出了最后剩下的人的编号。请完善程序。

    Private Sub Command1_Click( )

      Dim i As Integer, n As Integer, w As Integer, num As Integer

      Dim a(1 To 100)As Integer, t As Integer

      n=Val(Text1.Text)

      For i=1 To n-1

          a(i)=i+1

      Next i

      a(n)=1

      w=n        ‘变量w表示当前检查的是第w号数组元素,即从第n号开始检查

      t=0       ‘变量t用以模拟报数

      Do While   ①   

          num=a(w)    ‘当前报数的人的编号

          t=t+1

          If t=3 Then

              List1.AddItem Str(num)

            a(w)=   ②   

            t=0

          Else

                 ③   

          End If

      Loop

          Label1.Caption=Str(w)

    End Sub

    以上程序段运行时,为了实现上述功能,画线处应填入的代码分别为:①;②;③

  • 5、平面上有n(3≤n≤100)个房间围成一圈,编号分别为1~n,相邻的两个房间之间均有一扇门,第i个房间最多居住的人数为a(i)。初始时选择一个房间,将所有人都聚集在该房间,接着每个人都可以按顺时针方向走到相邻的房间,直到找到居住的房间。最后各个房间刚好都住满。一个人每经过一扇门花费1个单位的能量,请确定初始房间及每个人找房间的方案,使得所有人花费的能量的和最小。例如:n=5,a(1)=4,a(2)=7,a(3)=8,a(4)=6,a(5)=4。

    最佳方案为初始时所有人聚集在2号房间,此时花费的最小能量为7×0+8×1+6×2+4×3+4×4=48。

    实现上述功能的VB代码如下,但加框处代码有误,请改正。

    Dim a(1 To 100)As Integer       ‘依次存储编号为1到100的房间的最多居住人数

    Private Sub Form_Load( )

        ‘产生n的值

        ‘本过程从数据库中依次读取编号为1到n的房间的最多居住人数,并存储在数组a中

        ‘代码略

    End Sub

    Private Sub Command1_Click( )

      Dim i As Integer,j As Integer,w As Integer

      Dim t As Long,ans As Long

      ans=32767

      For i=1To n

        t=0

        For j=0 To n-1

                          ‘①

          If w=0 Then w=n

                        ‘②

        Next j

        If t<ans Then ans=t

      Next i

      Text2.Text=Str(ans)

    End Sub

    以上程序段运行时,为了实现上述功能,加框处代码应改正为:①;②

  • 6、一个n×n矩阵的主对角线(从左上到右下的对角线)上各个元素的总和称为这个矩阵的迹。一个矩阵转置后,新矩阵的迹和原矩阵的相等。

    以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

    以上程序段运行时,为了实现上述功能,画线处应填入的代码分别为:①;②;③

  • 7、生成之形矩阵:在文本框中输入之形矩阵的行数n(3≤n≤10),点击“生成”按钮Command1后,在List1中显示结果,程序运行界面如图所示。

    实现程序的代码如下,但加框处代码有误,请改正。

    Private Sub Command1_Click( )

      Dim n,t As Integer,s As String

      n=Val(Text1.Text)

      For i=1 To n

          s=""

          If       Then     ‘①

            For j=1 To n

                t=t+1

                s=s+ads(t)

            Next j

          Else

            For j=1 To n-i

                s=s+"  "

            Next j

            t=t+1

                  ‘②

          End If

          List1.AddItem s

      Next i

    End Sub

    Function ads(n As Integer)As String

      Dim a As Integer

      a=Len(CStr(n))    ‘函数CStr( )和Str( )功能类似,但输出字符时没有前导空格

      If a=1 Then

          ads="0"+CStr(n)

      Else

          ads=CStr(n)

      End If

    End Function

    以上程序段运行时,为了实现上述功能,加框处代码应改正为:①;②

  • 8、蛇形矩阵是由1开始的自然数依次排列成的一个矩阵三角形。小强编写了一个输出n行蛇形矩阵的理序,其功能为在文本框Text1中输入数值n作为蛇形矩阵的行数,点击“输出”按钮Command1后,在List1中显示n行蛇形矩阵,程序界面如图所示。

    实现上述功能的VB程序如下,但加框处代码有误,请改正。

    Private Sub Command1_Click( )

      Dim n,a,b As Integer

      Dims As String

      n=Val(Text1.Text)

      For i=1 To n

        s=""

        For j=i To n

                ‘①

          s=s+Str(a)

        Next j

              ‘②

        a=b

        List1.AddItems

      Next i

    End Sub

    以上程序段运行时,为了实现上述功能,加框处代码应改正为:①;②

  • 9、高精度除法常用于计算两个数位较大的数之间的除法运算,设被除数为s1,除数为s2,保存在字符串中。除法的基本思想是反复做减法,s1能够被s2减多少次,商就是多少。但是这样做显然比较慢。如下算法做了部分优化,以48695除以324为例:

    ①将324扩大100倍,32400只能被48695减去1次,则百位上的商是1;

    ②将324扩大10倍,3240能被前一次余的16295减去5次,则十位上的商就是5;

    ③对于324,不能被最后剩余的95减去,则个位上的商为0。所以最后的商的整数部分为150。

    程序运行界面如图所示。

    (1)、根据该算法计算5731423除以23345,十位上的商是
    (2)、阅读以下程序,在画线处填入合适的代码。

    Dim s1, s2, s3, s, ans As String

    Dim tot As Integer, t As Integer

    Private Sub Command1_Click( )

      Dim a, b, i, j, length As Integer

      s1=Text1.Text:s2=Text2.Text:s3=""

      Length=Len(s1)-Len(s2)

      For i=1 To length

          s2=s2+"0"

      Next i

      For i=0 To length

          s=Mid(s2, 1, Len(s2)-1):tot=0

          Do While   ①   or(Len(s1)=Len(s)And s1>=s)

              tot=tot+1

              ans="":flag=False

              a=Len(s1):b=Len(s)

              For j=a To 1 Step-1

                  t=0

                  If flag Then

                    t=-1:flag=False

                  End If

              If b>0 Then

                  t=t+Val(Mid(s1, j, 1))-Val(Mid(s, b, 1))

              Else

                  t=    ②   

              End If

              If t<0 Then

                     ③  

                  flag=True

              End If

              ans=t&ans:b=b-1

            Next j

            s1=Val(ans)

        Loop

        s3=s3&tot

      Next i

      i=1

      Do While Mid(s3,i,1)="0"

            i=i+1

      Loop

      Text3.Text=Mid(s3,i,Len(s3))

    End Sub

    以上程序段运行时,为了实现上述功能,画线处应填入的代码分别为:①;②;③

  • 10、正整数n的阶乘,在数学上定义为:n!=1×2×3×…×n,如3!=1×2×3,现在输入一个正整数n(n≤30),计算出1~n中的每一个整数的阶乘的精确结果。小北按照上述要求,设计了一个求前n个正整数的阶乘问题的VB程序具有下述功能。在程序中,他采用加法代替乘法的方法来计算阶乘,如:3!=2!×3=2!+2!+2!。程序启动后在文本框Text1中输入n的值,单击“计算”按钮Command1后,在列表框List1中输出前n个数的阶乘,当n=10时,程序运行界面如图所示。

    实现上述功能的VB程序如下,请在画线处填入合适的代码。

    Const maxn=80

    Dim i, j, k, n, r As Integer

    Dim a(1 To maxn)As Integer, b(1 To maxn)As Integer

    Dims As String

    Private Sub Form_Load( )

        List1.Clear

        For i=1 To maxn

            a(i)=0

        Next i

    End Sub

    Sub array_sum(j As Integer)    ‘该过程用于计算j!,并将j!的精确值按位保存在数组a中

      For k=1 To j-1

        For i=1 To maxn

            r=    ①   

            If r>=10 Then    ②   =a(i+1)+1

            a(i)=r Mod 10

        Next i

      Next k

    End Sub

    Private Sub Command1_Click( )

      n=Val(Text1.Text)

      a(1)=1

      List1.AddItem"1!="&.Str(a(1))

      For j=2 To n

        For i=1 To maxn

            b(i)=a(i)

        Next i

        s=""

        Call array_sum(j)      ‘该语句用于调用自定义过程

        s=s+Str(j)+"!="

        k=maxn

        Do While a(k)=0

               ③  

        Loop

        For i=k To 1 Step-1

            s=s+Str(a(i))

        Next i

        List1.Addltem s

      Next j

    End Sub

    以上程序段运行时,为了实现上述功能,画线处应填入的代码分别为:①;②;③

  • 11、编写“二进制加法”程序,实现如下功能:在文本框Text1和Text2中分别输入两个二进制数,单击“计算”按钮Command1,程序在位数较少的二进制数前补“0”,使两个二进制数位数相同,然后从右向左按位依次进行加法运算,最后在文本框Text3中显示相加的结果。程序运行界面如图所示。

    (1)、在设计程序界面时,要设置窗体的标题为“二进制加法”,应修改窗体的属性。
    (2)、实现上述功能的VB程序如下,请在画线处填入合适的代码。

    Private Sub Command1_Click( )

      Dim s1, s2, result, t As String

      Dim span, jw As Integer

      s1=Text1. Text:s2=Text2. Text

      span=Len(s1)-Len(s2)

      If span<0 Then

        t=s1:s1=s2:s2=t

        span=   ①  

      End If

      For i=1 To span

        s2="0"+s2

      Next i

      jw=0:result="  "

      For i=   ②   To 1 Step-1

        x=Val(Mid(s1, I, 1))+Val(Mid(s2,i,1))+jw

        jw=x\2

        result=Str(x Mod 2)+result

      Next i

      If jw=1 Then result="1"+result

      Text3. Text=result

    End Sub

    (3)、在文本框Text1中输入“10”,在文本框Text2中输入“11000”,单击“计算”按钮Command1后,变量b2的值是
  • 12、哥德巴赫(Goldbach)的“1+1猜想”是每个偶数都能写成两个素数之和;华林(Waring)的“1+1+1猜想”是每个不是素数的奇数,都能写成三个素数之和。这两个猜想虽然至今未被证明,但是也未曾发现反例。

    现在我们来验证一个简单点的“1+1+1+1猜想”;在Text1中输入整数,单击“验证”按键Command1后,把此整数分解成任意四个素数之和的形式,并在List2中输出这四个素数。已知1≤n≤1000000。程序运行时,先求出1000000以内的所有素数,并输出到List1中。运行界面如图所示。

    ⑴在事件处理过程Form_Load( )中,用筛选法筛出了1~n范围内的所有素数,放置在数组p中。筛选算法是:从2开始,第一个未被筛掉的是2,2是素数,那么把2×2,2×3…,即所有2的倍数都筛掉,下一个未被筛掉的数是3,再把所有3的倍数筛掉……若下一个未被筛掉的是i,那么要把i×i,i×(i+1),i×(i+2)…筛掉,请把画线①、②处的代码补充完整。

    ⑵有了1~n范围内的素数表后,我们可以用枚举算法验证素数表中的四个数pa , pb , Pc , Pd。是否满足pa+pb+Pc+Pd=n。但是,范围过大,无法承受这么大的枚举量。因此我们考虑如何用哥德巴赫猜想来优化。显然n<8时是无解的,只需考虑n≥8时的情况。因为分解是任意的,那就用前两个素数2或3去分解n,余下部分用哥德巴赫的“1+1猜想”去验证即可。请把画线③、④处的代码补充完整。

    Const maxn As Long=1000000    ‘这里最多验证一百万以内的“1+1+1+1猜想”

    Dim p(maxn)As Boolean     ‘p存放maxn以内的素数,p(i)=True表示i是素数

    Private Sub Form_Load( )

        Dim i As Long, j As Long, cnt As Long

        For i=0 To maxn

          p(i)=True

        Next i

        p(0)=False:p(1)=False

        ‘筛选法求素数表,对于maxn个数,最后一次只要筛去 的所有倍数即可

        For i=2 To Int(Sqr(maxn))

            If p(i)Then

                For j=i To    ①   

                    p(   ②   )=False

                Next j

            End If

         Next i

         cnt=0

         For i=1 To maxn

            If p(i)Then

                 List1.Addltem Str(i):cnt=cnt+1

          End If

        Next i

      Label1.Caption=maxn & "内的素数,共"& cnt & "个"

    End Sub

    Private Sub Command1_Click( )

      Dim n As Long, i As Long

      n=Val(Text1.Text):List2.Clear

      If n<8 Then

        List2.AddItem"Impossible":Exit Sub

      Else If   ③   Then     ‘先用两个2去分解n

        List2.Addltem"2"

        List2.Addltem"2"

        n=n-4

      Else

        List2.AddItem "2"    ‘用2和3去分解n

        List2.AddItem "3"

        n=n-5

      End If

      For i=2 To n   ‘余下部分用哥德巴赫的“1+1猜想”来验证

          If     ④     Then

            List2.AddItem Str(i)

            List2.Addltem Str(n-i)

            Exit For

          End If

      Next i

    End Sub

    以上程序段运行时,为了实现上述功能,画线处应填入的代码分别为:①;②;③;④

  • 13、任意一个大于或等于4的偶数,都可以用两个素数之和表示,这就是哥德巴赫猜想。如:4=2+2,6=3+3,8=3+5,12=5+7,98=19+79。

    编写一个验证哥德巴赫猜想的VB程序,程序运行时,在文本框Text1中输入一个大于或等于4的偶数,单击“验证”按键Command1后,如果猜想验证成功,则在文本框Text2中显示“Yes”,并在列表框List1中显示用两个素数表示该偶数的等式;否则显示“No”。程序运行界面如图所示。

    实现上述功能的VB代码如下,但加框处代码有误,请改正。

    Function judge(x As Integer) As Boolean

      Dim j As Integer

      judge=True

      j=2

        Do While j<=x-1 And judge=True

            If x Mod j=0 Then

                judge=False

            Else

                j=j+1

            End If

        Loop

    End Function

    Private Sub Command1_Click()

      Dim n As Integer, p As Integer

      Dim q As Integer, flag As Boolean

      n=Val(Text1. Text)

      p=1

      flag=False

      Do While  And p<n           ‘①

        p=p+1

                                    ‘②

        If judge(p) And judge(q) Then

            Text2. Text="Yes"

            flag=True

            List1. Addltem Str(n)+"="+Str(p)+"+"+Str(q)

        End If

      Loop

      If flag=False Then

        Text2.Text="No"

      End If

    End Sub

    以上程序段运行时,为了实现上述功能,加框处代码应改正为:①;②

  • 14、如果两个质数的差为2,则这两个质数称为李生质数对。编写VB程序,实现如下功能:单击“显示孪生质数对”按钮Command1,在列表框List1中显示100以内的所有孪生质数对。如图所示。

    实现上述功能的VB代码如下,但加框处代码有误,请改正。

    Dim a(1 To 50)As Integer

    Private Sub Command1_Click( )

      Dim i As Integer

      k=0:i=3

      Do While i<=100

          If  Then     ‘①

              k=k+1

              a(k)=i

          End If

          i=i+2

      Loop

      For i=2 To k

          If   Then     ‘②

              List1.Addltem Str(a(i-1))+ "和"+Str(a(i))

          End If

      Next i

    End Sub

    Function prime(x As Integer) As Boolean

      prime=False

      For i=2 To Int(Sqr(x))

        If x Mod i=0 Then

          prime=True

          Exit For

        End If

      Next i

    End Function

    以上程序段运行时,为了实现上述功能,加框处代码应改正为:①;②

  • 15、在计算机系统中,数值一律用补码表示和存储(补码的计算方法:正整数的补码用其二进制数表示,负整数的补码是将其对应的正整数二进制数的所有位取反后加1)。小明为了更好地了解数值在计算机中是以什么形式传输的,编写了如下VB程序段。在文本框Text1中输入一个整数(-128至127之间的整数),单击“计算”按钮,在文本框Text2中输出对应的补码。程序运行界面如图所示。

    实现上述功能的VB程序如下。

    Private Sub Command1_Click( )

        Dim n As Integer, i As Integer

        Dim b(1 To 8) As Integer

        Dims As String

        s="":n=Val(Text1. Text)

        If n>=0 Then

            For i=1 To 8

                b(i)=n Mod 2:n=n\2

            Next i

        Else

            n=Abs(n)

            For i=1 To 8

                b(i)=(n+1) Mod 2:n=n\2

            Next i

            b(1)=b(1)+1

            i=1

            Do While b(i)=2

                b(i)=0

                i=i+1

                __________

            Loop

        End If

        For i=8 To 1 Step-1

            s=

        Next i

        Text2. Text=s

    End Sub

    (1)、观察运行界面,程序至少使用了类控件。
    (2)、根据程序规定的算法,-20的补码是
    (3)、请将程序代码中的画线处语句补充完整。
    (4)、程序代码中,加框处赋值语句有误,请改正。
  • 16、来种编码以4位二进制码为一组,每组前两位表示方向,后两位表示距离。编写一个程序,将编码翻译成方向和距离,距离值为每组编码后两位二进制数转换为十进制数的值。具体功能如下:在文本框Text1中连续输入多组编码,单击“翻译”按钮Command1,结果显示在列表框List1中。程序运行界面如图所示。

    (1)、要使程序运行时,文本框Text1的Width属性值为2018,可在Form_Load事件过程中添加语句(单选,填字母:A .Width=2018/B .Text1.Width=2018/C .Width.Textl=2018)。
    (2)、实现上述功能的VB程序如下,请在画线处填入合适的代码。

    Private Sub Command1_Click( )

    Dims As String, c As String,d As String

    Dim n As Integer, b1 As Integer, b2 As Integer, v As Integer, i As Integer

    s=Text1.Text:n=Len(s):i=1

    Do While i<=n

        c=Mid(s,i,2)

        If c="00"Then

          d="东"

        ElseIfc="01"Then

          d=“南"

        ElseIf c="10" Then

          d="西(vi)"

        Else

          d="北"

        End If

        b1=Val(Mid(s, i+2, 1))

        b2=Val(Mid(s ,i+3, 1))

        v=   ①  

        List1.AddItemd+""+Str(v)

           ②  

    Loop

    End Sub

     ② 

    (3)、若文本框Text1中输入的内容为“1111”,单击“翻译”按钮,列表框List1中显示的内容是
  • 17、奇偶校验是一种校验数据传输正确性的方法。其中奇校验方法:统计二进制数据的数位中“1”的个数,若个数为奇数,则校验位值为0,否则校验位值为1。小李编写了一个计算奇校验位值的VB程序,功能如下:在文本框Tex1中输入十进制下1~255间的待校验数,单击“计算”按钮Commana1 后,在文本框Text2中显示该数对应的二进制值,并在标签Label3中显示该数的校验位值。程序运行界面如图所示。

    (1)、在设计程序界面时,要清空文本框中的显示内容,应修改该文本框中的属性。
    (2)、实现上述功能的VB程序如下,请在画线处填入合适的代码。

    Private Sub Command1_Click( )

      Dim a As Integer,s As String

      Dim n As Integer,t As Integer,v As Integer

      n=Val(Text1.Text)

      t=0

      s=""

      Do While n>0

        a=n Mod 2

        n=n\2

        t=   ①  

        s=Str(a)+s

      Loop

      v=t Mod 2

      Text2.Text=s

      Label3.Caption="校验位值:"+   ②  

    End Sub

    以上程序段运行时,为了实现上述功能,画线处应填入的代码分别为:①;②

    (3)、运行该程序,在文本框Text1中输入2,单击“计算”按钮,则显示的校验位值是
  • 18、将数组a中各元素均初始化为0,执行以下程序:

    i=0

    Do While i<n

        i=i+1:j=1:a(j)=a(j)+1

        Do While a(j)=5

            a(j)=0

            j=j+1

            a(j)=a(j)+1

        Loop

    Loop

    当n=98时,程序结束后数组a中各元素相加的和为(  )

    A、3 B、6 C、10 D、14
  • 19、有如下VB程序段(数组a中各元素的初始值均为0):

    n=Len(Text1.Text):c=1

    For i=1 To n

        s=Mid(Text1.Text,i,1)

        If s>="0"And s<="1"Then

            a(c)=a(c)*2+Val(s)

        Else

            If a(c)>0 Then c=c+1

        End If

    Next i

    在文本框Text1中输入“A:1010 C:1100 E:1110”。执行该程序后,数组a(2)中的元素值为(  )

    A、2 B、12 C、22 D、2200
  • 20、某校秋季运动会共有n名运动员参赛,小明编写了根据号码牌查询学生信息的程序,输入号码牌就能查询该号码牌所属的班级和选手姓名。数组a,b,c分别保存了本次运动会所有选手的号码牌、班级、姓名信息。第i个选手的号码牌保存在a(i)中,对应的班级和姓名保存在b(i)和c(i)中。程序界面如图所示,在文本框Text1中输入号码牌,单击“查询”按钮(Command1),如果找到对应的信息,就显示所属班级和选手姓名;如果没有找到,则显示“未找到”。

    (1)、分析程序,可知数据库的文件名为 , 当前数据表的名称为
    (2)、填入适当的代码,把程序补充完整。

    Dim n As Integer     ‘用于存储运动员总人数

    Dim a(1000)As Integer, b(1000)As String, c(1000)As String

    Private Sub Form_Load( )

      Dim conn As New ADODB. Connection

      Dim rs As New ADODB. Recordset

      conn. ConnectionString ="Provider =Microsoft. Jet. OLEDB. 4.0;DATA Source=" &App. Path & "\sport.accdb"

        conn.Open

        Set rs. ActiveConnection=conn

        rs.Open"Select*from号码牌"

        Do While Not rs. EOF  ‘到记录集rs的最后一条记录后退出循环

          n=n+1

          a(n)=rs. Fields("号码牌")    ‘读取当前记录“号码牌”字段值

          b(n)=     ①                ‘读取当前记录“班级”字段值

          c(n)=rs. Fields("姓名")      ‘读取当前记录“姓名”字段值

              ②                        ‘移动到下一条记录

        Loop

    ‘号码牌按升序排序后,显示在列表框List1中,其他代码略

    End Sub

    Private Sub Command1_Click( )

        Dim x As Integer

        x=Val(Text1.Text)

        pos=        ③         

        If pos>0 Then

          Text2.Text=b(pos):Text3.Text=c(pos)

        Else

          Text2.Text="未找到"

        End If

    End Sub

      Function Search(Key As Integer)As Integer

        Dim i As Integer,j As Integer

        i=1:j=n:Search=0

        Do While i<=j

            m=Fix((i+j)/2)

            If Key=a(m)Then

                Search=m:Exit Function

            ElseIf   ④   Then

                j=m-1

            Else

                i=m+1

            End If

        Loop

    End Function

    以上程序段运行时,为了实现上述功能,画线处应填入的代码分别为:①;②;③;④

上一页 1068 1069 1070 1071 1072 下一页 跳转