版本:
全部 教科版
  • 1、編寫VB程序,實現如下功能:程序運行時,單擊命令按鈕 Command1產生100個隨機字符串(每個字符串的長度不超過10),并顯示在列表框List1中單擊命令按鈕Command2對產生的100個隨機字符串按權值進行降序排序,將排序結果顯示在列表框List2中。每個字符串的權值定義為該字符串中ASCⅡ碼值最大的學母的ASCⅡ碼值,例如字符串“Hello”中ASC碼值最大的字母是“o”(ASCⅡ碼值為111),則字符串“Hello”的權值為111。程序運行效果如圖所示。

    實現上述功能的VB代碼如下,在劃線處填入合適的代碼。

    Dim a (1 To 100) As String   ‘ 依次存放100個隨機字符串

    Dim b (1 To 100) As Integer   ‘ 依次存放每個字符串的權值

    Private sub command1_Click( )   ‘ 產生100個隨機字符串

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

    For i=1 To 100

      k=Int (Rnd*7+3)   ‘k表示第i個字符串的長度

      For j = 1 To k   ‘通過循環產生第i個字符串并存儲在a(i)中

        If Int(Rnd*2+1) = 1 Then   ‘ 產生一個小寫字母的 ASCⅡ碼值

          x = Asc("a")+ Int (Rnd*26)

        Else

          x = Asc("A") + Int(Rnd*26) ‘ 產生一個大寫字母的ASCⅡ碼值

             ①        

        a(i) = a(i)+Chr (x)

      Next j

      List1 AddItem a(i)

    Next i

    End Sub

    Private sub command2_Click( )’ 對100個字符串按字符串權值降序排序

    Dim i As Integer, j As Integer, y As Integer, s As string

    For i =1 To 99

      k =1

      For = i + 1 To 100

             ③      

      Next j

      If k <> Then

        s = a(k) : a(k) = a(1) : a(1) = s

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

      End If

    Next i

    For i=1 To 100

      List2 AddItem a(i)

    Next i

    End sub

     ② ③ 

  • 2、有一組正整數,要求僅對其中的素數進行升序排序。排序后素數在前,非素數在后排序示例如下。

    排序前

    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 Command1_ click ( )

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

    Dim flag As Boolean, sl As String, s2 As String

    ‘ 讀取一組正整數,存儲在數組a中

    ‘ 代碼略

    For i = 1 To n

      s1 = s1 + Str(a(i))

    Next i

    Text1. Text = s1

    For i = 1 To n-1

            ‘①

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

        Else flag = False

        For j = i + 1 To n

          If IsPrime (a(j)) Then

            If       Then    ‘②

              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

      ‘依次輸出排序后的數據

      ‘代碼略

      For i=1 To n

        s2 = s2 + Str(a(i))

      Next i

      Text2. Text = s2

    End Sub

    Function IsPrime (m As Integer) As Boolean

    ‘ 本函數判斷整數m是不是素數。是素數返回值為True,不是素數返回值為False

    ‘ 代碼略

    End Function

    加框①處代碼應改為

    加框②處代碼應改為

  • 3、小明使用VB編寫了一個按降序排名次的程序當數據相同時,排名相同)。程序運行時,隨機產生10個[30,60]之間的隨機數,并輸出在列表框List中,單擊“排名”按鈕 Command1,在列表框List2中輸出數據及其排名,程序運行界面如圖所示。

    實現上述功能的VB程序如下,但加框處代碼有錯,請改正。

    Dim a (1 To 10) As Integer

    Dim mc (1 To 10) As Integer

    Private Sub Form Load( )

    ‘ 隨機產生10個[30, 60]之間的隨機數,保存在數組a中,并輸出到列表框List1

    ‘ 代碼略

    End sub

    Private Sub Command1_Click( )

    Dim i As Integer, 3 As Integer, k As Integer

    For i = 1 To 10

      k = 0

      For j = 1 To 10

        If  Then     ‘ ①

          k=k+1

              ‘ ②

        End If

      Next j

    Next i

    For i = 1 To 10

      List2.AddItem Str(a(i)) + " " + Str(mc(i))

    Next i

    End Sub

    加框①處代碼應改為

    加框②處代碼應改為

  • 4、小趙對選擇排序算法進行了如下改進:在數組的所有元素中找出最小和最大數據的元素,然后將這兩個元素分別與第一個和最后一個元素交換數據,在余下的元素中找出最小和最大數據的元素,分別與第二個和倒數第二個元素交換數據,以此類推,直到所有元素按升序排列。

    小趙編寫的VB程序段如下:

    p=1: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、iMax = p Then iMax = iMin B、If iMin =p Then iMin = iMax C、If iMax = p Then iMin = iMax D、If iMin = p Then iMax = iMin
  • 5、有如下VB程序段:

    For n =1 To 4

      p = n

      For m = n+1 To 5

        If a(m) < a(p) Then p = m

      Next m

      If p > n Then

        temp=a(n): a(n) = a(p): a(p)= temp

      End if

    Next n

    設數組元素a(1)~a(5)的值分別為“1000,1200,1018,1208,1019”,經過該程序段“加工”后,a(1)+a(3)的值為(  )

    A、2018 B、2019 C、2200 D、2208
  • 6、采用下面的排序算法對數組a中元素進行排序。

    Private Sub Command1_ Click ( )

      Dim a(1 To 5) As Integer, i As Integer, 3 As Integer, c As Integer

      a(1) = 22: a(2) = 44: a(3) = 11: a(4) =33: a(5) = 55: c = 0

      For i = 1 To 4

    m = i

    For j = i + 1 To 5

      If a(i) > a(m) Then m = j

        Next j

        If m <> i Then

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

          c=c+1

        End If

      Next i

      Label1.Caption= Str (c)

    End sub

    該程序運行后,標簽Label1中顯示的內容是(  )

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

    s = "7218634594”

    n = Len(s) : c = 0

    For i = 1 To n-1

      a(i) = Val(Mid(s, i, 2)

    Next i

    For i= 1 To n-2 Step 2

      k = i

      For j= i+2 To n-1 Step 2

        If a(j) < a(k) Then k=j

      Next j

      If k <>i Then

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

        c=c+1

      End if

    Next i

    Text1.Text=str(c)

    該程序段運行后,Text1中顯示的內容是(  )

    A、1 B、2 C、3 D、4
  • 8、有如下VB程序段,其中數組元素a(1)到a(5)的值依次為“41,66,70,83,31”

    For i = 5 To 4 Step -1

      k=i

      For j = 6-1 To 1 Step-1

        If a(j) < a(k) Then k = j

      Next j

      If k <>i Then

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

      End if

    Next i

    則該程序段運行后,數組元素a(1)到a(5)的值依次為(  )

    A、31,41,66,83,70 B、83,70,66,41,31 C、83,66,70,41,31 D、31,41,66,70,83
  • 9、對數組元素d(1)到d(10)進行從小到大的排序其選擇排序算法的VB程序段如下

    For m=1 To 9

      p=m

      For n = m+1 To 10

                  

      Next n

      If p<>m Then

        tt=(p): (p)=d(m): d(m)=tt

      End If

    Next m

    劃線處的語句是(  )

    A、If d(n)<d(p) Then p=m B、If d(n)<d(p) Then p=n C、If d(n)>(p) Then p=n D、If d(n)>d(p) Then p=m
  • 10、實現某排序算法的部分VB程序如下:(  )

    For i =1 To 6

      k=i

      For j = i+1 To 7

        If a(j) < a(k) Then k = j

      Next j

      If i <> k Then

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

      End If

    Next i

    在排序過程中,經過某一遍排序“加工”后,數組元素a(1)到a(7)的數據依次為“10,41,75,12,63,11,85”,則下一遍排序“加工”后數組元素a(1)到a(7)的數據依次是(  )

    A、10,11,41,75,12,63,85 B、10,11,75,12,63,41,85 C、11,12,7,3,418 D、10,11,12,41,63,75,85
  • 11、采用如下選擇排序算法對數組a中的5個數據“23,6,98,65,2”按從小到大的順序進行排序。

    For i =1 To 4

      k=i

      For j = i+1 To 5

        If a(j) < a(k) Then k=j

      Next j

      If i <> k Then

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

      End If

    Next i

    整個排序過程中,數組中的數據比較次數和交換次數分別是(  )

    A、10,3 B、10,4 C、15,3 D、15,10
  • 12、小劉在研究n個數的冒泡排序算法,發現可以從兩個方面進行優化:

    1)在每遍冒泡過程中,若最后一次交換的是last與last-1位置的數,則last位置之前的相鄰數據均已有序。進行下一遍冒泡,無序區域設置為[last,n],每一遍排序均可能使當前的無序區域縮小。

    2)若在某一遍排序中沒有數據交換,說明待排序數據都已經有序,冒泡排序過程可在此遍排序后結束。因此可以引入一個變量lag,記錄在每遍排序過程中是否發生了交換。

    小劉按上述方法設計了一個冒泡優化VB程序功能如下:單擊“生成數據”按鈕 Command1后,隨機生成一組無重復的兩位整數存入數組a,并顯示在列表框List1中。單擊“排序”按鈕Command2后,將數組a中的數據進行降序排序,排序后的數據顯示在列表框List2中,排序過程中實際的冒泡遍數顯示在Label3中。程序運行界面如圖所示。實現上述功能的VB程序如下,回答下列問題。

    (1)、若按優化后的冒泡排序算法,數據28,15,10,8,12進行降序排序,冒泡的遍數是(填數字)。
    (2)、在劃線處填入合適的代碼。

    Dim a (1 To 20) As Integer

    Private sub command1_Click ( )    ‘ 隨機生成不重復的兩位數

    Dim i As Integer, j As Integer

    List1, Clear : List2. Clear

    Randomize

    For i = 1 To 20

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

      For j = 1 To i-1

        If    ①      Then i =i-1:Exit For

      Next j

    Next i

    For i=1 To 20

      List1.AddItem Str(a(i))

    Next i

    End Sub

    Private Sub Command2_ Click ( )

    Dim flag As Boolean, i As Integer, j As Integer

    Dim temp As Integer, num As Integer, last As Integer

    num = 0 : last = 1

    flag= True

    Do While flag=True

            ②     

      For j = 20 To last +1   Step -1

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

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

                ③      

          flag = True ' 有交換發生

        End if

      Next j

      num = num +1

    Loop

    For i =1 To 20

      List2 AddItem Str(a(1)

    Next i

    Label13. Caption = "本次排序的冒泡遍數為:" & str(num)

    End sub

     ② ③ 

  • 13、小吳為了探究冒泡排序過程中數據的“移動”情況,編寫了一個VB程序,功能如下:在列表框List1中顯示排序前數據(存儲在數組a中),在文本框Text1中輸入初始位置(即下標值),單擊“排序”按鈕 Command1后,標簽 Label1中顯示指定初始位置的數據在排序過程中的位置變化情況,排序后的數據顯示在列表框List2中程序運行界面如圖所示。

    實現上述功能的VB程序如下,但加框處代碼有誤,請改正。

    Dim(1 To 8) As Integer

    Dim As Integer

    Private Sub Form Load ( )

    ‘ n=8,排序前的8個數據存儲在數組a中,并在列表框List1中顯示

    ‘ 代碼略

    End Sub

    Private Sub Command1_Click ( )

      Dim i As Integer, As Integer, k As Integer

      Dim pos As Integer    ‘變量pos存儲指定數據的位置(即下標值)

      Dims As String     ‘變量s存儲pos變化情況

      s = Text1.Text

      pos = Val (Text1. Text)

      For i =1 To n-1

      For j = n To i + 1 Step -1

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

               ‘(1)

          a(1)=k

           ‘如果pos位置的數據參與交換,則更新pos值,記錄pos變化情況

          If pos = j Then

            pos = j-1

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

                    ‘(2)

           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

    加框(1)處代碼應改為

    加框(2)處代碼應改為

  • 14、n個數據的冒泡排序需要經過n-1遍加工,每一遍加工自下而上比較相鄰兩個數據,把較大者交換到上面。小劉發現:當某一遍加工程中沒有數據交換時,說明數據已經有序,無需進一步加工。為此,小劉對算法進行優化,編寫了一個VB程序,功能如下:運行程序時,在列表框 List1中顯示排序前數據,單擊“排序”按鈕Command1,在列表框List2中顯示這些數據按降序排序后的結果,在標簽 Label3中顯示排序過程的加工遍數,在標簽 Label4中顯示排序過程的數據交換次數。運行效果如圖所示。

    實現上述功能的VB代碼如下,但加框處代碼有錯,請改正。

    Dim a (1 To 8) As Integer

    Dim n As integer

    Private Sub Form_ Load ( )

    ‘ n=8,排序前數據存儲在數組a中,并在列表框List1中顯示

    ‘ 代碼略

    End Sub

    Private Sub Command1_Click ( )

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

      Dim flag As Boolean

      For i = 1 To n

        List1 AddItem Str(a(i))

      Next 1

      i=1

      flag= False

      Do While       ‘①

        flag = True

      For j = n To i +1 Step-1

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

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

          c=c+1

          flag = False

        End If

      Next j

      i = i+1

    Loop

    Label3. Caption = “排序過程的加工遍數為” +             ‘②

    Label4. Caption= “排序過程數據交換次數為” + str(c)

    For i = 1 To n

      List2. AddItem Str((i))

    Next i

    End Sub

    加框①處代碼應改為

    加框②處代碼應改為

  • 15、現有包含10個元素的數組d,使用冒泡排序算法對此數組元素進行升序排序,部分VB代碼如下:

    For i = 1 To 9

      For j =   ①    

        If    ②   Then

          k=d(j) : d(j) = d(+1) : d(+1)=k

        End If

      Next j

    Next i

    ①②處應填寫的正確語句是(  )

    A、①i+1 To n,②d(j) > d(j+1) B、①i+1 To n,②d(j) < d(j+1) C、①1 To n -i,②d(j) < d(j+1) D、①1 To n -i,②d(j) >d (j+1)
  • 16、采用冒泡排序算法對數組a中的6個數據25,4,1,16,9,36進行排序,部分程序如下:

    For i = 1 To 3

      For j = 6 To i + 1 Step-1

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

         

        End If

      Next j

    Next i

    下列說法正確的是(  )

    A、程序為升序排序,實線框中的語句共執行了9次 B、程序為升序排序,實線框中的語句共執行了8次 C、程序為降序排序,實線框中的語句共執行了9次 D、程序為降序排序,實線框中的語句共執行了8次
  • 17、有VB程序段如下:

    exchange = 0

    last_change = 8

    Do While last_ change > 1

      current = 1

      For j = 1 To last_ change-1

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

          exchange = exchange +1

          tmp = a(0): a(3) = a(j+1): a(j+1) = tmp

          current j

        End If

      Next j

      last_change = current

    LooP

    數組元素a(1)到a(8)的值依次為15,13,0,14,12,9,5,1,執行該程序段,則exchange的值為(  )

    A、2 B、3 C、4 D、5
  • 18、有一個數組,采用冒泡排序,第一遍排序后的結果為4,10,5,32,6,7,9,17,24,那么該數組的原始順序不可能是(  )
    A、10,5,32,6,7,9,17,24,4 B、10,5,32,6,7,9,4,17,24 C、10,5,32,4,6,7,9,17,24 D、4,10,5,32,17,9,24,6,7
  • 19、在某次校園合唱比賽中,6個參賽隊的得分分別為95,87,93,85,91,若采用冒泡排序算法對其進行從小到大的排序,如表所示,則第二趟排序結果是(  )

    原始數據

    95

    87

    93

    85

    91

    第一趟

    85

    95

    87

    93

    91

    第二趟

    A、85  87  95  91  93 B、85  95  87  91  93 C、85  87  93  95  91 D、85  91  87  93  95
  • 20、某書店在5所學校的流動售書量(單位:本分別是88、110、48、64、35。采用冒泡排序對其進行排序,若完成第一遍冒泡的結果是35、88、110、48、64,則完成第二遍冒泡的結果是(  )
    A、35、88、110、48、64 B、35、48、88、64、110 C、35、48、88、110、64 D、35、48、64、88、110
1 2 3 4 5 下一頁 跳轉