2.3 周而复始的循环 知识点题库

某同学编写了如下VB程序段,运行后弹出下面的错误信息。则错误时所执行的语句是(  )

Private Sub Command1_Click( )

Dim x As String, k As String, j As Integer

x = "XiaoWei"                    ①

k = "语文"                       ②

j = 90                           ③

Text1.Text = x + k +j               ④

End Sub

 

  
A . B . C . D .
对英文字母进行加密的规则:用26个互不重复的ASCII字符作为密钥,字母“A”用密钥中第1个字符代替,字母“B”用密钥中第2个字符代替,其他字母用类似方法进行加密。现编写一个验证密钥合法性的程序。在文本框Text1中输入密钥,单击“验证”按钮Command1,在文本框Text2中输出相应的信息。程序运行的界面如图所示。

实现该功能的程序代码如下:

Private Sub Command1_Click()

    Dim i As Integer,ch As String,s As String

    Dim my(0 To 127)As Boolean  ‘0~127表示128个ASCII字符的ASCII值

    s=Text1.Text

    For i=0 To 127

        my(i)=False

    Next i

    If    ①   then

        Text2.Text=”密钥长度不足26个字符!”

    Else

        For i=1 To 26

           ch=Mid(s,i,1)

           t=    ②    

           If my(t)=False Then

              my(t)=True

           Else

             Text2.Text=“密钥中有重复字符!”

             Exit Sub

           EndIf

        Next i

        Text2.Text=“密钥正确!”

    EndIf

End Sub

  1. (1) 实现验证功能事件的过程名称是

  2. (2) 为实现上述功能,请在画线处填入合适的代码。

     ②


小王编写了一个进制转换程序,实现如下功能:在文本框Text1中输入一个二进制数,单击“计算”按钮Command1,在文本框Text2中将显示出其对应的十六进制数。程序运行界面如下图所示:

  1. (1) 要使程序启动时,自动清空文本框的 Text1 中的内容,则可以在(单选,填字母:A .Command1_click / B .Text1_click / C .Form_load)事件处理过程中添加语句 Text1.Text= ""
  2. (2) 实现上述功能的 VB 程序如下,请在划线处填入合适的代码

    Private Sub Command1_Click()

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

    Const code = "0123456789ABCDEF"

    s = Text1.Text

    t = 0: s1 = ""

    For i = Len(s) To 1 Step -1

      c = Val(Mid(s, i, 1))

      t = t + c * 2 ^ ((Len(s) - i) Mod 4)

      If (Len(s) - i + 1) Mod 4 = 0 Or   ①   Then

        ② 

      t = 0

    End If

    Next i

    Text2.Text = s1

    End sub

     ② 

  3. (3) 如果没有第①处划线部分的条件,当输入的二进制数为 1101011,则 Text2 中显示的内容为
下列程序运行后的输出结果是(  )

DIM A(6) AS INTEGER

FOR I= 1 TO 6

  A(I)= I

NEXT I

PRINT A(I)

A . 0 B . 6 C . 7 D . 显示出错信息
某 VB 程序实现如下功能:在文本框Text1 中输入字符串,在文本框Text2 中产生对称字符串,如输入“abc”,产生“abccba”。程序段如下:

s = Text1.Text :n = Len(s)

s1 = s:i = 1

Do While i <= Len(s)

          

i = i + 1 Loop

Text2.Text = s1

上述程序中方框①处的可选语句有

①ch = Mid(s, i, 1)

②ch = Mid(s, n - i + 1, 1)

③s1 = s1 + ch

④s1 = ch + s1

则正确的语句为 (  )

A . ①③ B . ②③ C . ①④ D . ②④
有如下VB程序段

Dim a(1 To 5)As Integer

Dim d(1 To 5)As Integer

a(1)=12:a(2)=21:a(3)=19:a(4)=11:a(5)=20

n=5:Max=0

For i=1 To n

    d(i)=0

    For j=1 To i-1

        If a(j)<a(i)Then d(i)=d(i)+1

    Next j

    If d(i)>Max Then Max=d(i)

Next i

执行完以上程序段后,Max的值为(    )

