4.4.3 循环嵌套的应用 知识点题库

现有n*n大小的网格(n≤10),每个格子从左到右、从上到下编号依次编号为1、2、3„„n*n,当n为3时,网格如图a所示。网格中每个格子都有一面沿对角线方向放置的挡板,且朝向随机。现将一个小球从左上角1号格子自上而下射入网格,则小球将在网格中不断反弹(不考虑实际的能量损失与重力影响等因素),最终从某个格子离开网格,根据挡板的朝向与小球的运动方向,将有几种不同的反弹情况。如图b所示,小球进入网格后,先后经过1、2、5、6、3号格子,之后离开网格。

编写VB程序,功能如下:在文本框Text1中输入n的值,单击“生成”按钮Command1,

生成网格和随机的挡板,并输出。然后单击“开始”按钮Command2,在文本框Text2中显示小球进入网格后的运动路径。程序中利用数组a存储网格的状态,其中“/”与“\”两种字符表示两种朝向的挡板。程序运行界面如图c所示。


图 c

请回答下列问题:

  1. (1) 要使程序运行时,窗体标题显示“网格弹球”,可在Form_Load 事件过程中添加语句(单选,填字母:A . Form1 = "网格弹球" / B . Forml.Text="网格弹球"/ C . Form1.Caption="网格弹球")。
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Dim n As Integer

    Dim a(0 To 100) As String

    Private Sub Command1_Click()      '生成网格和挡板

    n = Val(Text1.Text)

    '生成 n*n 的网格和随机的挡板,并通过图形控件输出,代码略

    End Sub

    Private Sub Command2_Click()

    Dim ans As String, pre As String

    Dim cur As Integer

    cur = 1:  : ans = ""

    Do While cur >= 1 And cur <= n * n

     ans = ans + Str(cur) + "→"

    If pre = "左" And a(cur) = "\" Or pre = "右" And a(cur) = "/" Then

     cur = cur + n: pre = "上"

     ElseIf  Then

     cur = cur - n: pre = "下"

    ElseIf pre = "上" And a(cur) = "\" Or pre = "下" And a(cur) = "/" Then

     If cur Mod n = 0 Then

     Exit Do

     Else

     cur = cur + 1: pre = "左"

     End If

    ElseIf pre = "上" And a(cur) = "/" Or pre = "下" And a(cur) = "\" Then

     If   Then

     Exit Do

     Else

     cur = cur - 1: pre = "右"

     End If

     End If

    Loop

    Text2.Text = ans + "离开"

    End Sub

  3. (3) 程序中加框处代码有错,请改正。
已知s的初值为0,下列程序段执行后,s的值为(  )

For i=3 To 10

    f=1:k=2

    Do While k<i And f=1

        If i Mod k=0 Then f=0

        k=k+1

    Loop

    s=s+f

Next i

A . 7 B . 5 C . 4 D . 3
有如下VB程序段,该程序段运行后,在文本框中显示的内容是(  )

Dim a(1 To 10)As Integer

Dim i As Integer, j As Integer

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

For i=3 To 5

    a(i)=1

    For j=i-1 To 2 Step-1

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

    Next j

Next i

Text1.Text=Str(a(3))

A . 1 B . 3 C . 4 D . 6
下面代码的输出结果是(     )

