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

while循环编程关键点首先考虑,再考虑执行循环的条件,由于while循环的次数,如果需要借用循环次数信息,必须在代码中增加,并通过语句修改计数器的值。
阅读下列程序,写出运行结果

Dim a(10) as Integer

Dim i As Integer

Dim s As Integer

For i=1 to 5

  a(i)=i*1

Next i

s=a(3)+a(4)

Print s

上述程序运行后,变量s的值是 。

在Python中,下列代码循环的次数是(   )

for i in range(2,5):

  print(i)

A . 2 B . 3 C . 4 D . 5
有如下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
已知s的初值为0,下列程序段执行后,s的值为(  )

s=0

For i=1 To 2

    For j=6 To 1 Step-2.

      s=s+1

    Nextj

Next i

A . 12 B . 8 C . 6 D . 4
有如下VB程序:

Private Sub Command1_Click( )

  Dim a(0 To 4)As Integer

  Dim i As Integer

  a(4)=Val(Text1.Text)

  For i=3 To 1 Step-1

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

  Next i

  Text1.Text=Str(a(i+1))

End Sub

在文本框Text1中输入“128”,连续单击2次按钮Command1后,文本框Text1中显示的内容是(  )

A . 2 B . 8 C . 16 D . 32
求1-2+3-4+5 ... 99的所有数的和。
有如下VB程序段:

Dim i As Integer

Dim c As String, s As String, t As String

s = "2021 PYthon": t = ""

For i = 1 To Len(s)

    c = Mid(s, i, 1)

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

        t = t + c

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

        t = c + t

    End If

Next i

Text1.Text = t

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

A . 2021thon B . 1202thon C . thon1202 D . noht1202
在一千多年前的《孙子算经》中,有这样一道算术题:“今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?” 。即一个数除以3余2,除以5余3,除以7余2,求这个数。阅读下列程序代码。

i=0

while (①):

    i=i+1

print(i)

在①处填写表达式,下列选择正桷的是(   )

A . i%3!=2 and i%5!=3 and i%7!=2 B . i%3!=2 or i%5!=3 or i%7!=2 C . i%3==2 or i%5==3 or i%7==2 D . 以上都不对
从前有一只九尾狐叫小九,他拥有超高的智商,喜欢数学推理。最近他喜欢上了利用约瑟夫环玩推理纸牌的游戏。即给定n张环形排列的纸牌,选定最小的一张牌为起始位置。第一次取第1张牌(起始位置的纸牌),第二次间隔1张取第3张纸牌,第三次

间隔2张取第6张纸牌,……直到取完为止(如果取的位置超过n,重新从1位置取)。如果有4张纸牌,那么取的纸牌编号依次为1,3,4,2。同样,可以知道每张纸牌的被取走的顺序如下表。

序号

1

2

3

4

1

轮次

1

2

1

3

1

4

1

2

轮次

2                     2

2

4

2

3

轮次

3

2

3

4

轮次

4

纸牌被取走顺序也可以理解为纸牌存留的轮次。每次取走一张纸牌后,下一轮第一张纸牌编号为该纸牌的后一张。上述例子中3第二个被取,留存轮次2,下一轮的第一张纸牌为4,剩下的纸牌留存轮次增加。

现在,只要给小九纸牌的数量n,他能通过逆推法快速地计算出取的纸牌编号顺序,方法如下(以n=4为例):

逆推得到的纸牌顺序

1

4

2

3

最终得到的纸牌编号

1

2

3

4

即在第i轮,上一轮纸牌轮次加1,并在后面增加一张轮次为1的纸牌。然后将轮次为1放在最前的位置,最后整体循环向右移动n-i次。直到n轮后,可知每张纸牌被取走的顺序,根据此顺序,得到每次取走纸牌的编号。

轮次

数组

1    2    3    4

1

a(1)=1

1

2

①前一轮所有值加1

②第二位增加数值1

③将轮次为1的数放在最前

④整体右移动2位

2

2    1

1    2

1    2

3

①前一轮所有值加1

②第三位增加数值1

③将轮次为1的数放在最前

④整体右移动1位

2    3

2    3    1

1    2    3

3    1    2

4

①前一轮所有值加1

②第四位增加数值1

③将轮次为1的数放在最前

④整体右移动0位

4    2    3

4    2    3

1    4    2

1    4    2