A . 1 B . 2 C . 3 D . 4
某学校要对班主任进行满意度调查,有20个评分项(为方便程序处理,评分项具体的名称本题中不显示,仅以序号代替),每个评分项学生可以打A、B、C 三个等级中的一个,现在已经收集所有学生对班主任的评价,为了保证隐私,不显示学生姓名,只显示班级,并存储在数据库的表中,点击command2(读取数据),读取原始数据显示在左侧list1中,左侧列表显示的原始评价数据第一条表示高二(01)班有1位同学在第9项给班主任打A,依次类推,点击command1(统计),统计出各项目的评价统计(A+B所占的百分比)。

  1. (1) 根据以下代码可知,本程序访问的数据库名称是
  2. (2) 完成划线处的代码填空:

    Dim classname(1 To 8000) As String     ‘存储原始数据中的班级名称

    Dim selectabc(1 To 8000) As String       ‘存储原始数据选项的值

    Dim xiangmu(1 To 8000) As String        ‘存储原始数据选项的序号

    Dim n  As Integer

    Private Sub Command2_Click()        ‘从数据库读取数据,并且按班级名称排序

    Dim conn As New ADODB.Connection

    conn.ConnectionString = "provider=microsoft.ace.oledb.12.0;data source="&App.Path&"\pingjia.accdb"

    conn.Open

    Dim rs As New ADODB.Recordset

    Set rs.ActiveConnection = conn

    rs.Open "select * from data"

    n = 0       ‘记录评价的总条数

    '读取数据,并按班级排序,代码略

    End Sub

    Private Sub Command1_Click()

    Dim cstart(1 To 50) As Integer       ‘存储每个班级在数组classname中的起始位置

    Dim cend(1 To 50) As Integer       ‘存储每个班级在数组classname中的末尾位置

    Dim k As Integer       ‘存储班级数量

    Dim testall(1 To 20) As Integer        ‘存储每一项总选择人数,例如testall(1)里存储这评价项目1里的总人数,testc(1)里存储评价项目1里选C的人数

    Dim testc(1 To 20) As Integer          ‘存储每一题(项)选c的人数

    ‘确定每个班级的起止位置,存储到cstart数组和cend数组

    cstart(1) = 1

    temp = classname(1)

    k = 1

    For i = 1 To n

      If classname(i) <> temp Then

        

           k = k + 1

           cstart(k) = i

           temp = classname(i)

      End If

    Next i

    cend(k) = n

     For i = 1 To k    ‘每个班级分别统计评价项目

       

       For q = 1 To 20    ‘对testall和testc数组初始化,

         testall(q) = 0

         testc(q) = 0

       Next q

       For j = cstart(i) To cend(i)    ‘对第i个班级进行统计

          testall(xiangmu(j)) = testall(xiangmu(j)) + 1

          If selectabc(j) = "C" Then 

       Next j

       For p = 1 To 20    ‘统计完成后输出这个班级的20个项目的A+B所占百分比

          s = s &""&Str(Round((testall(p) - testc(p)) / testall(p) * 100, 1))

       Next p

       List2.AddItem s

     Next i

    End Sub

   树的递归定义如下:树是由n(n  )个节点组成的集合。若n,则称为。任何一个非空树均满足以下二个条件:⑴仅有一个。⑵当n>0时,其余节点可分为m(m>=0)个互不相交的有限集合,其中每个集合又是一棵树,并称为
有如下程序段:

s=Text1. Text

t=””

For i=1 To Len(s)

  c = Mid(s,i,1)

  If c<“a”or c>“z” Then t=“”

  t=c+t

Next i

Label 1. Caption = t

执行此程序段时,在文本框Text1中输入“2020 Nihao Wolaile”, 则标签Label 1中显示的内容是(    )

