相关试卷

  • 1、某排序算法的VB程序段如下:

    For i=1 To 2

      For j=2 To7-i

        If a(j-1)>a(j)Then

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

        End If

      Next j

    Next i

    若数组元素a(1)到a(6)的值依次为“8,2,9,3,5,1”,则经过该程序段“加工”后,数组元素a(1)到a(6)的值依次为(  )

    A、2,8,3,5,1,9 B、2,3,5,1,8,9 C、2,3,1,5,8,9 D、2,1,3,5,8,9
  • 2、有10个数据:56,45,43,34,26,76,90,13,15,21依次存放在数组a(1)到a(10)中,部分VB程序段如下所示:

    n=Val(Text1.Text)

    ans=0

    For i=1 To n-1

      For k=n To i+1 Step-1

          If a(k)>a(k-1)Then

              tmp=a(k):a(k)=a(k-1):a(k-1)=tmp

              ans=ans+1

          End If

      Next k

    Next i

    Text2.Text=Str(ans)

    在文本框Text1中输入“8”,则在文本框Text2中输出的值是(  )

    A、2 B、11 C、4 D、-77
  • 3、有如下VB程序段:

    s="  "

    For i=1 To 3

        For j=1 To 8-i

          If a(j)<a(j+1)Then

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

          End If

        Next j

        s=Str(a(i))+s

    Next i

    若数组元素a(1)到a(6)的值依次为“32,48,24,76,38,17,64,52”,则经过该程序段“加工”后,s的值为(  )

    A、38,76,48 B、48,76,38 C、17,24,32 D、76,64,52
  • 4、有如下VB程序段:

    For i=1 To 2

      j=1

      Do While j<6-i

          If a(j)<a(j+1)Then

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

          End If

      Loop

    Next i

    若数组元素a(1)到a(6)的值依次为“71,54,58,29,31,78”,则经过该程序段“加工”后,数组元素a(1)到a(6)的值依次为(  )

    A、29,31,54,58,71,78 B、78,71,58,54,31,29 C、54,29,31,58,71,78 D、71,58,54,78,31,29
  • 5、小明对教材上的冒泡算法进行优化,当数据已经有序时就停止加工,为此他编写了一个VB程序,功能如下:运行程序时,在列表框List1中显示排序前的数据,单击“排序”按钮Command1,在列表框List2中显示这些数据按升序排序后的结果,在标签Label1中显示排序过程的加工遍数,在标签Label2中显示排序过程的数据交换次数。运行效果如图所示。

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

    Const n=10

    Dim a(1 To n)As Integer

    Private Sub Form_Load( )

    ‘排序前的数据存储在数组a中,并在List1中显示,代码略

    End Sub

    Private Sub Command1_Click( )

      Dim flag As Boolean

      Dim x As Integer, y As Integer

      x=0:y=0

      flag=True:i=1

      Do While i<=n-1 And flag

        flag=False

        For j=n To i+1 Step-1

          If   Then    ‘①

              t=a(j)

              a(j)=a(j-1)

              a(j-1)=t

              flag=True

                   ‘②

          End If

      Next j

      y=y+1

            ‘③

    Loop

    Label1.Caption="经过"+Str(y)+"遍排序数据有序!"

    Label2.Caption="数据总共交换"+Str(x)+"次!"

    For i=1 To n

      List2.AddItem Str(a(i))

    Next i

    End Sub

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

  • 6、完成某排序算法的VB程序段如下:

    For i=1 To 7

      flag=False

      For j=8 To i+1 Step-1

        If a(j)<a(j-1) Then

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

            flag=True

        End If

      Next j

      If Not flag Then Exit For

    Next i

    数组a(1)到a(8)存储的数据依次为“38,11,21,62,59,65,77,79”,如果用上述算法排序,程序执行后,变量i的值为(  )

    A、2 B、3 C、4 D、7
  • 7、通过排序算法对数组a中的5个数据“5,10,6,30,9”进行排序,部分VB程序如下:

    For i=1 To 4

        For j=5 To i+1 Step-1

            If a(j)<a(j-1)Then

                

            End If

        Next j

    Next i

    下列关于该排序的说法正确的是(  )

    A、升序排序,实线框中的语句共执行了2次 B、升序排序,实线框中的语句共执行了3次 C、降序排序,实线框中的语句共执行了5次 D、降序排序,实线框中的语句共执行了6次
  • 8、有如下VB程序段:

    For i=1 To 2

        For j=5 To i+1 Step-1

            If a(j)<a(j-1)Then

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

            End If

        Next j

    Next i

    若数组元素a(1)到a(5)的值依次为“95,88,66,80,75”,则经过该程序段“加工”后,数组元素a(1)到a(5)的值依次为(  )

    A、66,75,95,88,80 B、66,75,80,95,88 C、95,88,66,80,75 D、95,88,80,75,66
  • 9、对下列数据序列进行冒泡升序排序,排序效率最低的序列是(  )
    A、31,29,24,20,15,10 B、10,15,20,24,29,31 C、29,10,31,15,20,24 D、24,29,31,20,15,10
  • 10、某医院每天提前发放100个预约号。考虑到老年人身体,预约的病人按照以下规则进行就诊:

    ①老年人(年龄≥60岁)比非老年人优先就诊;

    ②老年人按年龄从大到小的顺序就诊,年龄相同的按预约顺序就诊;

    ③非老年人按预约顺序就诊。

    小王根据以上规则编写了一个VB程序,通过引入索引数组temp进行排序,使得age(temp(1))≥age(temp(2))≥age(temp(3))…≥age(temp(n))。如图a所示。

    图a

    图b

    程序运行时,病人的数据显示在列表框List1中,单击“就诊排序”按钮Command1,排序结果显示在列表框List2中,程序运行界面如图b所示。

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

    (1)、分析程序,可知程序中读取的数据库工作表名称为
    (2)、请在画线处填入合适的代码。

    Dim pname(1 To 100)As String           ‘存放病人姓名

    Dim age(1 To 100)As Integer             ‘存放病人年龄

    Dim num(1 To 100)As Integer            ‘存放病人序号

    Dim n As Integer

    Private Sub Command1_Click( )

      Dim temp1(1 To 100)As Integer, temp2(1 To 100)As Integer   ‘索引数组

      Dim i As Integer, j As Integer, k1 As Integer, k2 As Integer, t As Integer

      k1=0:k2=0

      For i=1 To n

          If age(i)<60 Then

          k1=k1+1

        temp1(k1)=num(i)

      Else

          k2=k2+1

          temp2(k2)=num(i)

        End If

    Next i

    For i=1 To k2-1

        For j=k2 To i+1 Step-1

          If   ①   Then

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

          End If

        Next j

    Next i

    List2.Clear

    List2.Addltem "就诊号  名单   年龄"

    For i=1 To k2

        List2.Addltem Str(i)&."  "&.pname(temp2(i))&"r/&.Str(age(temp2(i)))

    Next i

    For j=1 To k1

        List2.Addltem   ②   &"    "&pname(templ(j)&"   "&.Str(age(templ(j)))

    Next j

    End Sub

    Private Sub Form_Load( )

      Dim conn As New ADODB. Connection, rs As New ADODB. Recordset

      Conn.ConnectionString="Provider=Microsoft. ACE. OLEDB. 12.0;DataSource="&App. Path&"\pdxt.accdb"

      conn.Open

      Set rs. ActiveConnection=conn

      rs. Open"select*from jzmd"

      n=0

      List1.AddItem"预约号   名单   年龄"

      Do While Not rs. EOF

           ③   

        num(n)=n

        pname(n)=rs. Fields(1)

        age(n)=rs Fields(2)

        List1. Addltem Str(num(n))&"  "&-pname(n)&."  "&.Str(age(n))

        rs. MoveNext

      Loop

      rs.Close:conn.Close

    End Sub

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

  • 11、小王编写统计工厂中生产某种零件的工人数量的VB程序,运行程序后,从数据库中获取每个工人生产的零件数量,并存储在数组xs中:在文本框Text1中输入达标零件数da,单击“开始统计”按钮Command1,筛选数组xs中大于等于所输入零件数da的数据,并依次存储在数组bf中。最后统计数组bf中生产相同零件数量的人数,存储在数组tj后,将统计结果输出在列表框List1中,数组tj中各元素的含义如下表所示,程序运行界面如图所示。

    数组元素

    数组元素的含义

    tj(1)

    存储查找到第1个大于da的零件数

    tj(2)

    存储生产了tj(1)个零件的工人数量

    tj(2*i-1)

    存储查找到第i个大于da的零件数

    tj(2*i)

    存储生产了tj(i)个零件的工人数量

    例如:tj(1)=1948,tj(2)=12。这对数据的含义为:共有12个工人生产了1948个零件。

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

    (1)、根据程序运行界面的数据及数组tj中各元素的含义进行分析,数组元素tj(8)的值是(填数值)。
    (2)、请在画线处填入合适的代码。

    Private Sub Command1_Click( )

      Dim bf(1 To 1000)As Integer

      Dim maxn, d, k, sa As Integer

      Dim I, j, flag As Integer

      da=Val(Text1.Text):maxn=0:k=1

      For j=1 To n

        If xs(j)>=da Then maxn=maxn+1

        bf(maxn)=xs(j)

      Next j

      For i=1 To maxn

        flag=0

        For j=1 To i-1

            If bf(i)=bf(j) Then flag=1

        Next j

        If flag=0 Then

             ①   

          d=1

            For j=i+1 To maxn

              If bf(i)=bf(j) Then   ②   

            Next j

            tj(2*k)=d

            k=k+1

          End If

        Next i

        k=k-1

        For j=1 To   ③   

          List1. Addltem Str(tj(j))+"     "+Str(tj(j+1))

        Next j

    End Sub

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

  • 12、已知字符串型数组a(下标为1到2*n),在a(2*i-1)中保存了某班第i个同学的姓名,在a(2*i)中保存了第i个同学的技术成绩,并且a(2),a(4)…,a(2*n)是按成绩数值由大到小排列的,且各不相同,现按对分查找的方式查找成绩是key的同学的姓名,假设成绩是key的同学必定存在,部分VB程序如下:

    i=1:j=n:f=False

    Do While i<=j and Not f

        ___________

        If Val(a(m))=key Then

          Search=m:f=True

        Elself Val(a(m))>key Then

            i=m\2+1

        Else

            j=m\2-1

        End If

    Loop

    Text2.Text="成绩是"+Str(key)+"的同学叫:"+a(m-1)

    程序画线处应填入的代码为(  )

    A、m=Fix((i+j)/2) B、m=(2*i+2*j)/2 C、m=Fix(i+j)/2*2 D、m=(Fix(i+j)/2)*2
  • 13、有如下VB程序段:

    For i=1 To 10

        a(i)=Int(Rnd*90)+10

    Next i

    For i=1 To 9

        b(i)=Abs(a(i+1)-a(i))

        c(b(i)\10)=c(b(i)\10)+1

    Next i

    For i=0 To 9

        If c(i)>0 Then s=s+c(i)

    Next i

    Label1.Caption=Str(s)

    若数组c中各元素初值为0,s的初值也为0,执行该程序段后,标签Label1上显示的内容是(  )

    A、5 B、7 C、9 D、10
  • 14、某VB程序的部分代码如下:

    Dim a(1 To 9)As Integer

    Text 1.Text=""

    For i=1 To 9

        a(x(i))=a(x(i))+1

    Next i

    For i=1 To 9

        For j=1 To a(i)

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

        Next j

    Next i

    若数组x(1)到x(9)的值依次为“8,9,7,3,2,7,1,4,2”,则执行该程序段后,在文本框Text1中显示的是(  )

    A、1 2 3 4 7 8 9 B、1 2 2 3 4 7 7 8 9 C、9 8 7 4 3 2 1 D、9 8 7 7 4 3 2 2 1
  • 15、为分析数组a中各元素依次变化的情况,进行如下定义:

    ·变化段:数组中相邻两个元素构成一个变化段。变化段有上升段(a(i)>a(i-1))、下降段(a(i)<a(i-1))和持平段(a(i)=a(i-1))。数组a中的n个元素可构成n-1个依次排列的变化段。

    ·波峰:从上升段转到下降段形成一个波峰。波峰的起点是峰顶前所有连续上升段中的第1个。终点是峰顶后所有连续下降段中的最后1个。

    ·对称波峰:上升段与下降段个数相同的波峰称为对称波峰。

    图为一组数据的变化段及波峰示意图。

    现要求统计数组a中各元素依次变化过程中“对称波峰”的个数,小李依据上述描述设计了如下VB程序,请回答下列问题:

    (1)、数组元素“1,4,3,3,2,5,8,7,8,3,4,7,9,6,3,1”依次变化过程中,“对称波峰”的个数为
    (2)、请在画线处填入合适的代码。

    Const n=20

    Dim a(1 To n)As Integer

    Private Sub Form_Load( )

    ´读取数据,并存储到数组a中。代码略

    End Sub

      Dim flag As Integer     ‘存储变化段的状态:1表示升,-1表示降,0表示平。

      Dim count As Integer      ‘存储对称波峰的个数

      Dim steps As Integer

      Dim i As Integer

      flag=0:steps=0:count=0

      For i=   ①   To n

        If a(i)>a(i-1)Then

          If IsSymPeak(flag, steps)Then count=count+1

          If flag=0 Or flag=-1 Then

             ②   

          Else

            steps=steps+1

          End If

          flag=1

        ElseIf a(i)=a(i-1) Then

          If IsSymPeak(flag, steps) Then count=count+1

          steps=0:flag=0

        Else

          steps=steps-1

          flag=-1

        End If

      Next i

      If IsSymPeak(flag, steps) Then count=count+1

      Text1. Text=Str(count)

    End Sub

    Function IsSymPeak(flag As Integer, steps As Integer) As Boolean

      If   ③   Then

        IsSymPeak=True

      Else

        IsSymPeak=False

      End If

    End Function

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

  • 16、编写VB程序统计单词个数。要求:在文本框Text1中输入英语短文,单击“统计”按钮,单词的个数显示在Text2中(假定每个单词仅包含英文字母)。程序界面如图所示,按此要求编写程序如下:

    Function Stod(ch As String)As String

      Dim n As Integer, i As Integer

      Dims As String, st As String

      For i=1 To Len(ch)

        s=Mid(ch, i, 1)

        If s>="a" Ands<="z" Then

          s=Chr(Asc(s)-32)

        End If

        ______________

        Stod=st

      Next i

    End Function

    Private Sub Command1_Click()

      Dim article, f As String, s1, s2 As String

      Dim i As Integer, m As Integer

      Dim flag As Boolean

      article=Stod(Text1. Text):f=Stod(Text2. Text)

      m=0:flag=False

      For i=1 To Len(article)

        y=Mid(article, i, 1)

        If y>="A"Andy<="Z"Then

            If flag=False Then

                s1=

                s2=Mid(article, i+Len(f), 1)

                If s1=f And Not(s2>="A" And s2<="Z") Then

                  m=m+1

              End If

              flag=True

          End If

        Else

          flag=False

        End If

      Next i

      Label2.Caption="单词"+Text2.Text+“出现"+Str(m)+"次"

    End Sub

    (1)、要在文本框Text1中输入这段英文内容,需要修改Text1的属性值(单选,填字母:A .Caption/B .Text/C .Font/D .Height)。
    (2)、请将程序代码中的画线处语句补充完整。
    (3)、程序代码中的加框处有误,请改正。
    (4)、程序代码中,flag=表示一个单词的开始,即当前字一个单词的首字母。
  • 17、数组元素a(1)到a(5)的值依次为“24,16,4,33,77”,经过下面程序段加工后,数组flag中元素值为True的共有(  )

      Dim flag(1To 4)As Boolean

      For i=1 To 4

        For j=5 To i+1 Step-1

          If a(j)<a(j-1)Then

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

            flag(i)=True

          End If

        Next j

      Next i

    A、0个 B、1个 C、2个 D、4个
  • 18、有如下VB程序段:

    Dim a(1 To 10)As Integer

    Dim i As Integer, k As Integer

    For i=1 To 10 Step 2

        a(i)=1

    Next i

    For i=1 To 10

        If i Mod 3=0 Then a(i)=1-a(i)

    Next i

    For i=1 To 10

        If a(i)=1 Then k=k+1

    Next i

    该程序段执行后,变量k的值为(  )

    A、3 B、4 C、5 D、6
  • 19、有如下VB程序段:

    Dim a(0 To 9)As Integer

    Dim t As Long

    t=Val(Text1.Text):x=0

    Do While t>0

        a(t Mod 10)=1

        t=t\10

    Loop

    For i=0 To 9

        x=x+a(i)

    Next i

    若在文本框Text1中输入380305220,则程序执行后,变量x的值为(  )

    A、1 B、2 C、5 D、9
  • 20、有如下VB程序段:

    Dim a(0 To 25)As Integer

    s=Text1.Text

    For i=1 To Len(s)

        ch=Mid(s,i,1)

        If ch>=“a” And ch<=“z” Then

            m=Asc(ch)-97

            a(m)=a(m)+1

        End If

      Next i

    已知数组a中元素的初值为0,若文本框Text1中输入的内容是“One of the most important questions;”,执行该段程序后,数组元素a(14)的值为(  )

    A、0 B、2 C、4 D、5
上一页 1082 1083 1084 1085 1086 下一页 跳转