相关试卷

  • 1、为分析数组a中各元素依次变化的情况,进行如下定义:

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

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

    3)对称波峰:上升段与下降段个数相同的波峰称为对称波峰。下图为一组数据的变化段及波峰示意图。

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

    (1)、数组元素“1,4,3,3,2,6,8,7,9,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

         Private Sub Commandl_Click()

         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+l

             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+l

             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

  • 2、给定m个区间和1个数组(有n个元素),现要求根据各区间限定的取值范围,将数组依次分割成m+1个段。具体分割方法如下:

    ●第1段是从数组首个元素开始,元素值都属于第1区间的最长连续元素段,如果首个元素不属于第1区间,则第1段元素个数为0;

    ●第1段分割后的剩余元素,用同样的方法来依次分割第2段、第3段、…、第m段;

    ●第m段分割后的剩余元素分割到第m+1段(剩余段)。若第p(1≤p≤m-1)段末尾连续元素的值也同时属于第p+1区间,则这块连续元素称为第p段“重叠块”,该段其余部分称为第p段“非重叠块”。由于不存在第m+1区间,这里特别规定:第m段的全部元素都分割到m段“非重叠块”,第m段“重叠块”的元素个数为0。一个数组分段示例如图。图中数组第1个元素10不属于第1区间[0,5],因此第1段的元素个数为0。10和20属于第2区间,而33不属于第2区间,因此第2段只包含10和20两个元素。第3段末尾连续3个元素的值也同时属于第4区间,因此,第3段“非重叠块”包含33,58,46,第3段“重叠块”包含55,62,69。

    (1)、给定2个区间依次为[10,50],[30,80],数组各元素为“12,44,34,45,66,50,45,70”,则第1段“重叠块”中的元素个数为
    (2)、小李根据上述描述,设计了一个统计各段“非重叠块”“重叠块”和剩余段中元素个数的算法。算法的VB程序如下,请在划线处填入合适的代码。

    Const n=18:m=6

    Dim a(1To n)As Integer

    Dim b(1To2*m)As Integer

    'b(1),b(2)为第1区间的下限和上限,b(3)、b(4)为第2区间的下限和上限,…

    Dim c(1 To 2 * m+1)As Integer

    '数组c用于保存统计结果:

    'c(1)、c(2)分别存储第1段“非重叠块”和“重叠块”的元素个数,

    'c(3)、c(4)分别存储第2段“非重叠块”和“重叠块”的元素个数,…

    'c(2*m-1)存储第m段“非重叠块”元素个数,c(2m)存储第m段“重叠块”的元素个数(值为0)

    'c(2*m+1)存储剩余段元素个数

    Private Sub Command 1_Click()

      Dim i As Integer, p As Integer, L As Integer, LL As Integer

      '读取n个数据并保存在数组a中,代码略

      '读取m个区间的下限和上限并保存在数组b中,代码略

      For i = 1 To 2 * m + 1

        c(i)= 0

      Next i

      i= 1:p = 1

      L= 0:LL = 0

      Do While   ①   

        If IsIn(i, p)Then

          If IsIn(i,p+1)Then

            LL = LL+1

          Else

              ②   

           LL = 0

         End If

         i= i+1

        Else

          c(2 * p - 1)= L

          c(2 * p)= LL

          L = 0

          LL=0

          p = p + 1

        End If

      Loop

      If i <= n Then

        c(2 * p-1)= n-i+1

      Else

        c(2* p - 1)= L

        c(2* p)=LL

      End If

      '输出统计结果,代码略

    End Sub

    '函数IsIn用来判断a(i)值是否属于第p区间

    Function IsIn(i As Integer,p As Integer)As Boolean

      If p>m Then

        IsIn=False

      Else

          If__③__Then IsIn=True Else IsIn=False

      End If

    End Function

  • 3、编写“字符串生成”程序,实现如下功能:在文本框Text1中(字符位置)输入多个正整数(以“,”为分隔符和结束符),单击“生成”按钮Command1,程序以这些整数为位置信息,依次从文本框Text2中(字典内容)提取字符并连接成字符串,最后将字符串显示在标签Label1中(生成内容)。程序运行界面如图所示。

    (1)、要使程序运行时,窗体Form1标题显示“字符串生成”,可在Form_Load事件过程中添加语句(单选,填字母:A .Form 1="字符串生成"/ B .Form 1.Text="字符串生成"/C .Form 1.Caption="字符串生成").
    (2)、实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Private Sub Command 1_Click()

    Dim s As String,t As String,c As String

    Dim i As Integer,p As Integer

    s="":t=""

    For i=1 To Len(Text 1.Text)

        c=Mid(Text 1.Text,i,1)

        If c="," Then

            p=Val(t)

            s=s+Mid(Text2.Text,p,1)

            t=""

        Else

            t=    ①   

        End If

    Next i

    Label1.Caption=    ②    

    End Sub

    (3)、若文本框Text1中输入内容的结束符缺失(即输入内容为1,18,9,9),单击“生成”按钮后,标签Label1中显示的内容是
  • 4、某种编码以4位二进制码为一组,每组前两位表示方向,后两位表示距离。编写一个程序,将编码翻译成方向和距离,距离值为每组编码后两位二进制码转换为十进制数的值。具体功能如下:在文本框Text1中输入连续多组编码,单击“翻译”按钮Command1,结果显示在列表框List1中。程序运行界面如图所示。

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

    Private Sub Commandl_Click()

    Dim s As String,c As String,d As String

    Dim n As Integer,bl AsInteger,b2 As Integer, v As

    Integer, i As Integer

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

    Do While i <=n

        c = Mid(s,i,2)

        If c = "00" Then

          d = "东"

        ElseIf c= "01" Then

          d = "南"

        ElseIf c= "10" Then

          d= "西"

        Else

          d = "北"

        End If

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

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

        v=   ①  

        List1.Addltem d + " "+ Str(v)

            ②   

    Loop

    End Sub

    (3)、若文本框Text1中输入的内容为“1111”,单击“翻译”按钮,列表框List1中显示的内容是
  • 5、在平面坐标系中,给定一组有序的点。从原点出发,依次用线段连接这些点,构成一条折线。要求编写一个“计算折线长度”的程序,功能如下:在文本框Textl中依次输入这些点的坐标值(数据都用逗号分隔并以逗号结尾),单击“计算”按钮Cmd后,程序计算这条折线的长度,结果显示在Label1中。例如,三个点的坐标为(5,10),(8,12),(6,17),输入格式如图所示。


    (1)、Cmd对象属于类(单选,填字母:A .Form / B .Label/C .TextBox/D .CommandButton).
    (2)、实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Private Sub Cmd_Click()

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

    Dim x1 As Single,yl As Single,x2 As Single,y2 As Single

    Dim d As Single,Totald As Single,v As Single,s As String

    s=   ①  

    x1=0:y1=0   '出发点为坐标原点

    k=1:j=1:Totald=0

    For i=1 To Len(s)

      If Mid(s,i,1)="," Then

        v=Val(Mid(s,j,i-j))'提取坐标值,保存在变量ν中

        j=i+1

        lf    ②    Then

          x2=v

        Else

          y2=v

          d=Sqr((x2-x1)^2+(y2-y1)^2)

          Totald=Totald+d

          x1=x2:y1=y2

        End If

        k=k+1

      End If

    Next i

    Label1.Caption=Str(Totald)

    End Sub

    (3)、运行该程序,输入题干中的数据,程序执行到循环结束时,变量k为
  • 6、素数只能被1和它本身整除,不能被其他自然数整除。编写VB程序实现如下功能:单击“产生奇数并判断”按钮Command1,随机产生一个三位正奇数显示在文本框Text1中,并在文本框Text2中显示其是不是素数的判断结果。例如,当随机产生的三位正奇数为953时,程序运行界面如图a所示。

    图a

    图b

    (1)、在设计程序界面时,应使用图b所示“控件工具箱”中的(填写相应编号)添加文本框Text1。
    (2)、实现上述功能的 VB 程序如下,请在划线处填写合适的代码。

    Private Sub Command 1_Click()

      Dim n As Integer,i As Integer

      Dim flag As Boolean  '用于标记是不是素数

      Randomize

      n = Int(    ①   )*2-1

      Text1.Text =Str(n)

      flag=True   '标记为素数

      i = 3

      Do While i<=n-1 And flag = True

        If    Then

          flag = False

        End If

        i = i + 2

      Loop

      If    ②   Then

        Text 2.Text =Str(n)+"是素数"

      Else

        Text2.Text = Str(n)+"不是素数"

      End If

    End Sub

    (3)、以下选项中,与加框处表达式“n Modi=0”等价的是___(单选,填字母)。
    A、n\i = Int(n/i) B、n\i=n/i C、n Mod i=n\i
  • 7、在Visual Basic中,若x是3的倍数,则下列表达式值一定为真的是(  )
    A、x/3=0 B、x*3=0 C、x Mod 3=0 D、3-x=0
  • 8、下列属于Visual Basic实数常量的是(  )
    A、0.618 B、1/2 C、True D、“2014-9-1”
  • 9、下列VB表达式的值等于8的是(  )
    A、Abs(-8.3) B、Int(Rnd*7+1) C、Len(“2+6”) D、18 Mod 10
  • 10、小吴为了研究冒泡排序过程中数据的”移动”情况,编写了一个VB程序,功能如下:在列表框List1中显示排序前数据(存储在数组a中),在文本框'Text1中输入初始位置(即下标值),单击“排序”按钮Command1后,在标签Labell中显示指定初始位置的数据在排序过程中的位置变化情况,排序后的数据显示在列表框List2中。程序运行界面如图所示。

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

    Dim a(1 To 8)As Integer

    Dim n As Integer

    Private Sub Form_Load()

        a(1)= 30:a(2)= 47:a(3)= 30:a(4)= 72

        a(5)= 70:a(6)= 23:a(7)= 99:a(8)= 24

        n = 8

        For i = 1 To 8

          List 1.Addltem a(i)

        Next i

    End Sub

    Private Sub Command1_Click()

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

        Dim pos As Integer

        Dim s As String

        s = Text1.Text

        pos = Val(Text1.Text)

        For i = 1 To n- 1

          For j = n To i+1 Step-1

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

                    ‘⑴

              a(j-1)= a(j)

              a(j)= k

              '如果pos位置的数据参与交换,则更新pos值,记录pos变化位置

              If pos = j Then

                pos = j-1

                s = s + " →" + Str(pos)

                  ‘⑵

                pos = j

                s = s + " →" + Str(pos)

              End If

            End If

          Next j

        Next i

        Label1.Caption = "位置变化情况:" +s

        For i = 1 To n

          List2.AddItem Str(a(i))

        Next i

    End Sub

     ⑵ 

  • 11、小李基于冒泡排序算法编写了一个VB程序,功能如下:在文本框Text1中显示排序前的数据,单击“排序”按钮Command1,在文本框Text2中显示剔除重复数据后的升序排序结果。程序运行界面如图所示。

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

    Const n = 10

    Dim a(1 To n)As Integer

    Private Sub Commandl_Click()

    Dim i As Integer,j As Integer,t As Integer

    Dim bottom As Integer

    '获取排序前数据依次存储在数组a中,并在文本框Text 1中显示。代码略

    bottom = n

    i = 1

    Do While i<= bottom-1

      For j = bottom To i + 1 Step -1

          If  Then   ‘⑴

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

          Elself a(j)= a(j - 1)Then    '相邻两个数据相等,进行剔除处理

               ‘⑵

            bottom = bottom -1

          End If

        Next j

        i = i+1

    Loop

    Text2.Text=""

    For i = 1 To bottom

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

    Next i

    End Sub

     ⑵ 

  • 12、有一组正整数,要求仅对其中的素数进行升序排序。排序后素数在前,非素数在后。排序示例如下。

    排序前

    86

    71

    5

    41

    81

    79

    37

    89

    排序后

    5

    37

    41

    71

    79

    89

    86

    81

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

    Const n=8

    Dim a(1 To n)As Integer

    Private Sub Commandl_Click()

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

    Dim flag As Boolean

    '读取一组正整数,存储在数组a中,代码略

    For i= 1 To n-1

            '(1)

        If IsPrime(a(k))Then flag = True Else flag = False

        For j = i + 1 To n

          If IsPrime(a(j)) Then

            If  Then    '(2)

              k=j

              flag = True

            End If

          End If

        Next j

        If k <> i Then

          t=a(k):a(k)= a(i):a(i)= t

        End If

        If Not flag Then Exit For     'Exit For表示退出循环

    Next i

    '依次输出排序后的数据。代码略

    End Sub

    Function IsPrime(m As Integer)As Boolean

    '本函数判断m是不是素数:是素数返回值为True,不是素数返回值为False

    '代码略

    End Function

     ⑵ 

  • 13、小明基于冒泡排序思想设计了一个改进的排序算法。该算法先用冒泡法将数组a中奇数位置的元素、偶数位置的元素分别进行排序,然后再进行后续处理。算法的VB程序段如下,但加框处代码有错,请改正。

    '待排序数据存储在数组a中(a(1)~a(n)),要求升序排列

    For i=1To(n-1)\2

      For j=1To n-i*2

        If a  Then         '①

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

        End If

      Next j

    Next i

    For i = 1 To n\2

        j = 2 * i - 1

        If a(j)> a(j+ 1)Then t = a(j):a(j)= a(j+1):a(j+1)= t

    Next i

    For i=  Step 2         '②

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

        Do While t <a(j)

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

        Loop

        a(j+ 1)= t

    Next i

  • 14、小赵对选择排序算法进行了如下改进:在数组的所有元素中找出最小和最大数据的元素,然后将这两个元素分别与第一个和最后一个元素交换数据,在余下的元素中找出最小和最大数据的元素,分别与第二个和倒数第二个元素交换数据,以此类推,直到所有元素的数据按升序排列。小赵编写的VB程序段如下:

    p=l:q=10.

    Do While p<q

      iMin=p:iMax=p

      For i=p+1 To q

        If a(i)< a(iMin)Then iMin =i

        If a(i)> a(iMax)Then iMax = i

      Next i

      t = a(iMin):a(iMin)= a(p):a(p)= t

      

      t = a(iMax):a(iMax)= a(q):a(q)= t

      p = p + 1

      q=q-1

    Loop

    要使程序实现上述算法思想,则方框中的语句是(  )

    A、If iMax = pThen iMax =iMin B、If iMin = p Then iMin =iMax C、If iMax = p Then iMin =iMax D、If iMin = pThen iMax =iMin
  • 15、某数据压缩方法描述如下:

    1)原始数据中,某数不为0且相邻无重复,压缩数据用该数据表示;

    2)原始数据中,某数为0且相邻无重复,压缩数据用两个数表示,第1个为0,第2个为0;

    3)原始数据中,某数据相邻有重复,压缩数据用3个数表示:第1个为0,第2个为重复数的个数,第3个为该数本身;根据上述压缩方法,对应的解压缩方法示例如图a所示。

    图a

    小明编写了一个解压缩VB程序,功能如下:窗体加载时,自动读取压缩数据,依次存储在数组元素a(1)、a(2)、a(3)……中,压缩数据的个数存储在变量n中,压缩数据显示在文本框Text1中。单击“解压缩”按钮Command1,程序对压缩数据依次进行解压缩处理,解压缩数据显示在文本框Text2中。程序运行界面如图b所示。

    图b

    (1)、如果压缩数据为“23,0,21,66,0,0,77,0,5,0”,则解压缩数据的个数是
    (2)、实现上述功能的VB程序如下。请在划线处填入合适代码。

    Dim a(1 To 100)As Integer    '存储压缩数据,最大处理个数为100

    Dim b(1 To 1000)As Integer    '存储解压缩数据,最大处理个数为1000

    Dim n As Integer    '存储压缩数据的个数

    Private Sub Form_Load()

    '压缩数据由上述压缩方法生成

    '本过程用于读取压缩数据并存储在数组a中,压缩数据个数存储在变量n中

    '代码略

    End Sub

    Private Sub Commandl_Click()

    Dim pa As Integer '存储压缩数组当前处理位置

    Dim pb As Integer '存储解压缩数组当前处理位置

    Dim firstdata As Integer,count As Integer,iAs Integer

    pa=1:pb=1

    Do While pa<=n

      firstdata=a(pa)

      If firstdata <>0 Then  '示例1)情况处理

          b(pb)=firstdata

          pa=pa+1:pb=pb+1

      Else

          count=a(pa+1)

          If count=0 Then    '示例2)情况处理

            b(pb)=0

            pa=    ①_   _:pb=pb+1

          Else                '示例3)情况处理

            For i=1 To count

                   ② 

            Next i

            pa=pa+3:pb=pb+count

          End If

      End If

    Loop

    Text2.Text=Str(b(1))

    For i=2 To   ③   

      Text2.Text=Text2.Text+“,”+Str(b(i))

    Next i

    End Sub

  • 16、由数组a生成数组b的方法描述如下:

    1)将数组a中的n个元素依次分割出若干个数据块,每个数据块有m×m个元素,m最大值为8,最小值为2。分割时,按尽可能大的数据块进行分割。

    2)对每个分割出的数据块用“方阵转换法“进行转换,每次转换后得到的数据块依次存储到数组b中。

    3)数组a分割后的剩余元素(个数小于4),直接依序存储到数组b中。

    例如n=140时,可依次分割出3个数据块,元素个数分别为64(8×8)、64(8×8)、9(3×3),剩余元素为3个。

    “方阵转换法”过程如下:将数据块中m×m个元素按行序排列成一个数字方阵,从该数字方阵中按列序得到转换后元素的次序。

    以3×3数据块为例,转换过程如图所示:

    小明依据上述描述设计了如下VB程序。请回答下列问题:

    (1)、当n=120时,分割出的第3个数据块元素个数为
    (2)、请在划线处填入合适的代码。

    Const n=120

    Dim a(1 To n)As Integer

    Dim b(1 To n)As Integer

    Private Sub Commandl_Click()

      Dim m As Integer,i As Integer

      Dim Start As Integer  '当前未分割数据的第1个元素下标

      Dim Left As Integer  '当前未分割数据的个数

      Dim pa As Integer   '数组a的下标

      Dim pb As Integer  '数组b的下标

    '读取n个转换前的数据,依次存储到 a(1)、a(2)、……、a(n)中,代码略

    m=8

    Start=1

    Left=n

    Do While Left>3

      If Left<m * m Then

        m=  ① 

      Else

        pa=Start

        pb=Start

        For i=1 To m * m

          b(pb)= a(pa)

          pb=pb+1

          If i Mod m=0 Then

               ②  

          Else

            pa=pa+m

          End If

        Next i

           ③    

        Start=Start+m*m

       End If

     Loop

     For i=Start To n

       b(i)=a(i)

     Next i

    '依次输出转换后的数据b(1)、b(2)、……b(n),代码略

    End Sub

  • 17、有如下VB程序段:

    n=0

    For i=1 To Len(Text1.Text)

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

      If c>=“0”And c<=“9”Then m=1 Else m=2

      a(m)=a(m)+1

      If a(m)=1 Then n=n+1

    Next i

    数组a中各元素的初始值都为0,文本框Textl中的内容为“Happy2017”。执行该程序段后,变量n的值为(  )

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

    a(1)=1:a(2)=1

    b(1)=1:b(2)=2

    For i=3 To 5

      a(i)=a(i-1)+a(i-2)

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

    Next i

    执行该程序段后,数组元素b(5)的值为(  )

    A、12 B、8 C、5 D、4
  • 19、下列VB程序功能为:根据文本框Text1中各字符的大小关系,计算各字符升序排列的序号,并将序号保存在数组y中。如文本框内容为“2011”,程序运行后y(1)~y(4)各元素的值分别为“4,1,2,3”。

    s=Text1.Text

    n=Len(s)

    For i=1 To n

      y(i)=1

    Next i

    For i=1 To

      For j=  To n

        If  Then

         y(j)=y(j)+1

        Else

          y(i)=y(i)+1

        End If

      Next j

    Next i

    上述程序段多个加框处的表达式分别为(  )

    A、(1)n       (2)1        (3)Mid(s,j,1)>=Mid(s,i,1) B、(1)n       (2)1        (3)Mid(s,j,1)>Mid(s,i,1) C、(1)n-1     (2)i+1       (3)Mid(s,j,1)>=Mid(s,i,1) D、(1)n-1     (2)i+1       (3)Mid(s,j,1)>Mid(s,i,1)
  • 20、有如下VB程序段:

    For i=1 To 6

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

    Next i

    For i=1 To 5

       If i Mod 2=1 And a(i)>a(i+1)Then

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

       Else

          a(i)=a(i)+1

       End If

    Next i

    执行程序后,a数组各元素可能是(  )

    A、11,11,7,9,3,9 B、6,2,8,10,5,9 C、6,9,3,7,8,12 D、3,9,0,8,2,7
上一页 1363 1364 1365 1366 1367 下一页 跳转