4.4.1 for循环的应用 知识点题库

由“For i in range(1,1001)”决定的循环结构被执行(    )次。
A . i B . 100 C . 1000 D . 1001
下面的程序段运行后的结果为

s=0

for i in range(1,8,3):

  s=s+i

print(s)

在“抗击疫情,‘宅’出精彩”征文活动中,每位选手可以提交一篇作品。活动以互评的形式展开:每位选手对m篇作品进行打分(本人作品回避),方法如下:

① 用1-n数字代表n个作品,打乱顺序后分配给n个选手。分配方案保存在数组a中,如图a存储了两组分配方案(n=5)。在第一个分配方案中把4号作品分配给1号参赛者,1号作品分配给2号参赛者(选手编号与序号错开)……。

②分配方案的形成方法: 将1~n之间的随机数字依次放到第1个位置、第2个位置……,随机数不能与位置号相同,并且要防止分配冲突,如前三个分配序号是“2 3 4”,那么在第4位上只能放“5”(如放“1”会导致第5个位置没有符合要求的数字,因此位置n-1需要判断数“n”是否已经分配,如果未分配,位置n-1放置数“n”),最终方案“2 3 4 5 1”。

③评m个作品需要m个分配方案。方案间要避免同一个人拿到重复的作品。如第16题图a第3行上的数据“5 1 2 3 4”不符合要求,因为会使第2号选手重复拿到1号作品。

小明依据上述方法设计了VB程序,功能如下:在文本框Text1和Text2分别输入参赛人数和每人打分的作品数量,单击“分配”按钮Command1,在列表框List1中输出结果。程序运行效果如图b所示。

请回答下列问题:

  1. (1) n=5,m=3,a(1)~a(10)中的数据如图a所示,a(11)~a(15)的数据可能是(单选,填字母:A . 5 4 3 1 2/B . 5 4 1 3 2/C . 3 4 5 1 2)
  2. (2) 请在划线处填入合适的代码。

    Dim n As Integer   '总人数/总作品数

    Dim m As Integer   '每人分配篇数

    Dim a(1 To 500) As Integer  '数组a大小满足处理要求

    Dim c(1 To 100) As Integer  '数组c大小满足处理要求

    Private Sub Command1_Click()

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

      n = Val(Text1.Text): m = Val(Text2.Text)

      Randomize

      i = 1

      Do While i <= m

        For j = 1 To n

          c(j) = 0         '本轮分配方案中还没有数字j, c(j)=0,否则c(j)=1

        Next j

        For j = 1 To n

          If j = n - 1 And c(n) = 0 Then

                ①   

          Else

            k = r(n, j)

          End If

          a((i - 1) * n + j) = k           '分配数字k到当前方案的第j个位置上

          c(k) = 1

        Next j

        If    ②     Then i = i + 1

      Loop

      s = ""

      For i = 1 To n

        s = "参赛者" & i & ":"

        For j = 1 To m

          s = s + Str(a((j - 1) * n + i))+ ","

        Next j

        List1.AddItem s

        s = ""

      Next i

    End Sub

    Function r(x As Integer, y As Integer) As Integer 

    '生成一个取值在[1,x]之间,可以放在y位置上的随机数,满足条件r<>y andc(r)=0

    End Function

    Function check(c As Integer) As Boolean

    '本轮方案和前面几次的分配方案比较,如果有人分到了重复作品,返回FALSE

      Dim p As Integer, f As Boolean

      f = True

      p = 1

      For i = 1 To c * n

        If   ③     Then

          f = False: Exit For

        End If

        p = p mod n +1

      Next i

      check = f

    End Function

     ② ③ 

一个n×n矩阵的主对角线(从左上到右下的对角线)上各个元素的总和称为这个矩阵的迹。一个矩阵转置后,新矩阵的迹和原矩阵的相等。

以3×3数据块为例,原矩阵和转置矩阵的结果如图所示。

