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

星期天,小龙来到动物园游玩,园内共有N个景点(可在10个以上),每个景点都有一个标号,标号为1至N。现在只知道每个景点有一条路连接下一个景点。小龙想知道,根据这些道路信息,从其中一个景点出发,最后再回到出发景点,最多能游玩多少个景点。

例如,共有N=5个景点,每个景点连接的下一个景点分别是2,4,5,5,2。

景点号

1

2

3

4

5

下一景点号

2

4

5

5

2

则他可以从2号景点出发,最多可以游玩2号、4号、5号三个景点。

程序代码如下:

Private Sub Command1_Click()

  Dim a(1 To 100) As Integer, d(1 To 100) As Integer

  Dim jd As String, m As String, c As Integer, i As Integer

  Dim s As Integer, p As Integer, k As Integer, ans As Integer

  jd = Text1.Text + ","

  s = 0: c = 0

  For i = 1 To Len(jd)

    m = Mid(jd, i, 1)

    If m <> "," Then

           ①      

    Else

      c = c + 1: a(c) = s: s = 0

    End If

  Next i

  ans = 0: k = 0

  For i = 1 To c

    For k = 1 To c

      d(k) = 0

    Next k

    If d(i) = 0 Then

      p = i

      Do While p <= c

        If d(p) = 0 Then

          k = k + 1: d(p) = k

        Else

                ②     

          If y > ans Then ans = y

          k = 0

          Exit Do

        End If

       

      Loop

    End If

  Next i

  Text2.Text = Str(ans)

End Sub

  1. (1) 要使程序运行时,Form1的BackColor属性值为黑色,以下代码正确的是(单选,填字母)。

    A .

    Private Sub Form_Load()

      Form1. BackColor = RGB(255, 255,255)

    End Sub

    B .

    Private Sub Form_Load()

      Form1.BackColor = RGB(0, 0, 0)

    End Sub

    C .

    Private Sub Form1_Load()

      orm1.BackColor = RGB(255,255,255)

    End Sub

    D .

    Private Sub Form1_Load()

      Form1.BackColor = RGB(0, 0, 0)

    End Sub

  2. (2) 若有7个景点,且每个景点的连接情况为:6,3,7,2,7,5,4,那么小龙最多可以游玩的景点数是
  3. (3) 请把划线处的代码补充完整:

     ② 

  4. (4) 程序加框处代码有错,请改正:
运行下列程序,正确的结果是

s=0

for i in range (1 5):

    s=s+i

print("i=",i,"s=",s)

循环结构表示程序反复执行某个或某些操作,只有用户干预才能终止循环。
在如下VisualBasic程序段中,要使循环体t=t*j执行5次,循环变量的终值可以是(     )

For j=1 To  Step 2

t=t*j

Next j

A . -5 B . 0 C . 5 D . 10
现提供一幅RGB模式的彩色位图,左框中的程序实现将其中每个像素的颜色值进行调整,使之成为一幅黑白图像。请阅读右框中的程序,程序运行的结果是: 。

from PIL import Image

import numpy as np

import matplotlib. pyplot as plt

#打开图像并转化成数字矩阵