for i in range(1,5):

 print(‘#’*i)

A . B . C . D .
编写“字符串生成”的Python程序。程序功能:输入由多个正整数组成的字符串t1(这些正整数以“,”为分割符和结束符),并以这些整数为位置信息,依次从字典内容(t2)中提取相应字符并连接成字符串(s),最后将字符串(s)显示输出。其中,字典内容(2)从文件“dictionary.txt"中读取。

例如:

输入的t1="2,8,15,"

字典内容(t2)从文件“dictionary.txt”中读取的内容为“python is a programming language.”

程序最终输出的字符串(s)为:yio

实现上述功能的某Python程序如下:

f=open('dictionary.txt', 'r')

t1=input('字符位置:')

t2=f.read( )

s=' '

t=' '

for i in range     ①     

    c=t1[i]

    if c==',':

        p=int(t)

        s=s+t2[p-1]

        t="

    else:

           ②     

print(生成内容:',s)

f.close

为了使程序能正确运行,上述程序中划线处的代码分别为:①

以下程序要求输出偶数,则在方框处的语句为(    )

import math

def func(list):

for x in list:

    if  :

        print(x)

A . x%2==0 B . x%2 C . x is even D . x/2
给定一个n正整数(n<=20),根据设定的保留位数,舍去一部分数字,剩下的数字按原次序组成一个最大的新数。例如原数36835132,保留4位,最大数为6532。在文本框Text1输入原数,文本框Text2中输入保留的位数,文本框Text3中输出删除后的最大数。实现上述功能的部分VB代码如下∶

Dim a(1 To 20)As String, ys As String, xs As String

Dim k As Integer, h As Integer, n As Integer, i As Integer, j As Integer

ys=Text1.Text: k=Val(Text2.Text)

n=Len(ys):h=1

For i=1 To n

    a(i)=mid(ys,i,1)

Next i

For i=1 To k

    For j = h To

        If a(j) > a(h) Then

    Next j

    xs=xs + a(h)

    h=h + 1

Next i

Text3.Text=xs

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

①n-k+i   ②i+k   ③n-k+1   ④j=h   ⑤h=j

则方框处语句依次是(    )

A . ③⑤ B . ①⑤ C . ①④ D . ②⑤
模拟图像局部区域处理。随机生成n * n(n≤100,且为偶数)个“0”或“1”字符,将字符按行输出,构成一个n行n列初始矩阵,对该矩阵中的m行m列子矩阵(与初始矩阵同中心)进行水平翻转。例如,当n为8,m为4时,构成初始矩阵如图a所示,将子矩阵进行水平翻转后得到处理结果,如图b所示。

编写程序,实现上述功能:在文本框Text1中输入偶数n,单击“生成”按钮Command1,在列表框List1中显示初始矩阵,在文本框Text2中输入偶数m(2≤m≤ n),单击“处理”按钮Command2,在列表框List2显示处理结果。程序运行界面如图c所示。

请回答下列问题:

  1. (1) 根据程序的运行界面,“处理”是按钮Command2的(单选,填字母:A .对象名/ B .属性名/ C .方法/ D .属性值)。
  2. (2) 请在划线处填入合适的代码。

    Dim n As Integer

    Dim a(1 To 100 * 100) As String

    Private Sub Command1_Click()

        Dim i As Integer

        n = Val(Text1.Text)

        If n <= 100 And n >= 2 And n Mod 2 = 0 Then

            For i = 1 To n * n

                a(i) = Chr()      ‘字符"0"的ASCII码值为48

                '将初始矩阵显示列表框List1中,代码略

            Next i

        Else

            List1.AddItem "输入有误"

        End If

    End Sub

    Private Sub Command2_Click()

        Dim b(1 To 100 * 100) As String, s As String

        Dim m As Integer, y As Integer, i As Integer, R As Integer, C As Integer

        m = Val(Text2.Text)

        If m >= 2 And m <= n And m Mod 2 = 0 Then

            y =

            s = ""

            For i = 1 To n * n

                R = (i - 1) \ n + 1: C = (i - 1) Mod n + 1

                If R <= y Or R > n - y Or C <= y Or C > n - y Then

                    b(i) = a(i)

                Else

                    b(i) =     ‘⑶

                End If

                s = s + b(i)

                If i Mod n = 0 Then

                    List2.AddItem s

                    s = ""

                End If

            Next i

        Else

            List2.AddItem "输入有误"

        End If

    End Sub

  3. (3) 程序中加框处代码有错,请改正。
在BXY中输入代码如图所示。

下载并运行该代码,下列关于代码执行效果描述正确的是(    )

A . 按下micro:bit主板上的按钮A,蜂鸣器发出的声音时长会增加 B . 按下micro:bit主板上的按钮B,蜂鸣器发出的声音频率会降低 C . 不按micro:bit主板上的按钮B,蜂鸣器发出的声音时长和频率都不变 D . 不按micro:bit主板上的按钮A,蜂鸣器发出的声音时长和频率都改变
在循环中continue语句的作用是跳出循环的执行。
有如下VB程序段

Dim k As Integer, num As Integer, m As Integer

Dim s As String, ans As String

s =" abcdefghi jk lmnopqrs tuvwxyz "

k=26:ans=””

m = Val(Text1.Text)

Do While m> 0

    x=Int(Rnd()*k)+1

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

    s =Mid(s,1,x-1)+Mid(s,k,1)+Mid(s,x+1,26-x)

    k=k-1:m=m-1

Loop

Text2.Text = ans

文本框Text1中输入4,执行上述程序后,文本框Tex2中有显示的内容不可能为(    )

A . snyg B . tuna C . vmlc D . Amzm
为有效降低机动车污染物排放,持续改善首都空气质量,北京市政府决定自2017年1月9日至2017年4月9日,继续实施工作日(因法定节假日放假调休而调整为上班的星期六、星期日除外)高峰时段区域限行交通管理措施,具体限行尾号如下图所示。

某同学编写程序实现如下功能:程序运行时,在文本框Text1中输人车牌号,单击“判断”按钮 Command1,在文本框Text2中显示限行的工作日。如下图所示,尾号为5,则显示星期二限行。

  1. (1) 程序运行界面中都具有Caption属性的对象个数为
  2. (2) 实现上述功能的VB程序如下,请在画线处填入合适的代码。

    Private Sub Command1_Click()

        Dim s As String, n As Integer, x As String, y As string

        s=Text1. Text

        n=

        y=" "

        For i=n To l Step -1

            x=Mid(s, i,1)

            If Then

                If Val(x) Mod 5=4 Then

                    y="星期一"

                Else If Val(x) Mod 5=0 Then

                    y="星期二"

                Else If Val(x) Mod 5=1 Then

                     y="星期三"

                Else If Val(x) Mod 5=2 Then

                    y="星期四"

                Else

                    y="星期五"

                End If

                Exit For                '退出循环

            End If

        Next i

        Text2. Text=

    End sub

下列有while循环结构的说法不正确的是(      )
A . 执行过程中表达式一般是一个关系表达式或逻辑表达式。 B . While循环格式一般为:While(表达式):语句或者语句组。 C . 表达式为真执行循环体;为假退出循环。 D . 表达式为假执行循环体;为真退出循环。
将长度为奇数的字符串s从首位字符开始依次存入a(1),a(n - 1),a(3),a(n - 3)...。如:字符串“xuankao”分存后得到a(1)=“x”,a(6)=“u”,a(3)=“a”,a(4)=“n”,a(5)=“k”,a(2)= “a”,a(7)= “o”,下列能实现该功能的程序段是(   )
A . For i = 1 To Len(s)

    If I Mod 2= 0 Then

        a(i) = Mid(s, i, 1)

    Else

        a(Len(s) - i + 1) = Mid(s, i, 1)

    End If

Next i

B . For i = 1 To Len(s)

    If i Mod 2= 0 Then

        a(Len(s) - i+1) = Mid(s, i, 1)

    Else

        a(i) = Mid(s, Len(s) - i+1, 1)

    End If

Next i

C . For i = 1 To Len(s)

    If i Mod 2 = 1 Then

        a(i) = Mid(s, i, 1)

    Else

        a(Len(s) - i+1) = Mid(s, i, 1)

    End If

Next i

D . For i= 1 To Len(s)

    If i Mod 2 = 1 Then

        a(i) = Mid(s, i, 1)

    Else

        a(Len(s) - i+1) =Mid(s, Len(s) - i+1, 1)

    End If

Next i

输入正整数n,求0到n所有正整数的和(包括n),如:n=10,则求1+2+3...+10

n=int(input("请输入n的值:"))

s=

for i in range

  s+=i

print(s)

大数据是当今最热门的领域之一,小王同学利用VB设计了一个模拟大数据应用的程序。有10种商品,数组a存储用户是否购买了各种商品;某个用户购买时,商品两两之间是否一起购买用另一个数组dsj来记录;各数组元素的解释如下表所示。

数组元素

数组元素的含义

a(i)

a(1)到a(10)依次存储1号顾客购买商品1~商品10的记录;

a(11)至a(20)依次存储号2顾客购买商品1~商品10的记录;依次类推。

数组a的某个元素的值为1,则表示某位顾客购买了某种商品,若为0则表示没有购买该种商品。如a(6)=1表示1号顾客购买了商品6,a(6)=0表示未购买。

b(i)

dsj(1)~dsj(9)依次存储商品1与商品2~商品10的关联次数;

dsj(10)~dsj(17)依次存储商品2与商品3~商品10的关联次数:依次类推。

如dsj(5)=2表示商品1与商品6被同时购买过2次;

如dsj(45)=4表示商品9与商品10被同时购买过4次。

数组dsj中,若dsj(45)的值最大,则表示商品9和商品10的关联次数最多。

小王按照上述算法设计了VB程序,统计了20个用户购买10种商品之间的关联性,VB程序如下,部分界面如图所示。

Private Sub Cmd1_Click( )

Dim a(1To200) As Integer       '各个用户原始的购买记录

Dim dsj (1To45) As Integer       '统计商品之间的关联次数

Dim i As Integer, t As Integer, nc As Integer, j As Integer, max As Integer

'数组a读入数据并在列表框分行输出,代码略

For i=1 To 20'20个用户

   t=1

   For j=1 To 9'10个商品,共45种组合

      For k=j+1 To 10

         m=(i-1)*10

        

      If Then dsj(t)=dsj(t)+1

                     

      Next k

   Next j

Next i

max=0

For i=1 To 45

   If               Then

      max=dsj(i)

      maxi=i

   End If

Next i

t=9:nc=1

Do While maxi>t

                 

   t=t-1

   nc=nc+1

Loop

Text1.Text="关联最多的是商品"+Str(nc)+Str(maxi+nc)+":"+Str(max)+"次"

End Sub

  1. (1) 将按钮上的文字“统计”修改为“计算”,可在Form_Load过程中使用              (单选,填字母)语句实现;
    A . Cmd1.Caption=“计算” B . Cmd1_Click=“计算” C . Command1.Text=“计算”
  2. (2) 加框处代码有错,请改正;
  3. (3) 在程序划线处填入合适代码,使程序完整。
下面代码运行结果是(     )。

list_num=[1,3,5]

list_str=[str(i) for i in list_num]

print(list_str)

A . [1,3,5] B . ['1',3,5] C . [2,4] D . ['1','3','5']
有如下VB程序段:

s = 0: i = 1

Do While i <= 10

    If i Mod 3 = 0 Then a(i) = a(i) + 1 Else a(i) = i

    List1.AddItem Str(a(i))

    i = i + 1

Loop

i = 10

Do While i >= 1

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

    i = i - 1

Loop

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

A . 3 B . C . 5 D . 9
s= ,其中n为正整数,计算s的VB程序段如下:

s=0:x=2:y=1

For i=1 To n

  

Next i

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

①x=x+y

②y=x

③s=s+x/y

④y=x-y

下列选项中,代码顺序正确的是(    )

A . ③②① B . ③①② C . ③①④ D . ③④①
在语句for i in range(1,10)中循环的的范围是(    )。
A . 1-9 B . 1-10 C . 0-9 D . 0-10
最近更新