小明发现对这个矩阵进行转置后,主对角线上的数字没有发生变化,所以决定编写VB程序随机生成一个n×n的矩降再试一下。程序实现的功能如下:在文本框Text1中输入整数n(2≤n≤10),单击“生成矩阵”按钮Command1,生成n2个10到99之间(包含10和99)的随机整数,并以n行、n列矩阵的形式显示在列表框List1中,将转置后的矩阵也显示在List1中。再单击“主对角线”按钮Command2,则在标签Label1中输出两矩阵主对角线上的元素,运行界面如图所示,程序代码如下,请在画线处填入合适的代码。

Const max=100

Dim n As Integer

Dim a(1 To max)As Integer

Dim b(1 To max)As Integer

Private Sub Command1_Click( )

  n=Val(Text1.Text)

  For i=1 To n*n

    a(i)=    ①   

  Next i

  p=1

  For i=1 To n*n

    b(i)=a(p)

    If i Mod n=0 Then

      p=p-n*(n-1)+1

    Else

         ②  

    End If

  Next i

  List1.Clear

  List1. AddItem Str(n)+"*"+Str(n)+"方阵”

  Call Output(a( ))

  List1.AddItem"转置矩阵"

  Call Output(b( ))

End Sub

Private Sub Command2_Click( )

  Label1.Caption="原矩阵":L.abel2.Caption="转置矩阵"

  For i=1 To n

    Label1.Caption=Label1.Caption & Str(a(i+(i-1)*n))

    Label2.Caption=label2.Caption & Str(b(i+(i-1)*n))

  Next i

End Sub

Sub Output(a()As Integer)

Dim line As String

line=""

For i=1 To n*n

    If i>1 And i Mod n=1 Then

      List1. AddItem line

      line=Str(a(i))

    Else

         ③  

    End If

  Next i

  List1. AddItem line

End Sub

以上程序段运行时,为了实现上述功能,画线处应填入的代码分别为:①;②;③

以下程序中,单击按钮“Command1”后,在Text1中随机生成了由数字0~9组成的20位随机数字。

同时,在Text2中对该数字进行“加密”,加密规则为:对于每一位数字,加上5,结果保留个位。程序运行界面如图所示。

  1. (1) 若要将按钮上的文本修改为“转换”,则应修改Command1对象上的属性。
  2. (2) 实现以上功能的VB程序如下,请在画线处填入合适的代码。

    Private Sub Command1_Click( )

        Dim s1 As String, s2 As String, c As String

        Dimi As Integer, s As Integer

        For i=1 To 20

            s1=s1+   ①   

        Next i

        Text1. Text=s1

        For i=1 To 20

            c=Mid(s1, i, 1)

            s=    ②   

            s2=s2 & s

        Next i

        Text2. Text=s2

    End Sub

    以上程序段运行时,为了实现上述功能,画线处应填入的代码分别为:①;②

  3. (3) 若此程序仅生成4位数字7894,其他规则不变,则输出的结果为
如果我国人口每年以平均1.5%的速度增长,问多少年后我国人口达到或超过15亿?设现在人口为12.3亿。在此题中可以用(   )选项补充代码解决问题。(x代表年,p代表人口)

图片_x0020_100011

A . 图片_x0020_100012 B . 图片_x0020_100013 C . 图片_x0020_100014 D . 以上都不正确
卡普利加数又称雷劈数,是指将该数的平方数拆分成两部分,若这两部分的和与该数相等,则该数为卡普利加数。小陈编写VB程序,实现功能:文本框Text1输入一个正整数,单击“判断”按钮,在标签Label2中显示该数的平方,如果该数是卡普利加数,在标签Label3中显示两数和相加的等式,否则显示“该数不是卡普利加数”。运行界面如下图所示:

  1. (1) “判断”按钮的对象名为
  2. (2) 请在划线处填入合适的代码。

    Private Sub Judge_Click( )

        Dim x As Integer, i As Integer

        Dim y As Long, flag As Boolean

        flag = False

        x = Val(Text1.Text)

        i = 10

       

        Label2.Caption = "该数的平方是:" + Str(y)

        Do While y \ i > 0 And flag = False

            t1 = y \ i

            t2 = y Mod i

            If  Then

                flag = True

                Label3.Caption = Str(t1) + "+" + Str(t2) + " = " + Str(x)"

            End If

            i =

        Loop

        If Not flag Then Label3.Caption = "该数不是卡普利加数"

    End Sub

  3. (3) 已知55是卡普利加数,根据以上程序,在文本框Text1中输入55,则标签Label3中显示的表达式是:
