试题

试题 试卷

logo

题型:单选题 题类:常考题 难易度:普通

浙江省温州市环大罗山联盟2018-2019学年高二下学期信息技术期中教学质量检测试卷

有VB程序段如下:

For i=1 to 2

k=1

For j=2 to 6-i

If d(k)<d(j) then k=j

Next j

If k<>6-i then

    T=d(6-i):d(6-i)=d(k):d(k)=t

End If

Next i

数组元素d(1)到d(5)的值依次为“36,25,47,89,78”,经过该程序段“加工”后,下列说法正确的是是(   )

A、数组元素d(1)到d(5)的值依次为36,25,47,78,89 B、此过程中数据共需比较次数为4次 C、此过程中数据共需交换次数为2次 D、此过程中数据“36”共被比较2次
举一反三
小吴为了探究冒泡排序过程中数据的“移动”情况,编写了一个VB程序,功能如下:

在列表框List1中显示排序前数据(存储在数组a中),在文本框Text1中输入初始位置(即下标值),单击“排序”按钮Command1后,在标签Label1中显示指定初始位置的数据在排序过程中的位置变化情况,排序后的数据显示在列表框List2中。程序运行界面如图所示。

实现上述功能的VB程序如下,请在横线处填上合适的代码,改正加框处的代码。

Dim a(1 To 8) As Integer

Dim n  As Integer

Private Sub Form_Load()

   'n = 8,排序前的8个数据存储在数组a中,并在列表框List1中显示

   '代码略

End Sub

Private Sub Command1_Click()

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

Dim pos As Integer      '变量pos存储指定数据的位置(既下标值)

Dim s As String         '变量s存储pos变化情况

s = Text1.Text

pos = Val(Text1.Text)

For i = 1 To n - 1

      For j =    ⑴            

          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)

                                               '(3)

                  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#} ⑶{#blank#}3{#/blank#} 

【加试题】字符串排序。编写VB程序,实现如下功能:程序运行时,单击命令按钮Command1 产生100个随机字符串(每个字符串长度不超过10),并显示在列表框List1中,单击命令按钮Command2对产生的100个随机字符串按权值进行降序排序,将排序结果显示在列表框List2中。每个字符串的权值定义为该字符串中ASCII码值最大的字母的ASCII码值,例如字符串“Hello”中ASCII码值最大的字母是“o”(ASCII码值为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, t As Integer, x As Integer

Randomize

For i = 1 To 100

k = Int(Rnd * 10 + 1) : t = 0  'k 表示第i 个字符串的长度

Do While t < k '通过循环依次产生第i 个字符串a(i)的k 个字符

If Int(Rnd * 2 + 1) = 1 Then '产生一个小写字母的ASCII 码值

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

Else

x = Asc("A") + Int(Rnd * 26) '产生一个大写字母的ASCII 码值

End If

                '①

If b(i) < x Then b(i) = x

t = t + 1

Loop

List1.AddItem a(i)

Next i

End Sub

Private Sub Command2_Click() '对100 个字符串按字符串权值降序排序

Dim i As Integer, j As Integer, y As Integer

Dim s As String

For i = 1 To 99

k = i

For j = i + 1 To 100

    '②

Next j

If k <> i Then

s = a(k): a(k) = a(i): a(i) = s

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

End If

Next i

For i = 1 To 100

List2.AddItem a(i)

Next i

End Sub

①{#blank#}1{#/blank#} ②{#blank#}2{#/blank#} 

返回首页

试题篮