4.4.4 循环控制的应用 知识点题库

输入5个数,分别完成以下操作:

按照次序逆序输出并从小到大输出。提示:list.reverse(),list.sort()

求s=3+6+9+…..+300值,解决该问题,可以采用如下两种不同的方法:

请补充完成上述横线处程序:

有如下VB程序段:

s=0 : i=1

Do While

   s=s+i

   i=i+1

Loop

执行该程序段后,变量s的值等于10,则程序方框处的语句是(  )

A . i < 5 B . i <= 5 C . i = 4 D . i <= 6
小李编写VB程序,功能如下:单击“产生数组”按钮Command1,则随机生成10个取值范围是1~10的正整数,分别存储到数组a中,对数组a的元素进行升序排列,并在标签Label1中显示;再单击“重复数”按钮Command2,则在排序后的数组a中查找连续个数最多的一组重复数值,若有两组连续重复数个数一样多,则取数值小的一组,将重复数的数组元素下标显示在标签Label2中。运行界面如图所示。

  1. (1) 已知窗体名称为Form1,要使程序加载时,窗体标题自动显示为“统计重复数”,则可在              (单选,填字母)事件过程中添加代码:Form1.Caption = “统计重复数”。
    A . Form_Click() B . Form_Load() C . Form1_Click() D . Form1_Load()
  2. (2) 实现上述功能的程序如下,请在划线处填写合适代码,使程序正常运行。

    Dim a(1 To 10) As Integer

    Dim n As Integer

    Private Sub Command1_Click()

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

      Dim s As String

      Randomize

      n = 10

      For i = 1 To n

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

      Next i

      For i = 1 To n - 1

        k = i

        For j = i + 1 To n

          If a(j) < a(k) Then

        Next j

        If k <> i Then

          temp = a(i): a(i) = a(k): a(k) = temp

        End If

      Next i

      s = ""

      For i = 1 To n

        s = s + Str(a(i))

        If i < n Then s = s + ","

      Next i

      Label1.Caption = s

    End Sub

    Private Sub Command2_Click()

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

      Dim length As Integer, origin As Integer

      Dim s As String

      k = 1:origin=1:length = 1

      For i = 2 To n

        If a(i) = a(i - 1) Then

          k = k + 1

          If k > length Then

            length = k

            origin = 

          End If

        Else

          k = 1

        End If

      Next i

      s = ""

      For j = origin To

        s = s + Str(j)

      Next j

      Label2.Caption = s

    End Sub

  3. (3) 程序加框处代码有错,请改正。
有如下VB程序段:

n=45:m=25

Do While m<>0

    r=n Mod m

    n=m

    m=r

Loop

Label1.Caption =Str(n)

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

A . 20 B . 15 C . 10 D . 5
有如下VB程序段:

Dim x As String, s As String

x = Text1.Text: s=""

For i = 1 To Len(x)

    c = Mid(x, i, 1)

    If c = "a" Then

        s = s + "z"

    Else

        s = s + Chr(Asc(c) - 1)

    End If

Next i

在文本框Text1中输入“dream”,执行该程序段后,变量s的值是(    )

A . Cqdal B . sdzn C . Esfzn D . cqdzl
小李编写了一个实现矩阵行列转换功能的VB程序,运行界面如图所示。程序运行时,生成数组a的值并在列表框List1中显示,在文本框Text1中输入要转换的行列序号(相同),单击“转换”按钮Command1后,在列表框List2中显示转换后的矩阵。

