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

字符串数组a中a(1)到a(6)的原始数据为57,3,24,34, 6,120,为了对该数组进行排序操作,编写了以下VB程序。

i=2

Do While i<=6

  For j=6 To i+2 Step -2

    If a(j)>a(j-2)Then t=a(j):a(j)=a(j-2):a(j-2)=t

  Next j

  i=i+2

Loop

则程序运行之后,数组元素a(1)和a(2)的值分别是(  )

A . 6    3 B . 57    120 C . 120   57 D . 6    34
小龙同学设计了一个求四则混合运算结果的程序,用于计算不带括号的+、-、*、\的运算,\为整除运算,且此处要求*和\的优先级相同。在表达式中输入待求解的表达式,以=结尾。按下 Command1“计算”按钮后,在标签控件Label1中输出运算结果。程序界面如下图所示:

  1. (1) 在表达式中输入15-22\5*2+7=,则输出的结果
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适代码。

    Function calculate(x As Integer, y As Integer, op As String) As Integer

      If op = "+" Then calculate = x + y

      If op = "-" Then calculate = x - y

      If op = "*" Then calculate = x * y

      If op = "\" Then calculate = x \ y

    End Function

    Function state(op As String) As Integer

      If op = "#" Then state = -1

      If op = "=" Then state = 1

      If op = "+" Then state = 1

      If op = "-" Then state = 1

     

      If op = "*" Then state = 3

    End Function

    Private Sub Command1_Click()

      Dim s As String, length As Integer, t As String Dim k As Integer, q As Integer

      Dim opt(0 To 3) As String Dim i As Integer

      Dim s1 As String

      Dim a(1 To 3) As Integer

      s = Text1.Text

      length = Len(s)

      t = "": k = 0: q = 0: opt(q) = "#"

      For i = 1 To length

        s1 = Mid(s, i, 1)

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

          t = t + s1

        Else

          k = k + 1

          a(k) = Val(t)

          t = ""

          Do While

            a(k - 1) = calculate(a(k - 1), a(k), opt(q))

            k = k - 1

            q= q - 1

          Loop

          q = q + 1

         

          If s1 = "=" Then Label1.Caption = Str(a(1))

        End If

      Next i

    End Sub

小李编写了一个实现字母字符串去重功能的VB程序(只输入大小写字母,大小写字母视为同一字符,只保留第一次出现的字符),运行界面如图所示,程序运行时,在文本框Text1中输入字符串,单击“去重”按钮,将字符串中重复的字符去除,在标签Label1中显示去重之后的结果(已知“a”的ASCⅡ值为97,“A”的ASCIⅡ值为65),实现上述功能的VB程序如下,请回答下列问题:

Private Sub Comand1_Click( )

    Dim s As String, c As String

    Dim t As Integer, I As  Integer

    Dim a(1 To 26)As Integer

    s=Text1.Text

    For i=1 to 26

        a(i)=0

    Next i

    i=1

    Do While i<=Len(s)

        c=Mid(s, i, 1)

        If    ①     Then

            t=Asc(c)-96

        Else

            t=Asc(c)-64

        End If

        If a(t)=0 Then

            a(t)=1

        Else

           

                 ②    

        End If

        i=i+1

    Loop

    Label1.Caption=s

End Sub

  1. (1) 根据代码可知,“去重”按钮的对象名为
  2. (2) 请在划线处填入合适的代码

     ② 

  3. (3) 加框处代码有误,请改正
下面的语句哪个会无限循环下去(    )
A . for a in range(10):     time.sleep(10) B . while 1<10:     time.sleep(10) C . while True:     break D . a = [3,-1,’,’] for i in a[ ]:     if not a :         Break
有如下VB程序段:

s="R255:G122:B221:End"

c=1

For i=1 To Len(s)

    t=Mid(s,i,1)

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

        a(c)=t+a(c)

    Else

        c=c+1

    End If

Next i

已知数组a各元素的初始值均为空字符串,执行该程序段后,字符串122存储在数组(    )中。

A . a(2) B . a(4) C . a(5) D . a(6)
有如下VB程序段:

Dim a(1 To 5) As Integer

Dim i As Integer

Dim j As Integer

Dim s As String

s = ""

For i = 2 To 5

    For j = i To 5

        If j Mod i = 0 Then a(j) =a(j)+1

    Next j

Next i

For i = 1 To 5

    If a(i) <> 1 Then s = Str(i) + s

Next i

Text1.Text = s

若数组a的初始值都为0,则运行该程序段后,Text1中显示的内容为(     )

A . 14 B . 235 C . 532 D . 41
下面这段代码的时间复杂度是(    )

import random

n=int(input("请输入随机数个数n:"))

d=[]

for i in range(n):

d.append(random.randint(1,100))

print(d)

key=int(input("请输入需要查找的数:"))

for i in range(len(d)):

    if key==d[i]:

        print("查找成功!索引号为:",i)

        break

A . O(1) B . O(log2n) C . O(n) D . O(n2)
有如下VB程序段:

Dim a(1 To 6) As Integer

Sum =0

For i= 1 To 6

    For j = i+1 To 6

        If j Mod i =0 Then a(j)=1 – a(j)

    Next j

Next i

For i=1 To 6

    Sum Sum+ Str(a(i))

Next i

Text1. Text = Str(Sum)

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

A . 3 B . 4 C . 5 D . 6
某Python程序段如下:

