循环结构语句及程序实现 知识点题库

有如下VB程序段:

s=0

For i=1 To 5 Step 2

  s=s+i

Next i

s=s+i

Label1.Caption=Str(s)

该程序段运行后,标签Label1上显示的内容是(  )

A . 3 B . 9 C . 14 D . 16
下列程序段执行后,a的值为(  )

For i=1To 9

    For j=i To 9

        a=i*j

        List1.AddItem i&"*"&j&"="&a

    Next j

Next i

A . 81 B . 45 C . 9 D . 1
有如下程序段:

a(1)=1:a(2)=2

i=3:flag=True

Do While i<=10 and flag=True

    a(i)=a(i-1)+a(i-2)

    If a(i)>4*i then flag=False

    i=i+1

Loop

Text1.Text=a(i-1)

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

A . 21 B . 32 C . 34 D . 55
有如下 VB 程序段:

s = " Good Luck 2021!":n = 0 : m = 0 : k = 0

For i = 1 To Len(s)

    c = Mid(s,i,1)

    If c >= "0" And c <= "9" Then

        n = n + 1

    ElseIf c >= "a" And c <= "z" Then

        k = k + 1

    Else

        m = m + 1

    End If

Next i

执行该程序段后,变量 m 的值为(    )

A . 3 B . 4 C . 5 D . 2
信息科代表楠楠想给美丽的信息老师写一段心里话,又怕被人发现,于是想了一个两全其美的方法。楠楠有两张n*n大小的纸,一张是透明的,一张是有字的。楠楠在透明的纸上涂黑了一些格子,然后把两张纸一起给信息老师,并告诉老师阅读方法:首先把透明的纸盖在另一张纸上,然后把露出来的字母从上到下从左到右写下来并将每个字母向左循环移一位(如取出是D,则左移为C),然后将透明的纸顺时针旋转90度,再读一遍,这样子一共读四遍,就得到情书内容。
  1. (1) 若透明纸上的涂黑处(“O”没有涂黑的地方,“#”代表被涂黑的地方)如图a所示,有字纸张内容如图b所示,则获取的情书内容的前八位内容

    图片_x0020_100012

  2. (2) 楠楠根据上述阅读规则,结合学科特点,发挥自己特长,设计了一个获取心里话的小程序。其VB代码和运行界面如图所示,请在划线处填入合适的代码。

    图片_x0020_100013

    Dim a(1 To 1000) As String

    Const n = 4

    Private Sub Form_Load()

        Dim x As Integer, s As String

        Dim b(1 To n * n) As Boolean

        Randomize

        For i = 1 To n      ‘随机产生n个位置,使得这些位置表示未被涂黑

           

            If b(x) = False Then

                a(x) = "0"

                b(x) = True

            Else

                i = i - 1

            End If

        Next i

    ‘将其余位置赋值为“#”,存入数组a相应的位置中,并将结果按n行n列的方式显示在列表框list1上,代码略

    End Sub

    Private Sub Command1_Click()

        Dim s As String, jg As String, ch As String

        s = "HAOXUEXIHAODUSHU"

        For i = 1 To n * n Step n

            List2.AddItem Mid(s, i, n)

        Next i

        For i = 1 To n

            For j = 1 To n * n

                If a(j) = "0" Then

                    ch = Mid(s, j, 1)

                    ch =

                    jg = jg + ch

                End If

            Next j

            Call turn(n)       ‘调用过程turn,完成矩阵顺时针旋转90度

        Next i

        Label1.Caption = jg

    End Sub

    Sub turn(x As Integer)

        Dim i As Integer, j As Integer

        Dim c(1 To n * n) As String

        For i = 1 To x

            For j = 1 To x

               c((i - 1) * x + j) =

            Next j

        Next i

        For i = 1 To n * n

            a(i) = c(i)

        Next i

    End Sub

有如下VB程序段:

S="ABCDEFG"

n=Len(s)

m=Int(Rnd*5+1)

i=0:c=1:ans=""

Do While c<= 3

    i=(i+m-1)Mod n+ 1

    ans=ans+Mid(s,i,1)

    c=c+1

Loop

Text 1.Text=ans

执行该程序段后,文本框中不可能的输出是(  )

A . ABC B . CFB C . ECB D . DAE
有如下 VB 程序段:

s = "python2021": t = "": i = 1

Do While i < Len(s)

    c = Mid(s, i, 1): d = Mid(s, i + 1, 1)

    If c < d Then t = t + c Else t = t + d

    i = i + 2

Loop

Label1.Caption = t

执行该程序段后,标签Label1上显示的内容是(    )

A . phn01 B . pto22 C . yhn01 D . yto22
小明编写了一个有关整数闭区间合并操作的VB程序:从数据库读取闭区间数据(左端点和右端点),存储在数组a中,按区间数据左端点升序排序,然后进行合并操作,操作结果存储在数组b中。

例如,读取的数据为2、3、15、25、10、14、1、5、30、60、15、25,过程是:

⑴设置区间信息为[2,3],[15,25],[10,14],[1,5],[30,60],[15,25];

⑵按区间左端点升序排序,得到J区间信息为[1,5],[2,3],[10,14],[15,25],[15,25],[30,60],[15,25];

⑶合并区间,得到[1,5],[10,25],[30,60]。说明:区间[1,5]和[2,3]合并为[1,5],区间[10,14]和[15,25]合并为[10,25],区间[10,25]和[15,25]合并为[10,25],因此合并后的结果为:[1,5],[10,25],[30,60]三个区间。

程序功能如下:单击“读数据库”按钮Command1,程序从数据库读取数据,输出在文本框Text1中;单击“开始处理”按钮Command2,程序进行区间排序,并进行区间合并操作,操作后的结果输出在文本框Text2中。程序运行结果如图所示。

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

  1. (1) Private Sub Command1_CIick()中的Click()是(单选,填字母:A .对象名;B .属性名;C .事件名;D .事件处理过程名)
  2. (2) 从数据库中读入的区间为[1,10],[15,20],[6,18],[25,30],[31,200],则合并操作后的区间为
  3. (3) 请在划线处填入合适的代码。

    Dim a(1 To 100) As Integer         ′数组a存储合并前的区间

    Dim b(1 To 100) As Integer         ′数组b存储合并后的区间

    Dim n As Integer                        ′n表示区间个数

    Private Sub Command1_Click()

        Dim s1 As String, i As Integer

        '读取数据,并存储到数组a中,并输出在文本框Text1中,代码略

    End Sub

    Private Sub Command2_CIick()

        Dim s2 As String, i As Integer, j As Integer, k As Integer

        Dim n As Integer, t As Integer, x As Integer

        For i=1 To n-1

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

                If Then

                    t=a(j): a(j)=a(j+2): a(j+2)=t

                    t=a(j+1): a(j+1)=a(j+3): a(j+3)=t

                End If

            Next j

        Next i

        k=2

        b(1)=a(1): b(2)=a(2)

        i=2: j=3

        Do While j <=2 * n

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

                If b(i) <=a(j+1) Then  

                Else If b(i)+1=a(j) Then

                    b(k)=a(j+l)

            Else

                k=k+1:

                k=k+1: b(k)=a(j+1)

                i=i+2

            End If

            j=j+2

        Loop

        For x=1 To k-2 Step 2

            s2=s2 & "[" & b(x) & "," &b(x+1) & "]" & ","

        Next x

        s2=s2 & "[" & b(x) & "," & b(x+1) & "]"

        Text2.text=s2

    End Sub

有求和式 ,编写程序计算并输出当n=20时,s的值。
数学家高斯十岁时秒算出了自然数1〜100的和是5050,我们也可以编写程序秒算自然数“1〜n”的和。请根据左边框内设计的算法将右边框内编写的程序代码补充完整。

等差级数求和的算法:

①令和s的初值为“0”;

②令自然数i的初值为“0”;

③输入n的值;

④如果is100,则执行第⑤步,否则执行第⑧步;

⑤累加自然数i的值;

⑥累加和s的值;

⑦转到第④步执行;

⑧打印输出计算结果“s”的值;

⑨程序结束。

程序代码:

Private Sub Command1_ Click ( )

    s=0

   

    N=Val (Text1.Text)

    Do While i<=n

        i=

        s=s+i

    Loop

     "s="; s

End Sub

编写“二进制数转换为十六进制数”程序,实现如下功能:在文本框 Text1 输入一个二进制数,单击“转换”按钮 Command1,将二进制数转换为十六进制数并在文本框 Text2 中显示。程序运行界面如下图所示。

  1. (1) 设计如图所示的程序界面,至少要使用个类(填数字)。
  2. (2) 实现上述功能的 VB 程序如下,请在划线处填入合适的代码。

    Private Sub Command1_Click()

        Dim s1 As String, s2 As String

        Dim i As Integer, x As Integer

        Const code="0123456789ABCDEF"

        s1=Text1.Text

        s2=""

        Do While Len(s1) Mod 4<>0 

            s1="0"+s1

        Loop

        x=0

        i=1

        Do While i<=Len(s1)

            x=x*2+Val(Mid(s1,i,1))  

            i=i+1

            If   Then      ‘①

                s2=s2+Mid(code,x+1,1)

                ‘②

            End If

        Loop

        Text2.Text=s2

    End Sub

  3. (3) 若文本框 Text1 中输入的内容为“101101”,单击“转换”按钮后,文本框Text2中显示的内容是
有如下 VB 程序段:

Dim a(1 To 6) As Integer

Dim d(1 To 6) As Integer

a(1) = 10: a(2) = 21: a(3) = 28: a(4) = 11: a(5) = 12: a(6) = 30

Const n = 6

For i = n To 1 Step -1

    d(i) = 0

    For j = n To i +1 Step -1

        If a(j) > a(i) Then d(i) = d(j) + 1

    Next j

    If d(i) > Max Then Max = d(i)

Next i

Text1.Text = Str(Max)

执行该程序段,文本框Text1中显示的是(   )

A . 1 B . 2 C . 3 D . 4
有如下VB程序段:

Dim a(1 To 6) As Integer

For i=1 To 6

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

    If a(i) Mod 2=0 And i Mod 2=0 Then

       a(i)=2 * a(i) - a(i - 1)

    End If

    s=s+Str(a(i))

Next i

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

A . 242221 B . 333126 C . 043513 D . 323117
有如下 VB 程序段:

n = 10: m = 0

For i = 1 To Int(Sqr(n))

    If Not d(i) Then

        j = 3 * i

        Do While j <= n

            d(j) = True

            j = j + i

        Loop

    End If

Next i

For i = 5 To n

    If d(i) Then m = m + 1

Next i

数组元素d(1)到d(10)的初值均为False,执行该程序段后,变量m的值为(        )

A . 5 B . 6 C . 7 D . 8
在VB程序中,反复被执行的部分叫
小李同学碰到了一个数学问题:400个同学按顺序进行编号后围成一个大圈,按1至2报数(从1号位置开始),报到2的同学出列,以此一直循环报数下去,问最后剩下的那位同学他的编号是几号?

例如以6个同学编号为例,按1至2报数(从1号位置开始)依次出列的编号次序为2-4-6-3-1-5,那么最后剩下的就是编号为5的同学。为了解决这个问题,小李用VB编写了如下程序尝试解决,其中列表List1显示出列的顺序编号,文本框Text1中显示最后留下的编号,程序代码如下,请在划线处填入合适的代码。

Private Sub Command1_Click()

    Dim s,f,t As Integer

    Dim a(1 To 400) As Boolean

    For i=1 To 400

        a(i)=False

    Next i

    s=0:f=0:i=0

    Do While f<399

        i=i+1

        If i=401 Then i=   

        If a(i)=False Then s=s+1

        If s=2 Then

             

            List1.AddItem Str(i)

            a(i)=True

            f=  

        End If

    Loop

    For i=1 To 400

        If    Then Text1.Text=Str(i) 

    Next i

End Sub

小明编写了一个VB程序,功能如下:输入一个不超过10000的整数,若该数的各位数字之积是其各位数字之和的倍数,则输出“Yes”,否则输出“No”。

程序运行时,在文本框Text1中输入一个整数,单击“判断”按钮Command1后,在标签Label3中显示判断结果。程序运行界面如下图所示。

  1. (1) 在设计程序界面时,要清空标签Label3中的显示内容,应修改该标签的属性。
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适代码。

    Private Sub Command1_Click()

        Dim x As Integer, h As Integer, k As Integer

        x = Val(Text1.Text)

        h = 0

        k=1

        Do While x > 0

            h = h + x Mod 10

            k=

            x = x \ 10

        Loop

        IfThen

            Label3.Caption = “Yes”

        Else

            Label3.Caption = “No”

        End If

    End Sub

  3. (3) 运行该程序,在文本框Text1中输入1234,单击“判断”按钮,显示的判断结果为
阅读下列程序,写出运行结果。

程序运行后输入6

运行输出结果是:

有如下python程序段:

n='15867239012'

s=0

for x in n:

  if int(x)%2==0:

    continue

  elif s==14:

    break

    s+=int(x)

print(s)

该程序段执行后,则输出结果为(    )

A . 18 B . 26 C . 14 D . 17
利用5列6行的二维数组qp来记录某试场中的座位编号1~30,生成编号所对应Python

程序段如下:

qp = [[0 for i in range(5)] for j in range(6)]    #建立二维数组并初始赋值为0

m = 0

for i in range(5):

  for j in range(6):

    if i % 2 == 0:

      qp[j][i] = m * 6 + j + 1

    else:

      qp[j][i] = m * 6 + 6 - j

m = m + 1

运行上述程序段后,编号17所在的数组元素为(    )

A . qp[4][2] B . qp[2][4] C . qp[5][3] D . qp[6][1]