$JVK`V7$QL_MI4YPJ{@AB

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

Const k=5

Dim a(1 To k * k)As Integer

Private Sub Form_Load( )

‘生成数组a并以矩阵形式显示在列表框list1中

End Sub

Private Sub Command1_Click()

    Dim b(1 To k, k * k)As Integer

    Dim n As Integer

    Dim row As Integer, col As Integer

    Dim s As String

    s=“”

    n=Val(Text1. Text)

    For i=1 To k * k

        row=(i-1)\k+1

          ①    

        If row=n Then

            b(i)=a((col-1)*k+n)

        ElseIf col=n Then

               ②   

        Else

            b(i)=a(i)

        End If

        s=s+Str(b(i))

        If    ③   Then

            List2. AddItem s

            s=“”

        End If

    Next i

End Sub

  1. (1) 要让窗体左上角显示“矩阵转换”文字,应该通过修改该窗体的(单选,填字母:A . Font/B . Caption/C . Text)属性
  2. (2) 请在划线处填入合适的代码。

     ② ③ 

有如下VB程序段:

Dim t As Integer, s As String, i As Integer

s = "20PYt22hoN"

t = 0

For i = 1 To Len(s)

    c = Mid(s, i, 1)

    If c >= "a" And c <= "z" Then c = Chr(Asc(c) - 32)

        If c >= "A" And c <= "Z" Then

            t = t + 1

        Else

            t = t - 1

    End If

Next i

Text1.Text = Str(t)

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

A . -1 B . 0 C . 1 D . 2
现有一个 VB 程序,用于读取某数据库中“book”数据表的数据,其中部分代码如下:

Dim conn As ADODB.Connection

Dim rs As New ADODB.Recordset

Dim a(1 To 100) As String

conn.ConnectionString="Provider=Microsoft.ACE.OLEDB.12.0;data Source=" & App.Path & "\Mydata.accdb"

Set rs.ActiveConnection = conn

rs.Open "SELECT * FROM book"

n = 0

Do While Not

   

    a(n) = rs.Fields("name")

   

Loop

上述程序段中方框处可选语句为:

①n = n + 1   ②rs.MoveNext   ③rs.BOF   ④rs.EOF

则方框处语句依次可为(    )

A . ③②① B . ②①④ C . ④②① D . ④①②
数学家高斯十岁时秒算出了自然数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

某卡牌共有52张牌,分黑桃,红桃,梅花,方块4种花色,每种花色13张(编号为1~13),花色分别用1,2,3,4表示。将这卡牌打乱后,从中每次摸1张牌,同种花色的牌放起,在每种花色均有3张牌时结束摸牌,然后按花色编号从小到大展示摸到的卡牌。

摸牌规则:

A.当某花色牌不足3张,则记录摸到的牌,继续摸下一张牌

B.当某花色的牌超过3张时,若摸到的卡牌点数大于本花色中已有卡牌点数的最小值,则替换本花色中点数最小的卡牌,否则,弃置摸到的牌。继续下一-张摸牌

C.当所有花色的牌均为3张时结束摸牌。然后按花色编号从小到大展示摸到的卡牌

例如:在某次摸牌后的卡牌如下表所示:

花色

黑桃

红桃

梅花

方块

序号

1

2

3

4

5

6

7

8

9

10

11

12

点数

7

5

12

11

3

8

7

5

 

8

5

3

1)当下一次摸到“黑桃4”的牌时,4小于已摸到的[7,5,12],弃置摸到的牌,继续摸牌

2)当摸到“红桃9”的牌时,9大于已摸到的[11,3,8]的最小值3,红桃更新为[11,9,8],继续摸牌

3)当摸到“梅花9”的牌时,梅花点数更新为[7,5,9],达到所有花色的牌均为3张的目标,结束摸牌。

模拟此过程编写VB程序,程序运行界面如下图,单击“展示摸到的卡牌”按钮开始摸牌,满足条件时,在列表框中展示摸到的卡牌。

  1. (1) 在如表中所示卡牌状态下,连续2次攒牌为“方块4”,“方块7”后,方块卡牌点数更新为(填点数,逗号分隔)
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适代码。

    Const n = 52

    Dim hs(1 To n) As Integer'存储每张卡牌的花色

    Dim num(1 To n) As Integer'存储每张卡牌的点数

    Din class(1 To 4) As Integer '存储每种花色卡牌的存储位置

    Dim record(1 To 12) As Integer

    Private Sub Form _Load()

        '读取打乱的卡牌中每张卡牌的花色、点数数据,存入数组hs, num中,代码略

    End Sub

    Private Sub Command1_ _Click()

        Dim k As Integer, i As Integer, P As Integer

        Dim flag As Boolean

        flag = True

        For i=1 To 4

            class(i) =     '计算每种花色卡牌存储的起始位置

        Next i

        i=1

        Do while i<=n And flag=True

            k = hs(i)

            If class(k) > k* 3 Then

                p = pos(i)

                If p < 0 Then

                    

                End If

            Else

                record(class(k)) = i

                class(k) = class(k) + 1

                If class() =4 And class(2) =7 And class(3)=10 And clas(4)= 13 Then

                    flag= False

                End If

            End If

            i=i+1

        Loop

        List1.AddItem “”&“花色”&“”&“点数”

        For i =1 To 12

            List1. AddItem“”& hs(record(i)) &“”& num(record(i))

        Next i

    End Sub

    Function pos(t As Integer) As Integer    '返回点数最小卡牌位置

        Dim min As Integer

        m= (hs(t)-1)*3+1

        min= m

        If num(record(min)) > num(record(m+ 1)) Then min=m+ 1

        If num (record(min)) > num(record(m+ 2)) Then min=m+ 2

        If  Then

            pos= 0

        Else

            pos=min

        End If

    End Function

设有n盏灯,放在一排。从1到n依次顺序编号。有n个人也从1 到n依次编号。第1 个人(1号)将灯全部关闭,第2 个人(2号)将2 的倍数的灯打开,第3个人(3号)将编号为3 的倍数的灯做相反处理(该灯如果已打开,则将它关闭;如为关闭则将它打开),以后的人和3号一样,将编号为自己号数倍数的灯做相反处理。问当n个人操作后,哪几盏灯是亮的(亮灯为0,关闭为1)。程序代码如下:

Private Sub Command1_Click()

    Const n = 20

    Dim i As Integer, j As Integer

    Dim a(1 To n) As Integer

    For j = 1 To n

        a(j) = 0

    Next j

    For i = 1 To n

        For j = 1 To n

            Ifthen

               

            End If

        Next j

    Next i

    For j = 1 To n

        If a(j) = 0 Then list1.AddItem Str(j)

    Next j

End Sub

为了实现程序该功能,在画线处填写正确代码。

小明有 n 个桃子,吃完后每三个桃核可以换一个桃子,计算小明总共能吃到几个桃子。
  1. (1) 若小明总共有7个桃子,则他最后可以吃到个桃子。
  2. (2) 部分伪代码如下所示,下列加框处有误,请修改伪代码中的错误。

    输入桃子数量n

    count←n

    while    

    count = count + n // 3

      

    输出("小明总共能吃到:", count, "个桃子")

有如下程序段

X=2

For i = 1 to 10 step 2

    x=x+i

Next i

运行程序后,X的值是(    )

A . 26 B . 27 C . 38 D . 57
下面代码的输出结果是(     )

for i in range(1,5):

  print(‘#’*i)

A . B . C . D .
简易加法器:小王用VB编写了一个简易加法器,其功能如下:在文本框Text1中输入数字,中间用“,”隔开,单击“计算”命令按钮Command1后,其计算结果输出在标签框label1中。运行界面如图所示,VB程序代码如下,请回答以下问题。

  1. (1) 观察代码,可知“计算”命令按钮的对象名为 。
  2. (2) 请在画线处填入合适的代码。

    Private Sub Com_ Click()   

        Dimi As Integer, j As Integer, ans As Integer

        Dim ch As String, s As String

        s= Text1.Text

        ans=0: j= 1

        For i=1 To Len(s)

            

            If ch=“,”Then

                ans=ans+Val(Mid(s, j, i-j))

                j=

            End If

        Next i

        Label1.Caption=“计算结果是:”+Str( ans)

    End Sub

  3. (3) 运行该程序,在文本框中输入“21,5,3”,则计算结果(值)是
有如下VB程序段:

Dim k As Integer, s As Integer

k = 0: s = 0

Do While k >= 10

  k = k + 1

  s = s + k

Loop

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

A . 0 B . C . 10 D . 11
有如下VB程序段:

For i=1 To 9 step 2

  b(a(i) Mod 10) = b(a(i) Mod 10)+1

Next i

s =0

For i=0 To 9 step 3

  s =s+ b(i)

Next i

数组b各元素初始值为0,数组元素a(1)到a(9)的值依次为“29,74,12,38,16,45,21,57,33”,则执行该程序段后,s的值为(     )

A . 5 B . 4 C . 3 D . 2
小球由5米高度自由落体运动,不考虑空气阻力,每次落地后反弹回原高度的一半,重复这个过程,理论上永远不会停止。求它在第10次落地时,共经过多少米?

程序代码如下:

请补全程序:

下列关于Python循环语句的说法错误的是(    )
A . for循环一般用于循环次数已知的情况 B . for循环和while循环不能相互嵌套 C . 循环语句的结束条件设置不合理会造成无限循环 D . 所有的for循环都可以用while循环改写
最近更新