试题

试题 试卷

logo

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

浙江省高中信息技术 排序算法及程序实现同步练习

有如下Visual Basic程序段:

Dim a(1 To 7) As Integer, i As Integer, j As Integer

Dim k As Integer, c As Integer

a(1)=4: a(2)=9: a(3)=1: a(4)=5

a(5)=8: a(6)=6: a(7)=2

s=“”

For i=1 To 3

 For j=i+1 To 7

  If a(j) < a(i) Then

   k=a(j): a(j)=a(i): a(i )=k

   c=c+1

  End If

 Next j

 s=Str(a(i))+s

Next i

Text1.Text=Str(c) & “:” & s

该程序段运行后,文本框Text1中显示的内容是(  )

A、5:4 2 1 B、3:9 8 6 C、4:1 2 4 D、5:6 8 9
举一反三
摘苹果游戏。游戏中的苹果树结了n个苹果,每个苹果有一个地面高度和摘它所需要的力气,要摘到苹果,必须具备高度和力气两个条件,每摘一个苹果都要用掉一定的力气。小林的可用力气是个有限值s,小林手伸直后能摘的最大高度为b,她可以借助的梯子的高度为a。游戏中苹果的高度和所需力气分别存储在数组 h和数组c中。程序运行界面如图所示。运行程序后,输入梯子高度a、手伸直高度b、可用力气s的值, 单击“计算”按钮(Command1),在文本框Text4中输出小林最多能摘得的苹果数ans。

相应程序如下,在划线处填入适当的语句和代码,把程序补充完整。

Dim c(1 To 100) As Integer, h(1 To 100) As Integer, d(1 To 100) As Integer

Dim n As Integer

Private Sub Form_Load()

     ‘从数据库中读取n个苹果的摘取所需力气和高度存放在数组c和h中,并显示在List1中,代码略

End Sub

Private Sub Command1_Click()

Dim a As Integer, b As Integer, s As Integer, i As Integer, j As Integer, m As Integer

a = Val(Text1.Text)     ‘梯子高度

b = Val(Text2.Text)     ‘手伸直高度

s = Val(Text3.Text)     ‘可用力气

m = 0

For i = 1 To n     ‘将所有能够摘得的苹果所需力气存储到数组d中

  If{#blank#}1{#/blank#}Then

m = m + 1

d(m) = c(i)

  End If

Next

For i = 1 To m - 1

  k = i

  For j = i + 1 To m

If{#blank#}2{#/blank#}Then k = j

  Next

  If k <> i Then

t = d(k): d(k) = d(i): d(i) = t

  End If

Next

ans = 0     ‘用剩余的力气去摘最多的苹果

For i = 1 To m

  If s >= d(i) Then

{#blank#}3{#/blank#}

ans = ans + 1

  End If

Next

Text4.Text = Str(ans)
End Sub

【加试题】某排序算法思想如下:若有11个桶,编号从0~10,随机产生多个整数,每产生一个整数时,就在以该整数位编号的桶中放一面小旗子,最后只要按顺序数每个桶中有几面小旗子,就能得到这几个整数的有序排列。例如2号桶中有1个小旗子,表示2出现了一次;3号桶中有1个小旗子,表示3出现了一次;5号桶中有2个小旗子,表示5出现了两次;8号桶中有1个小旗子,表示8出现了一次,按桶的编号顺序读出旗子数量,没有旗子的桶略过,得到有序整数为“2,3,5,5,8”。

为此,小李编写了一个VB程序,功能如下:运行程序,窗体加载时随机产生6个[0,9]的随机整数,并在列表框List1中依次显示排序前数据,单击“排序”按钮Command1,在列表框List2 中显示经过上述排序算法后的数据。运行结果如图所示。实现上述功能的VB代码如下,但加框处代码有错,请改正。

Dim a(10) As Integer    '数组a表示桶的编号,如a(0)表示第0号桶

Private Sub Command1_Click()

    Dim i As Integer, j As Integer

    For i = 0 To 10

        For j = 1 To       ①{#blank#}1{#/blank#}

List2.AddItem  CStr(i)

        Next j

    Next i

End Sub

Private Sub Form_Load()

    Dim i As Integer

    Randomize

    For i = 0 To 10             '将数组初始化为0

        a(i) = 0

    Next i

    For i = 1 To 6            '产生6个[0,9]的随机数

        t = Int(Rnd * 10)  

        a(t) =   '第t桶中小旗子数量加1    ② {#blank#}2{#/blank#}

        List1.AddItem  CStr(t)

    Next i

End Sub

返回首页

试题篮