A . elialoW B . elialo C . elia D . Eli
小李编写VB程序,功能如下:单击“产生数组”按钮Command1,则随机生成10个取值范围是1~10的正整数,分别存储到数组a中,对数组a的元素进行升序排列,并在标签Label1中显示;再单击“重复数”按钮Command2,则在排序后的数组a中查找连续个数最多的一组重复数值,若有两组连续重复数个数一样多,则取数值小的一组,将重复数的数组元素下标显示在标签Label2中。运行界面如图所示。

  1. (1) 已知窗体名称为Form1,要使程序加载时,窗体标题自动显示为“统计重复数”,则可在              (单选,填字母)事件过程中添加代码:Form1.Caption = “统计重复数”。
    A . Form_Click() B . Form_Load() C . Form1_Click() D . Form1_Load()
  2. (2) 实现上述功能的程序如下,请在划线处填写合适代码,使程序正常运行。

    Dim a(1 To 10) As Integer

    Dim n As Integer

    Private Sub Command1_Click()

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

      Dim s As String

      Randomize

      n = 10

      For i = 1 To n

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

      Next i

      For i = 1 To n - 1

        k = i

        For j = i + 1 To n

          If a(j) < a(k) Then

        Next j

        If k <> i Then

          temp = a(i): a(i) = a(k): a(k) = temp

        End If

      Next i

      s = ""

      For i = 1 To n

        s = s + Str(a(i))

        If i < n Then s = s + ","

      Next i

      Label1.Caption = s

    End Sub

    Private Sub Command2_Click()

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

      Dim length As Integer, origin As Integer

      Dim s As String

      k = 1:origin=1:length = 1

      For i = 2 To n

        If a(i) = a(i - 1) Then

          k = k + 1

          If k > length Then

            length = k

            origin = 

          End If

        Else

          k = 1

        End If

      Next i

      s = ""

      For j = origin To

        s = s + Str(j)

      Next j

      Label2.Caption = s

    End Sub

  3. (3) 程序加框处代码有错,请改正。
李雷收到了朋友发给他的一封奇怪的邮件,里面有段内容是由一些数字和符号组成的,信上说了这段内容是加密后的内容,并给出了具体的加密方法(假定原文的英文字母都是大写的),具体方法如下:

①“A”变为一个1到100内的随机数*27+1,“B”变成一个1到100以内的随机数*27+2,…,“Z”变为一个1到100以内的随机数*27+26;

②每个字母变为数字后会加一个“一”用来分割数字;

③其他空格和标点字符都按原来的表示。

李雷用VB编写了一个解密程序,功能如下:将邮件中密文的内容复制到文本框Text1中,点击“解密”按钮Command1后,程序会解密密文并将解密后的内容显示在文本框Text2中,程序运行界面如图所示。

  1. (1) 根据描述,若密文为“1905-1442-”,则表示的是
  2. (2) 实现上述功能的VB程序如下,请在画线处填入合适的代码。

    Private Sub Command1_Click( )

      Dims As String, yw As String, t As String

      Dim Value As Integer

      s=Text1.Text

      Value=0

      yw=""

      For i=1 To Len(s)

        t=     ①   

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

            Value=Value *10+Val(t)

        Else If t="-" Then

            yw=yw+Chr(Asc("A")+Value Mod 27-1)

               ②   

        Else

            yw=yw+t

        End If

      Next i

      Text2. Text=yw

    End Sub

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

下面程序输出结果是(    )

for i in range(3):

    print(i, end=',')

A . 1,2,3 B . 0,1,2 C . 1 2 3 D . 0 1 2
用户登陆某平台,密码有三次重试机会。请补完下面横线处的代码。

n=0

while

    passwd=        #提示输入密码

    if              #密码是临高中学

                    #输出密码正确

        break                      #退出循环,执行while循环模块后面的语句

    else:

        n=n+1                     #循环一次就加1

                     #输出错误超过3次,请稍后再试!

有如下VB程序:

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

n=3

List1.Clear

For i=1 To n

    k=“”

    For j=1 To i

        k=k+“*”

    Next j

    List1.AddItem k

Next i

该程序运行中,在列表框List1中显示的是(  )