img-np. array(Image. open("hjpg". convert("L"))

#图像尺寸分别赋值

rows, cols=img. shape

#调整每个像素的RGB值

for i in range(rows):

    for j in range(cols):

        if (img[ij]<=128):

            img[i, j]=0

        else:

            img[i, j]=1

#生成新的图像并显示

plt. figure("hh")

plt. imshow(img. cmap="gray")

plt. axis("ff")

plt. show( )

from PIL import Image

import numpy as np

import matplotlib. pyplot as plt

img-np. array(Imagc. open("hh. jpg"))

rows, cols, dims= img. shape

for i in range(5000):

    x=np. random. randint(0, rows)

    y=np. random. randint(0, cols)

    img[x, y]=0

plt. figure("hh")

pt. imshow(img)

pltaxis("off")

plt. show( )

下列循环结构用法错误的是(    )
A . for i in range(20): B . for i in range(0,10): C . for i in range(10,0,2): D . while s<50:
求1-2+3-4+5 ... 99的所有数的和。
某数组a(1)~a(10)中的数值分别为:3,8,5,7,6,1,4,9,2,10,v(1)~v(10)均初始化为True,有如下程序段:

cnt = 0

For i = 1 To 10

    If (v(i)) Then

        j = i

        Do While (v(j))

            v(j) = False

            j = a(j)

        Loop

        cnt = cnt + 1

    End If

Next i

执行上述程序段后,cnt的值是(    )

A . 3 B . 4 C . 5 D . 6
查找最短26个字母字符串:在文本框Text1中输入任意一串包含小写字母的字符串(长度n>=26),要求找到长度最小的一段区间,能够包含全部26个小写英文字母。小王设计了VB程序用于搜索最短字符串,单击“查找”按钮command1,若无解,则在标签Label1中输出“无解!”,反之程序在标签Label1中输出该最小区间的长度以及字符的开始位置,并在文本框Text2中输出相应的最短字符串,程序界面如图所示:

⑴确定初始右边界:从第1个字符开始,向右搜索到包含全部26个字母的子串,并因此而确定右边界,同时记录每个字母在子串中出现过的次数。

⑵调整子串左边界:若左边界有重复的字母则表明该子串可缩短,故左边可右移1位……直到找到一个符合条件的子串并记录,然后子串左边界再右移1位。

⑶调整子串右边界:子串右边界继续右移,在新子串符合条件后,记录并进行比较。

重复(2)各调整步骤,直至遍历完整个字符串,获得并输出满足条件的最小长度字符串。

图片_x0020_100011

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

Const n = 300

Dim i As Integer, k As Integer, length As Integer, L As Integer

Dim pos As Integer, s1 As String, res As String

Dim f(1 To 26)As Integer    '数组f记录每个小写英文字母的出现次数

Dim s(1 To n)As Integer    '数组s记录每个输入字符在字母表中的位置

Private Sub Command1_Click()

    res = ""

    s1 = Text1.Text

    For i = 1 To Len(s1)

        s(i)=        ①         

    Next i

    k = 0: pos = 1: length = n

    For i = 1 To 26

        f(i)= 0

    Next i

    For i = 1 To Len(s1)

        If f(s(i))= 0 Then k = k + 1

        f(s(i))= f(s(i))+ 1    '调整右边界,直到达到26个字母

        Do While         ②        

            f(s(pos))= f(s(pos))- 1

            If         ③          Then

                k = k - 1

                If i - pos + 1 < length Then

                    length = i - pos + 1

                    res = Mid(s1, pos, length)

                    L = pos

                End If

            End If

            pos = pos + 1

        Loop

    Next i

    If res <> "" Then

        Text2.Text = res

        Label1.Caption = "最短长度:" + Str(length)+ "开始位置:" + Str(L)

    Else

        Label1.Caption = "无解!"

    End If

End Sub

  1. (1) 对于字符串“qbwcadsgeqbdatcy”,包括字母“abcde”的最短字符串长度为(填数字)。
  2. (2) 请在画线处填入合适的代码。

     ② ③ 

操作说明:编写一个程序实现以下功能,将程序以“Y:/3/3.py”作为文件名保存。

题目:设计100以内的数中能同时被3或5整除的个数。

While循环语句的循环体中必须有改变条件表达式值的语句,否则会形成死循环。
小曲使用while写了一个最接近平方数的程序,用于计算比整数limit小的最大平方数,并将其存储在变量nearest_square中。请根据下面程序分析,代码第7行输出为(    )。

A . 36 B . 40 C . 49 D . 0
小丫觉得回文字符串太优美了(回文字符串是指顺读和倒读都一样的字符串,如“123321”),为此编写了VB 程序。程序运行时,单击按钮Command1 后,根据文本框Text1 中输入的内容判断并输出是不是回文串。实现上述功能的VB 代码如下。

Private Sub Command1_Click()

    Dim s As String, f As Boolean, L As Integer

    s = Text1.Text

    j = Len(s)

    i = 1

    Do while

        i = i+1

        j = j-1

    Loop

    If Then Print "是回文串" Else Print " 不是回文串"

End Sub

在画线处填入合适代码,使程序能正常运行。

小李利用所学的VB知识,编写了一个简单计算器:在文本框 Text1 中输入一个加减算式(只包含数字和“ +”、“ -”符号,以“ =”结束),点击“计算”按钮 Command1,计算结果在标签 Label1 上显示。程序运行界面如下图所示:

  1. (1) 要实现程序运行时,单击文本框 Text1 即可将文本框清空 , 则应在(A . Command1_Click/B . Form_Load/C . Text1_Click)事件处理过程中添加语句Text1.text=“”)。
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码

    Private Sub Command1_Click

        Dim s As String, ch As String, sum As Integer

        Dim fh As Integer

        s = Text1.Text: fh = 1: p = 0: sum=0

        For i = 1 To Len(s)

            ch = Mid(s, i, 1)

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

                p =

            Else

                sum =

                p = 0

                If ch = "-" Then

                    fh = -1

                ElseIf ch = "+" Then

                    fh = 1

                End If

            End If

        Next i

        Label1.Caption = Str(sum)

    End Sub

  3. (3) 若文本框 Text1 中输入的内容为“ 12*10=”(不包括双引号),单击“计算”按钮后,标签Label1 上将显示:(A . 120 / B . 22 / C . 0 /D .程序出错无法显示)