某垃圾分类VB程序功能如下:在文本框Text1中输入一串字符(数据用逗号分隔,以逗号结尾),单击“统计”按钮Cmd1后,程序实现计算干、湿垃圾的重量及总重量(单位:斤)。输入字符串中的前后两个数字字符为一组,第一个数字字符代表垃圾种类,1表示干垃圾,2表示湿垃圾,第二个数字字符代表该垃圾的重量。例如:输入字符串“2,1,1,12,”,程序统计结果为干垃圾12斤,湿垃圾1斤,总重量13斤。程序运行界面如图所示。

  1. (1) Cmd1对象属于类(单选,填字母:A .Form / B .Label / C .TextBox / D .CommandButton)
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Private Sub Cmd1_Click()

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

        Dim k As Integer, bh As Integer, w As Integer

        Dim w1 As Integer, w2 As Integer

        s = Text1.Text: k = 1: t = 0: bh = 0      'bh存储当前垃圾的垃圾编号

        w1 = 0: w2 = 0

        For i = 1 To Len(s) s1 = Mid(s, i, 1)

            If  Then

                t = t * 10 + Val(s1)

            Else

                If Then

                    bh = t

                Else

                    If bh = 1 Then

                        w1 = w1 + t

                    Else

                        w2 = w2 + t

                    End If

                   

                End If

                k = k + 1

               

            End If

        Next i

        List1.AddItem "干垃圾共" + Str(w1) + "斤"

        List1.AddItem "湿垃圾共" + Str(w2) + "斤"

        Label3.Caption = "总重量共有" + Str(w) + "斤"

    End Sub

  3. (3) 程序中加框处代码有错,请改正。
以下程序要求输出偶数,则在方框处的语句为(    )

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
某加密算法的加密程序段如下:

def enpwd(msg, key):

    size = len(msg)

    result= [ ]

    for i in range(key):

        t=i

        while t<size:

            result.append(msg[t])

            t+=key

    return".join(result)

msg = input('请输入待加密的明文:')

key = int(input('请输入密钥:'))

pwd = enpwd(msg, key)

print(pwd)

  1. (1) 如果输入的msg为“12345678”, key为“3”,那么输出的结果为
  2. (2) 这种加密机制称为(选填:“替代密码”“换位密码”或“简单异或密码”)。
小李编写了一个程序,用以实现下列功能:在文本框Text1中一个十进制数,在文本框Text2中输入需转换数的进制(小于等于16),点击转换按钮,在文本框Text3中输出转换后的数字;点击“退出”按钮,关闭程序。程序运行界面如下图所示:

  1. (1) 根据题目意思,应该在编辑界面将对象“command2”的属性改为“退出”。
  2. (2) 为实现上述功能,请在划线处填入合适的代码。

    Private Sub Command1_Click()

        Dim x As Long

        Dim y As Integer

        x = Val(Text1.Text)

        y =

        Text3.Text =

    End Sub

    Function trans(n As Long, b As Integer) As String

        Dim hex As String

        hex = "0123456789ABCDEF"

        Do while n<>0

            r = n Mod b

            n = n \ b

            trans = + trans

        Loop

    End Function

    Private Sub Command2_Click()

    End Sub

下列Python程序段运行的结果是(     )。

i=0

sum=0

while i<10:

    if i%3==0:

        sum+=i

    i+=1