A . B . C . D .
小李设计“移数游戏”程序,实现如下功能:在列表框中有24个数字(8个“1”,8个“2”,8个“3”)随机排成“井”字形方阵,通过单击游戏界面中的八个按钮实现往箭头方向循环移动所在行(或列)的数据,例如“→③”按钮所在行的数据依次为“2,2,3,3,3,2,1”,若单击一次“→③”按钮后,该行的数据向右循环移动一次,依次变为“1,2,2,3,3,3,2”。玩家通过按钮移动数据,最终若使游戏界面中虛线框内的八个数字为相同数字则完成游戏。程序运行界面如图所示。

  1. (1) 在如图所示的游戏界面中,单击某按钮一次后,即可完成游戏,则该按钮的Caption属性值是 。
  2. (2) 程序部分代码如下,请在划线处填入合适的代码。

    Dim a(1 To 49) As String

    Private Sub Form _Load ()

        Dim k(1 To 3) As Integer

        Randomize

        t=0

        For i=1 To 49

            x=

            y=(i-1) Mod 7+1

            If x=30rx=50ry=30ry=5Then

               t = Int (Rnd*3) + 1

               Do While

                  t=t Mod 3+ 1

               Loop

               k(t)=k(t)+1

               a(i) = Str(t)

           Else

               a(i) =””

           End If

        Next i

        ‘在列表框中输出数据,得到“井”字形方阵。代码略

    End Sub

    ‘下面为单击“↑①”按钮,实现数据的移动

    Private Sub Command1_ Click()

        j=3

        temp =a (6*7+j)

        For i=1 To 6

          p =i-1

          If p<1 Then p= 7

          A ((p-1)*7+j)=a ((i-1)*7+j)

        Next i

        = temp

        ’在列表框中输出数据,更新“井”字形方阵。代码略

    End Sub

    ‘其他按钮所实现功能的代码略

模拟微信抢红包功能的Python程序代码如下,程序运行结果如图所示。

import random

n=int(input(“输入红包总数(个):”))

m=int(input(“输入红包金额(元):”))*100-n

#金额以“分”为单位并保证每个人至少抢到一分钱

for i in range(__________,1):

if i==n:

x=m

else:

x=random. randint(0,int(m/(n-i+1)*2))

#random. Randint(a,b) :随机生成一个[a,b]范围内的整数

m=m-x

print(“第”i,“个红包金额为:”(x+1)/100,“元”)

上述程序段中划线处应该填入的代码是(    )

A . 1,n+1 B . 1,n C . 0,n D . 0,n+1
需要把一个由小写字母构成的字符串s中的字符从左到右写入行中。每行最大宽度为20,如果往后新写一个字符导致该行宽度超过20,则写入下一行。

注意:每个字符的宽度不为1。给定一个列表width,其中width[0]是字符“a”的宽度,width[1] 是字符“b”的宽度,...,width[25]是字符'z'的宽度。

如图:输入字符串“aabbb”,“a”的宽度为 4, “b”的宽度为 6,所以“aabb”长度为

4+4+6+6=20写入第一行,最后一个”b”长度为6写入第二行。最后程序输出内容为“写入字符串s共需2行,最后一行宽度为:6”。

pythont程序如下:

width = [4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6]

s =int( input("s:"))

L=0

count=1

for i in s:

  index=   ①  

  L=L+width[index]

  if L>20:

    L=   ②  

    count+=1

    print("小写字母宽度列表width为:")

  print(width)

print(f"写入字符串s共需{count}行,最后一行宽度为:{L}")

阅读程序回答:

  1. (1) 上述程序代码,若输入的s=“bbbaa”,那么最后一行宽度为
  2. (2) 加框处代码有误,请改正。
  3. (3) 补充横线两处代码。

下列算法流程图描述的算法运行结果是(      )。

Din i As Integer, j As Integer

For i=1 To 5

    For j=1 To 5-i

        Print "";     '输出一个空格

    Next j

    For j=1 To i

        Print **;

    Next j

    Print

Next i

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

n='15867239012'

s=0

for x in n:

  if int(x)%2==0:

    continue

  elif s==14:

    break

    s+=int(x)

print(s)

该程序段执行后,则输出结果为(    )

A . 18 B . 26 C . 14 D . 17
以下有关栈和队列的说法正确的是(       )
A . 栈和队列都是先进后出 B . 栈和队列都是先进先出 C . 队列元素前面只有一个,后面有多个 D . 栈和队列只允许在端点插入和删除数据