根据以上算法小九编写了如下VB程序,请回答下列问题。

  1. (1) 由题意可知,当n的值为6时,1~6张纸牌被取走顺序为
  2. (2) 请在划线处填入合适的代码。

    Dim n As Integer

    Dim a(1 To 100) As Integer

    Private Sub Command1_Click()

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

        Dim ans As String, x As Integer

        n = Val (Text1. Text)

        a(1) = 1

        For i=2 To n

            For j=1 To i-1

                

            Next j

            j=i

            Do While j>1

                a(j)=a(j-1)

                j=j-1

            Loop

            a(1) = 1

            For j=1 Ton - i

                k = a(1)

                

                a(x) = k

            Next j

        Next i

        ans =“”

        For i=1 Ton

            ans = ans + Str(a(i))

        Next i

        Label1. Caption =“序列为:”+ ans

    End Sub

    Function yd(i As Integer) As Integer

        Dim j As Integer, tmp As Integer

        For j=i To 2 Step -1

            tmp=j+1

            If tmp > i Then

            a (tmp) = a(j)

        Next j

        yd=j+1

    End Function

在一次比赛中,需要随机给10名选手各编一个0~9范围内的唯一序号,对应的Python程序段如下:

____

a,b=[0]*10,[False]*10

i=0

while i<=9:

  ____

  if not b[r]:

    a[i]=r

    ____

  i=i+1

print(a)

则划线处的代码依次是(        )

① r=random.randint(0,10)

② b[r]=True

③import random

④ b[i]=True

⑤from random import randint

⑥ r=random.randint(0,9)

A . ⑤①② B . ⑤⑥④ C . ③①④ D . ③⑥②
  在计算机系统中,数值一律用补码来表示和存储。求负整数(-1~-127)的补码是将该数对应的正数转换为二进制数(不足8位时高位补0),最高位作为符号位为1,其余每位二进制数取反(1变成0,0变成1),末位加1。小明编写了Python程序,实现求负整数的补码。程序运行界面如图所示。Python程序代码如下所示,请回答下列问题:

  1. (1) 根据题意,-18的补码为
  2. (2) 将划线处代码补充完整。

    num =   

    a = [0] * 8

    for i in range(7,0,-1): 

        a[i] =          #求反码

        num  = num // 2

    a[0],i = 1 ,7

    a[i] = a[i] + 1         #末位加 1

    while    and i > 0:

        a[i] = 0

       

        i -=  1

    s = ""

    for i in a:

        s = s + str(i)

    print(s)

模拟某新型病毒传播的过程,已知有n*n个格子(1<=n<=10),某天其中某些格子由于不知名原因感染了病毒,开始影响周围的格子。传染原理如图a所示:

某3行3列的格子初始状态如图a所示,1表示异常(由于不知名原因感染了病毒且具有传染性),0表示正常。除了边上一圈的格子,每个格子周围有8个格子,第一天某正常格子周围超过半数格子异常,则该格子第二天就会变异常,并且带有传染性。传染过程如图b所示,矩阵中1、2、3、4分别表示该格子第1天、第2天、第3天、第4天被感染,0表示未被感染。可以看出该矩阵格子第4天全部被感染。

编写VB程序,运行程序后,在Text1中输入矩阵规模(不超过10),单击“初始化”命令按钮,在List1中输出第一天所有格子的状态,单击“传播”命令按钮,在List2中输出所有格子的最终状态,并在Label2中输出第几天全部被感染或者“不会被全部感染”。

程序运行界面如图c所示。

  1. (1) 已知第一天所有格子状态如图d所示,则第天所有格子全部被感染。

  2. (2) 实现上述功能程序代码如下,完善划线处语句。

    Dim a(1 To 100) As Integer '存放格子状态

    Dim b(1 To 100) As Integer '辅助作用

    Dim zc(1 To 10000) As Integer '记录每一天的正常格子数

    Dim n As Integer '存放矩阵规模

    Private Sub Command1_Click()

        Dim i As Integer, j As Integer, s As String

        List1.Clear

        n = Val(Text1.Text)

        For i = 1 To n

            s = ""

            For j = 1 To n

                a((i - 1) * n + j) = Int(Rnd() * 2)

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

                If a((i - 1) * n + j) = 0 Then

            Next j

            List1.AddItem s

        Next i

    End Sub

    Private Sub Command2_Click()

        Dim i As Integer, j As Integer, tian As Integer, flag As Boolean

        List2.Clear

        '下面代码实现病毒传染过程

        tian = 1: flag = False

        Do While zc(tian) > 0

            tian = tian + 1

            For i = 1 To n * n

                If a(i) = 0 Then

                    If Then b(i) = tian

                Else

                    b(i) = a(i)

                End If

            Next i

            For i = 1 To n * n

                If b(i) = 0 Then zc(tian) = zc(tian) + 1

                a(i) = b(i)

            Next i

            If Then flag = True: Exit Do

        Loop

        '在List2中输出所有格子的最终状态,代码略。

        If flag Then

            Label2.Caption = "不会被全部感染"

        Else

            Label2.Caption = "第" + Str(tian) + "天全部被感染"

        End If

    End Sub

    'Judge函数用来判断第i行第j列的格子周围的异常格子数是否超过半数,超过半数返回True

    Function Judge(i As Integer, j As Integer) As Boolean

        '代码略

    End Function

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