def isprime (x):

    for i in range(2, x):

        if x % i= 0:

            return False

    return True

prime = []

for i in range(2, 21):

    if isprime(i):

        prime.append(i) #将 i添加到列表

print (len(prime))

运行该程序段,输出结果是

在平面坐标系上分布着n个点,从这n个点的集合中取出4个点,使之构成一个正方形,要求正方形的边长与x轴、y轴平行。程序界面如第15题图所示,点击“生成”按钮,自动产生n个点的坐标,这n个点按x坐标值升序排列,x坐标相同时按y坐标值升序排列。

点击“查找”按钮,查找所有符合要求的正方形。算法思路:枚举正方形对角线上的线段端点A、C(即保证线段AC与x轴呈斜45度的夹角),通过A、C点,计算出正方形另-条对角线上的线段端点B、D,再查找B、D是否存在,若存在,则说明该正方形可以生成。

  1. (1) 能够在List1中显示“OK”的语句是(单选,填字母:A . List1.Addtem"OK"/ B . List1.Caption="OK"/C . List1.AddItem="OK")
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Dim n As Integer, x(1000) As Integer, y(1000) As Integer

    Private Sub Command2_Click( )

    '生成n个点的坐标,并按要求排序,代码略

    '第i个点的坐标保存在x(i)和y(i)并显示在List1 中

    End Sub

    Private Sub Command2_Click()

        Dim i As Integer, j As Integer

        For i=1 To n

            For j=i+1 To n

                If  Then

                    If search(x(i), y(j)) = True And search() = True Then

                        '将4个坐标点显示在List2中,代码略

                        cnt=cnt+1

                    End If

                End If

            Next j

        Next i

        List2AddItem "总共有" + Str(cnt) + "个符合要求的正方形"

    End Sub

    Function search(x As Integer, sy As Integer) As Boolean

        Dim L As Integer, R As Integer, m As Integer

        search = False: L= 1: R= n

        Do While L<= R

            m=(L+R)\2

            If sx < x(m) Or  Then

                R=m-1

            ElseIf x> x(m) Or x= x(m) And ey > y(m) Then

                L=m+1

            Else

                search = True: Exit Do

            End If

        Loop

    End Function

  3. (3) 程序中加框处代码有错,请改正。
在窗体上画一个名称为List1的列表框,为了对列表框中的每个项目都能进行处理,应使用的循环语句为(    )。
A . For  i=0 To List1.ListCount-1

.....

Next

B . For i=0 To ListCount-1

.....

Next

C . For i=1 To List1.listCount

.....

Next

D . For i=1 To ListCount

.....

Next

已知X和Y是字符型变量,运行下面程序段后,变量Y的值是(    )

X=“ABCDEFG”

For i =4 to 1 setp -1

    y=y+mid(x, i, 1)

Next i

A . ABCD B . DCBA C . DEFG D . GFED
求1+2+3+…+100的和(for循环实现)

s=0

for i in range():

 

print(s)

下面程序的运行结果为:

for num in range(2,10):

  if num % 2==0 :

    continue

print(num,end=”、”)

有如下VB程序段:

c = Text1.Text

s1 = "jiayou!" s2 = s1 + s1

For i =1 to len(s1)

    If c = Mid(s2, i, Len(s1)) Then Exit For

Next i

Label1.Caption = Str(i)

程序执行完后,Label1中显示的内容是4,则Text1中输入的内容是(     )

A . "jiayou!" B . "you!jia" C . "ayou!ji" D . "jayou!j"
有如下VB程序:

n = 4

For i = 1 To 25

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

    Do While a(j) = 4

        a(j) = 0

        j = j + 1

        a(j) = a(j) + 1

    Loop

Next i

For i = 1 To n

    s = Str(a((i + 1) Mod 4 + 1)) + s

Next i

数组a(1)至a(4)初值均是0,执行该程序后,s的值是(     )

A . "1012" B . "2101" C . "0121" D . "1210"
若要使语句s=s+i执行6次,则程序画线处的语句为(    )

s=1

for i in_______:

  s+=i

A . range(1,6) B . range(10,5,-1) C . range(6) D . range(1,9,2)
执行下列程序后,屏幕上输出的结果是(     )

for i in range(5, 1):

  print(i,end=" ")

A .   5  4  3  2  1 B .   4  3  2  1 C .   1  2  3  4  5 D . 没有结果
用python编辑器打开“Y\103”下的文件“计算1-2+3-4...+99-100的值.py”,进行以下操作并保存结果

①请填空完善该程序,实现功能:计算表达式s=1-2+3-4……+99=100的值并输出结果;

②编写完成后原名保存并关闭应用软件。

s=0

for i in range(1,):

  if :

        s=s-i

  else:

      

print()

有ABCDE五位同学围成一圈玩出圈游戏,从A同学开始按照ABCDE的顺序依次报数,报到k(k为1至5的随机整数)的同学出圈,余下同学围成新的圈,并从当前出圈位置继续报数,报到k的同学继续出圈,直到圈内无人为止。程序代码如下:

j = 1: p = 5

Do While p > 0

    j = (j + k -2) Mod p + 1

    s1 = s1 &j

    s = Mid(s, 1, j -1) + Mid(s, j + 1)

    p = p -1

Loop

已知s1的初值为""(空),下列选项关于s1的最终结果错误的是(    )

A . "11121" B . "23121" C . "31311" D . "43321"