试题

试题 试卷

logo

题型:单选题 题类:常考题 难易度:困难

算法与程序设计

有如下VB程序段:

s=″72186345945″:c=0

For i=1 To 6

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

Next i

For i=1 To 4 Step 2

k=i

For j=i+2 To 6 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
举一反三
编写VB程序,实现如下功能: 单击“排序数组a”按钮Command1时,对已有数组a的数据进行升序排列,并显示在文本框Label1中;单击“显示数组b”按钮Command2时,将升序数组b的数据显示在文本框Label2中;再单击“合并a和b”按钮Command3时,对数组a和数组b升序合并到字符串中,将合并后的数据在文本框Label3中显示。(运行效果如图所示)。实现上述功能的VB代码如下, 请在划线处填入合适代码。

Dim a(1 To 6) As Integer  

Dim b(1 To 6) As Integer

Private Sub Command1_Click()     '对数组a中的数据进行排序

Dim i As Integer, j As Integer ,k as integer

a(1) = 53 :a(2) = 18:a(3) = 62:a(4) = 22:a(5) = 6:a(6) = 25

s = ""

For i = 1 To 5

    k = i

    For j = i + 1 To 6

        If a(k) > a(j) Then {#blank#}1{#/blank#}

    Next j

    If i <> k Then

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

    End If

Next i

For i = 1 To 6

    s = s + Str(a(i))

Next i

Label1.Caption = s

End Sub

Private Sub Command2_Click() 

b(1) = 3: b(2) = 8: b(3) = 15: b(4) = 27: b(5) = 38: b(6) = 49

'此处部分代码省略

End Sub

Private Sub Command3_Click()  

'将数组a和b中的数据逐个比较后添加到新的字符串s中,并将s在label3中显示

i = 1: j = 1: s = ""

Do While i <= 6 {#blank#}2{#/blank#}j <= 6           '如果两数组都还有数据未合并

    If  {#blank#}3{#/blank#}Then

        s = s + Str(a(i)) : i = i + 1

    Else

        s = s + Str(b(j)) : j = j + 1

    End If

Loop

Do While i <= 6                            '只有数组a还有数据未合并

    s = s + Str(a(i)) : i = i + 1

Loop

Do While j <= 6                            '只有数组b还有数据未合并

    s = s + Str(b(j)) : j = j + 1

Loop

Label3.Caption = s

End Sub

小吴为了研究冒泡排序过程中数据的”移动”情况,编写了一个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

⑴{#blank#}1{#/blank#} ⑵{#blank#}2{#/blank#} 

返回首页

试题篮