PRIVATE SUB FORM_CLICK( )

S=1

FOR I = 1 TO 5

    S=S*I

NEXT I

PRINT S,I

END SUB

A . 15    6 B . 120    6 C . 15     5 D . 120     5
某次测试的excel文件成绩表如图1所示。

图1

  1. (1) 已知有200名同学参加了本次测试。小明想把全体同学的信息平均分放在D202单元格,那么在D202单元格输入的公式为
  2. (2) 现在要求用python增加“总分”列数据,然后求每个班总分的平均分(如图图2),最后绘制每班总分平均分的垂直柱形图(如图3)。请在程序①②选择合适的代码

    图2

    图3

    import pandas as pd

    import matplotlib.pyplot as plt

    #图表中文显示处理,代码略

    df=pd.read_excel("test.xlsx")

    score=[]

    for i in df.values:

      js=   ①            #①处请选择  (填字母):A . df["信息"]+ df["通用"] / B . i[3]+i[4]

      score.append(js)

      df["总分"]=score

      df1=df.groupby("班级",as_index=False) ["总分"].mean()

      plt.title("期中技术平均分")

      plt.   ②   (df1["班级"],df1["总分"],width=0.5)        #②处请选择   (填字母):A . plot / B . bar /C . scatter

有如下VB程序段:

Dim s As String, i As Integer

Dim c As String, s1 As String

s =“Visual_ Basic_ 2018”

s1=“”

For i=1 To Len(s) Step2

    c = Mid(s, i, 1)

    If c>=“a”Andc<=“z” Then

        s1=c+s1

    End If

Next i

Text1. Text = s1

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

A . sai B . iaas C . isa D . Saai
阅读下图程序,分析程序意义,写出运行结果。

程序运行后,依次输入:12 35 9 11 23 88 13 19 29 55

运行结果是:

素数只能被1和它本身整除,不能被其他自然数整除。编写Python程序实现如下功能随机产生一个三位数,并判断其是否为素数。
  1. (1) 若随机产生的三位数为593,则输出
  2. (2) 实现上述功能的Python程序如下,请在划线处填写合适的代码。

    import random

    a=     #随机产生三位正整数

    flag=True

    for i in range():

      if a%i==0:

        flag=False

         

    if flag:

      print(a,"是素数")

    else:

      print(a,"不是素数")

  3. (3) 以下选项中,与表达式“a % i == 0”等价的是(   )(单选,填字母)。
    A .   a // i == int(a / i) B . a // i == a / i C . a % i == a // i
输入一个字符串S1S2S3…Sn,按如下过程操作:取出第一个字符S1,将第二个字符S2放到字符串的末尾Sn后面,得到字符串S3…SnS2;接着将S3取出,S4放到字符串的末尾S2后面……直到最后一个字符Sn被取出。这些字符按取出的顺序形成一个新的字符串,

输出该新字符串,实现相应功能的Python程序段如下:

s=input("请输入字符串:")

que = [""] * 100                  #该空队列可以满足需要

head = 0

tail = 0

for i in range(   ①   ):          #原字符串全部字符依次入队

  que[tail] = s[i]

  tail+=1

  print("加密后的串为: ")

while head < tail:               #队列非空时

print(que[head], end="")

  ②  

if head < tail:                      #队列非空时,出队的元素加入队尾

    ③  

  tail+=1

head+=1

上述程序段3个方框处的代码分别为(    )

A . ①len(s) + 1 ②head+=1 ③que[tail] = que[head] B . ①len(s) + 1 ②tail+=1 ③que[head] = que[tail] C . ①len(s) ②head+=1 ③que[tail] = que[head] D . ①len(s) ②tail+=1 ③que[head] = que[tail]
运行下面的程序段后得到的结果为(    )

A . 12 B . 14 C . 28 D . 36
最近更新