print("sum=",sum)

A . sum=9 B . sum=10 C . sum=18 D . sum=19
(最大公约数)用辗转相除法求两个正整数的最大公约数。

代码如下:

def gcd (m,n):

r= 

while r!=0:

m=n

n=

return

a=int(input(‘请输入a的值:’))

b=int(input(‘请输入b的值:’))

print(‘最大公约数是:’)

有如下VB程序段:

'给a(1)到a(6)各元素赋初值,代码略

For i= 1 To 6

    If i Mod 2<>0 Then

      If a(i) Mod 10> 5 Then

          a(i)= a(i)\ 10

      Else

         a(i)= a(i) Mod 10

      End If

    Else

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

    End If

Next i

程序运行后a(1)到a(6)的值分别是2,3,4,5,0,1,则a(1)到a(6)各元素的初始值可能是(      )

A . 26,1,4,2,8,3 B . 12,1,14,2,11,3 C . 15,1,2,3,4,5 D . 29,1,40,2,3,30
某班级(人数不超过40人)参加合唱比赛,需要整理队形。先将所有人按身高升序排好,再将人数每10人排成1排,每排中间低两边高。

编写VB程序,依据上述要求排队。运行程序,在列表框 List1中显示了排序前的人员身高,单击“排序”按钮Command1后,在列表框List2中显示身高升序排序结果,再单击“站位”按钮Command2后,按10人一排站好,结果显示在列表框List3中。界面如图所示。

Dim h(0 To 40) As Integer         '学生身高

Dim n As Integer

Private Sub Form_Load()

    '从数据库中读取身高,共n条记录,存入h数组中,代码略

End Sub

Private Sub Command1_Click()

    For i =2 To n

        h1 = h(i): j = i – 1

        Do While

            j = j - 1

        Loop

        For k = i To j +2 Step -1

            h(k) = h(k - 1)

        Next k

           ①  

    Next i

    '在列表框 List2中输出排序结果,代码略

End Sub

Private Sub Command2_Click()

    '按人数每10人一排

    Dim x As Integer

    x = n \ 10

    For i =1 To x

        Call fenpai(   ②   )      '过程fenpai作用:将人员按中间低两边高排好,代码略

    Next i

    If n Mod 10 >0 Then Call fenpai(x * 10 + 1, n)

    '将站位结果输出在列表框 List3 中,代码略

End Sub

  1. (1) 下列对象中,不具有Caption 属性的是(单选,填字母:A . Command1 / B .Form1 / C .List1 / D .Label1)。
  2. (2) 请将划线处补充完整

     ② 

  3. (3) 加框处代码有错误,请改正
下面代码的输出结果是(     )

for i in range(1,5):

  print(‘#’*i)

A . B . C . D .
有如下Python程序段:

a = [2,1,3,4,5]

c = 0

for i in range(2,len(a)):

if a[i-2] + a[i-1] == a[i]:

c = c + 1

print(c)

该程序段运行后,最后输出的内容是(    )

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

s="aabbccabc"

st=s[1]

for i in range(1,len(s)):

    if len(st)==0 or s[i]!=st[len(st)-1]:

        st=st+s[i]

    else:

        st=st[0:len(st)-1]

print(st)

运行该段代码后,输出结果为(     )

A . abc B . abcabc C . ababc D . aabbc
有如下VB程序段:

Dim a(1 To 5) As Integer .

a(1)= 1

For i=2 To 5

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

    If a(i) Mod 2=1 Then

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

    ElseIf i mod 2=0 then

        a(i)=a(i) /2

    End If

Next i

执行程序后,a数组各元素不可能是(     )

A . 1,8,11,20,2 B . 1,4,2,11,4 C . 1,1,8,17,6 D . 1,4,7,6,8
求和:S=1+3+5+7+……+99.

LET S=0

FOR I=1 TO 99 STEP 2

  S=S+I

NEXT I

PRINT "S=";

END

最近更新