某Python 程序代码如下:

a = [10, 5, 2, 11, 7,6]

c=0

i = 0

while i < len(a):

    if a[i] % 2 == 0:

        c -= a[i]

    else:

        c += a[i]

        i =i + 1

print(c)

程序执行后,输出的结果是

循环结构for I = 5.5 to 0 step -2的循环次数是
九宫格游戏规则:1至9九个数字,横竖都有3个格,每行、每列、主对角、副对角所有元素之和为15,其中一组数据如列表list所示。

list=[[8,1,6],[3,5,7],[4,9,2]]

执行下列python程序,结果仍能构成九宫格数据的是(     )

A . list1=[[0,0,0],[0,0,0],[0,0,0]]

for x in range(3):

for y in range(3):

list1[x][y]=list[x-2][y]

for i in list1:

print(i)

B . list1=[[0,0,0],[0,0,0],[0,0,0]]

for x in range(3):

for y in range(3):

list1[x][y]=list[y][x]

for i in list1:

print(i)

C . list1=["","",""]

for x in range(3):

list1[x]=list[x][::-1]

for i in list1:

print(i)

D . list1=[[0,0,0],[0,0,0],[0,0,0]]

for x in range(3):

for y in range(3):

list1[x][y]=list[y][2-x]

for i in list1:

print(i)

某字符串s是由一个原始字符串反复重叠形成的,例如字符串" abcababcababcab"是由abcab"重叠而成。如下VB程序段用于查找输入字符串的原始字符串:

s="abcababcababcab" : n= Len(s)

For t=1 To n\ 2

    If n Mod t=0 Then

        For i=t+1To n

            If  <>Mid(s, i, 1) Then Exit For

        Next i

        If i =n+1 Then ans = : Exit For

    End If

Next t

Text1.Text= ans

上述程序段2个方框处的表达式分别为(    )

A . ①Mid(s, (i-1) Mod t+1, 1)②Mid(s, t, 1) B . ①Mid(s, i Mod t, 1)②Mid(s, 1, t) C . ①Mid(s, i Mod t, 1)②Mid(s, t, 1) D . ①Mid(s, (i-1) Mod t+1, 1)②Mid(s, 1, t)
有如下VB程序段:

s=Text1. Text

s1=" "

For i=1 To Len(s)   

    c= Mid(s, i, 1)

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

        c= Chr(Asc(c)+ 32)

    ElseIf c>="a"Andc<(="z"Then

        c=Chr( Asc(c)-32)

    End If

    s1=c+s1

Next i

Text2. Text=s1

该程序段运行后,若在文本框Text1中输入 “Ab12CD”,则 文本框Text2中显示的内容是(    )

A . aBcd B . dcBa C . aB12cd D . dc21Ba
有如下程序代码:

import pandas as pd

data={ '姓名':['李商隐','欧阳修','李白',杜甫'],'借阅次数': [ 32,16,30,26]}

df1=pd. DataFrame (data, columns=[ '姓名','借阅次数'])

c = 0

for i in range ( len (df1 ['姓名'])):

  if df1.at [i,'姓名'][0]= ='李':

    c+= df1.at [i,'借阅次数']

print (c)

该程序运行后,输出的内容为(      )

A . 46 B . 48 C . 58 D . 62