当前位置: 答案解析 / 算法与程序设计 / 算法及程序语言基础 / 循环结构语句及程序实现
  • 1. (2021高三上·浙江月考) 有如下VB程序段:

    s= "abcde"

    m=0

    L=Len(s) :n=L

    Do While n>0

        m=(m+3) Mod n+1

        s=Mid(s,1,m-1)+ Mid(s,m+1,L) +Mid(s,m,1)

        n= n-1

    Loop

    执行该程序段后,变量s的值是(    )

    A . edcba B . debca C . dbeca D . Edbac
举一反三换一批
  • 1. (2020·上虞模拟) 有如下VB程序段:
    Dim a(0 To 6) As Integer
    Randomize:
    a(0)=0: i=1

    Do While i<=6

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

      If a(i) Mod 2<>i Mod 2 Then

        i=i-1

      ElseIf a(i)<a(i-1) Then

        a(i)=a(i)*2

      End If

    i=i+1

    Loop

    执行该程序段后,数组元素a(1)到a(6)的值可能是(    )

    A . 5, 4, 5, 4, 5, 10 B . 1, 4, 6, 8, 10, 8 C . 7, 2, 5, 4, 5, 4 D . 1, 2, 2, 3, 5, 4
  • 2. (2021高三上·绍兴月考) 某景区渡口游客可乘船往返于河的两岸,有m个人自河东去河西,n个人自河西返回河东。现有一艘船,最大载重量为wt,最多可同时载两人,船自河东出发,最后返回河东。所有人的体重不会超过wt,求把所有人载过河所需最少往返次数。编写一个VB程序,实现上述功能。程序运行时,在列表框List1中显示所有游客的体重和去向(W表示往西、E表示往东),如“132E”表示体重为132往东。单击“统计”按钮Command1,在标签Label1中显示最少往返次数。程序运行界面如图所示。

    1. (1) VB语句List1.AddItem" "中AddItem是 (单选,填字母:A .对象名/B .方法名/ C .属性名)。
    2. (2) 实现上述功能的VB程序如下,请在划线处填入合适代码。

      Const m = 6, n = 8, wt = 200

      Dim d(1 To m + n) As String, a(1 To m + n) As Integer

      Private Sub Form_Load()

          '读取m + n 个人的体重及去向数据存入d 数组,代码略

      End Sub

      Private Sub Command1_Click()

          Dim i As Integer, p As Integer, q As Integer, s As String

          Dim num As Integer, num1 As Integer, num2 As Integer

          '以下代码实现从d 数组中提取每个人的体重数据,根据去向分段存入a 数组

          p = 1 : q =

          For i = 1 To m + n

              s = Mid(d(i), 1, Len(d(i)) - 1)

              If Mid(d(i),  , 1) = "W" Then

                  a(p) = Val(s): p = p + 1

              Else

                  a(q) = Val(s): q = q + 1

              End If

          Next i

          num1 = GetNum(1, m)

          num2 = GetNum(m + 1, m + n)

          If num1 > num2 Then num = num1 Else num = num2

          Label1.Caption = "过河需要最少往返次数:" + Str(num)

      End Sub

      Function GetNum(head As Integer, tail As Integer) As Integer

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

          '以下代码实现对数组a 降序排序

          i = head

          Do While i < tail

              k = i: i = tail

              For j =

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

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

                      i = j

                  End If

              Next j

          Loop

          cnt = 0: i = head: j = tail

          Do While i <= j

              If  Then j = j - 1

              cnt = cnt + 1: i = i + 1

          Loop

          GetNum = cnt

      End Function

    3. (3) 程序加框处的代码有误,请改正。
  • 3. (2019高三上·浙江月考) 班级里有48名学生,按6行8列安排座位,每2列为一组,共4组,矮的在前,高的在后。班级里每周都进行位置轮换,轮换规则如下:第一组同学换到第二组,第二组同学换到第三组,第三组同学换到第四组,第四组同学换到第一组, 并且同桌之间互换位置。为了方便学生在座位轮换的时候快速找到自己的新座位,设计了如下VB程序:窗体加载时,从数据库中读取班级学生数据,并按身高从小到大排序后,以6行8列的形式显示在列表框List1中:单击命令按钮Comand1后,在列表框list2中显示进行次轮换后的座位表。 程序运行界面如下:

    实现上述功能的VB程序如下,请回答下列问题:

    1. (1) “换座位”按钮的对象名为:
    2. (2) 请在划线处填入合适的代码,完成上述算法。

      Dim xn(1 To 50) As String, sg(1 To 50) As Integer

      Dim n as integer, i as integer, j as integer, ch as string, t1 8s string, t2 as integer

      Private sub form_load( )    ‘把数据表中姓名和身高分别存储到数组xm( )和sg( ),代码略

          ‘按身高从低到高对学生数据进行排序,代码略

          List1.Clear

          List1.AddItem“第一组”+“第二组”+“第三组”+“第四组”

          List1.AddItem

          “------------------------------------------------------------”

          ‘将排序好的学生姓名按6行8列的格式输出在列表框list1中

          For i=1 To n

              ch=ch+xm(i)+””

              If i Mod2=0 Then ch=ch+””

              If  Then

                  List1.Addltem ch

                  ch=””

              End If

          Next i

      End Sub

      Private Sub Com1_Click( )

          Dim a(1 To 50) As String, b(1 To 50) As String

          Dim st As String

          ‘下面进行组与组之间的调换,调换后的数据保存在数组a中

          For i =1 To 6

              For j=1 To 8

                  a((-1)*8+j)=

              Next j

          Next i

          ‘下面进行同桌之间互换位置,互换后的数据保存在数组b中

          For i=1 To 6

              For j=1 To 8

                  If j Mod2=1 Then

                      b((-1)*8+j)=

                  Else

                      b((i-1)*8+j)=a((-1)*8+j-1)

                  End If

              Next j

          Next i

          ‘在列表框List2中输出轮换后的结果,代码略

          ‘下面进行数据重新赋值,为下一次轮换做准备

          For i=1 To 48

              xm(i)单b(i)

          Next i

      End Sub