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

执行如下Visual Basic程序段时,出现了如下图所示的错误:

Private Sub Command1 Click()

Dim a As Integer, b As Integer

a = 5: b = 8

b = a + b

label1.Caption = Str(b)

End Sub

引发此错误的语句可能为(   )

A . Dim a As Integer, b As Integer B . a = 5: b = 8 C . b = a + b D . label1.Caption = Str(b)
【加试题】 有如下VB程序段:

Max=-10000

For i = 1 To 10

    s = 0

    For j = i To 10

      s = s + a(j)

      If s > max Then max = s

    Next j

 Next i

已知数组a(1)到a(10)的原始数据为6,-6,8,-7,7,2,-2,-1,-2,4.程序执行后,变量max的值为(   )

A . 9 B . 10 C . 27 D . 4
对文本框输入的字符串进行去重, 并保持原顺序不变,例如,在文本框Text1中输入"aldajbnjndalldfjj",执行程序后文本框Text2中输出“aldjbnf”。实现该算法的 VB 程序如下:

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

For i = 1 To n

  a(i) = Mid(s1, i, 1)

Next i

For i = 1 To n

  j = i + 1

  Do While j <= n

    If a(i) = a(j) Then

      For k =

     

      Next k

      n = n - 1: j = j – 1

    End If

    j = j + 1

  Loop

Next i

For i = 1 To n

  s = s + a(i)

Next i

Text2.Text = s

上述程序中方框处应填入的程序代码是(    )

A . j + 1 To n  和 a(k + 1) = a(k) B . j + 1 To n 和 a(k) = a(k - 1) C . j To n - 1 和 a(k - 1) = a(k) D . j To n - 1 和 a(k) = a(k + 1)
小李编写了一个实现字母字符串去重功能的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) 加框处代码有误,请改正
某算法程序段如下:

Dim s1 As String, s2 As String, ch As String

Const code = "@*()^&#"

s1 = Text1.Text

For i = 1 To Len(s1)

    ch = Mid(s1, i, 1)

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

        t = (Asc(ch) - 65 + i) Mod 7

        s2 = Mid(code, t + 1, 1) + s2

    Else

        s2 = s2 + ch

    End If

Next i

Text2.Text = s2

若 text1 中输入字符“AbCd”,则 text2 中输出的是 (     )

A .  AC^@ B .  ^@AC C .  ^(@& D . A^C@
有如下 VB 程序段:

s = " Good Luck 2021!":n = 0 : m = 0 : k = 0

For i = 1 To Len(s)

    c = Mid(s,i,1)

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

        n = n + 1

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

        k = k + 1

    Else

        m = m + 1

    End If

Next i

执行该程序段后,变量 m 的值为(    )

A . 3 B . 4 C . 5 D . 2
某仓库对货物的编码规则为:货物类型(4-8位英文字母)货物编码(4-8位数字)货物校验码。货物编码的每一位数除以2产生的余数,倒序输出即是货物正确的校验码,现编写如下VB程序,如图在Text1中输入货物完整编码后,判定校验码是否符合标准,并在Label1中输出结果。

  1. (1) 由程序可知,此程序中按钮的名称为
  2. (2) 请在划线处填入合适的代码。

    Private Sub check_Click()

        Dim s as string, ss as string, s1 as string, s2 as string

        Dim i as integer, bz as integer

       

        bz = 0

        For i = 1 To Len(s)

            ss = Mid(s, i, 1)

            If ss = "-" Then

                bz = bz + 1

            ElseIf bz = 1 Then

                s1 = CStr() + s1      ‘Cstr函数是在str的基础上去除前导空格

            ElseIf bz = 2 Then

                s2 = s2 + ss

            End If

        Next i

        If  Then

            Label1.Caption = "符合标准"

        Else

            Label1.Caption = "不符合标准"

        End If

    End Sub

有如下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
小明设计了某社团积分系统,当输入用户ID和积分增值后可以更新积分和排名。具体功能如下:单击“读取"按钮Command1后,将n个用户的ID (依次为1到n)、积分和积分排名显示在列表框List1中。在Text1中输入ID和积分增值,用逗号作为分隔符和结束符,奇数位置整数表示ID,偶数位置整数表示积分增值。如输入“2,1,3,5,”表示ID为2的用户增加1积分,ID为3的用户增加5积分。单击“更新"按钮Command2,在列表框List2中显示更新后的积分和排名。程序运行界面如图所示。

请回答下列问题:

  1. (1) 若要清空列表框List1,下列代码正确的是(单选,填字母:A .List1.Clear /B .List1.Caption / C .List1.Text")。
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Const n= 12

    Dim a(1 To n) As Integer, mc(1 To n) As Integer

    Private Sub Command1_Click()

    'n个用户的ID依次为1到n,读取n个用户的积分和排名数据分别存储到数组a和数组mc中,并在列表框Listl中显示ID、积分、积分排名,代码略

    End Sub

    Private Sub Command2_Click()

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

        Dim s As String, flag As Boolean, x As Integer, y As Integer

        Dim p(1To20) As Integer    '存储输入的ID和积分增值,每次输入不超过10组

        For i=1 To 20

            p(i)=0

        Next i

        s= Text1.Text

        

        d=0:k=0

        For i= 1 To Len(s)

            If Mid(s, i, 1)= "," Then

                If flag Then

                    x = Val(Mid(s, i-d, d))

                    For j= 1 To k Step 2

                        If p(j) =x Then Exit For

                    Next j

                    If j> k Then

                        p(j)=x:k=k+2

                    End If

                Else

                    y = Val(Mid(s, i-d, d))

                    p(i+1)=p(j+ 1)+y

                End If

                flag= Not flag: d= 0

            Else

                

            End If

        Next i

        For i=1 To k\2

            x=p(2*i-1):y=p(2*i)

            me(x)= 1

            For j= 1 Ton

                If j<> x Then

                    If a(j)<a(x)+y And a(j)>=a(x) Then

                End If

                If a(j)> a(x) +y Then mc(x)= m(x)+ 1

            Next j

           

        Next i

        '在列表框List2中显示ID,积分、排名,代码略

    End Sub

  3. (3) 程序中加框处代码有错,请改正
小岩设计了一个顺时针旋转矩阵的程序,其功能为:运行程序时,在文本框Text1中输入矩阵规模n,点击“产生矩阵”按钮Command1,在列表框List1中显示一个n*n的矩阵,该矩阵数据由从1开始的连续自然数组成。点击“旋转矩阵”按钮Command2,该矩阵顺时针旋转90度并显示在列表框List2中,此后每点一次“旋转矩阵”按钮Command2,列表框List2中显示的矩阵顺时针旋转90度。请完成程序填空。

Dim n As Integer

Dim st As String

Dim a(1 To 100) As Integer

Dim b(1 To 100) As Integer

Private Sub Command1_Click()

    '产生矩阵,代码略

End Sub

Private Sub Command2_Click()      '旋转矩阵

    For i=1 To n      '行

        st= “”

        For j= 1 To n            '列

            b((i-1)*n+j)=

            st=st+adj(Str(b((i-1)*n+j)),3)

        Next j

        List2.AddItem st

    Next i

End Sub

Function adj(a As String, n As Integer) As String

    '在字符串a前加入适当的空格,使a的长度为n位,代码略

End Function

下面程序运行结果是:(    )

for i in range(2,11,2):

    print(i,end=" ")

A . 2 4 6 8 9 B . 2 3 4 5 6   C . 2 4 6 8 10 D . 2 4 5 8 10
已知由字母和数字组成的字符串s,现要实现如下功能:将字符串s中的数字字符按照原有顺序移动到右侧,英文字符按照原有顺序移动到左侧,如s="2Good02Luck1",移动后变成s="GoodLuck2021",为实现上述功能,在横线处填入的代码应该是(     )

n= L en(s)

Dim a(1 to 100) as String

pos=1: k=0

For i=1 To n

    ch= Mid(s,i,1)

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

        

        k=k+1

    Else

        

        Do While j>>=pos

            a(j)=a(j-1)

            j=j- 1

        Loop

        

        pos=pos+1

    End If

Next i

s=““

For i=1 To n

  s=s+a(i)

Next i

可供选择填入(1)(2)(3)中的代码有

①a(pos)=ch  ②a(pos+k)=ch  ③a(pos-1)=ch  ④j=pos+k  ⑤j= pos+k-1

其中正确的顺序是(     )

A . ①⑤③ B . ②⑤③ C . ②④① D . ①④②
哥德巴赫在1742年提出了以下猜想:任何一个大于2的偶数都可以写成两个质数之和,请完善代码帮助哥德巴赫验证他的猜想。

import math

def ss(n):

    Flag=True

    i=2

    while i <= int(math.sqrt(n))and Flag:

        if

            Flag = False

       

    return Flag

n=int(input(“输入一个大于2的偶数”))

for i in rang(2,n//2+1):

    if

        print(str(n)+"="+str(i)+"+"+str(n-i))

如果输入“8”则结果显示

下面程序输出结果是

S=0

For i in range(1, 5):

    S=S+20

    print(“S=”, S, end=“\n”)

下列程序段中,赋值语句s=s+i被重复执行了4次。

s=0

For i in range (3,10,2):

s=s+i

已知mc数组元素的初值均为0,a数组存储n位学生成绩,若要实现在List1中输出数组a降序排名的名次(最高分为第1名,分数相同排名相同),VB程序部分代码如下:

i=1:j=2:n=10

Do While i<n

If a(i)>=a(j) Then mc(i)=mc(i)+1

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

    j=j+1

    If j>n then i=i+1:j=i+1

Next i

For=1 To n

    List1.AddItem“得分为”+Str (a(i))+“名次为”+Str(            )

Next i

划线处应填写的语句为(    )

A . mc(i) B . mc(i)+1 C . n-mc(i)+1 D . n-mc(i)
查看下面的程序代码,在文本框Text1 中输入的值为100 时,该程序的作用为(  )

Private Sub Command1_Click()

    Dim sum, k, j, n As Integer

    n = Val(Text1.Text)

    sum = 0: k = 1

    Do While k <= n

        j = 1

        Do While j <= k

            sum = sum + 1: j = j + 1

        Loop

        k = k * 3

    Loop

    Text2.Text = CStr(sum)

End Sub

A . 1+2+3+…+100 B . 20+21+22+23+…2100 C . (11111111)2 转十进制 D . (11111)3 转十进制
恺撒密码将明文中的a用d替换,b用e替换,……,z用c替换。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文,这种密码称为加法密码,又称为移位密码。阅读下列程序代码:

def CaesarCipher( ):

    c=mingwen.get("0.0", "end")   

    b=""

miwen.delete("0.0", "end")

for i in range(len(c)):

    if 'a'<=c[i]<='w' or 'A'<=c[i]<='W':

b=b+chr(ord(c[i])①)    #生成密文

        elif 'x'<=c[i]<='z' or 'X'<=c[i]<='Z': 

            b=b+chr(ord(c[i])②)     #生成密文

        else:

            b=b+c[i]

miwen.insert("0.0",b) 

下列说法正确的是(    )

A . ①的位置填写-3 B . ①的位置填写+3、②的位置填写-23,或-26+3 C . ①的位置填写-23 D . ②的位置填写+3
循环结构for I = 5.5 to 0 step -2的循环次数是
在一升序数组a中插入一个数x,使数组元素仍保持升序。解决该问题的VB程序段如下,在横线处应填入的正确语句以实现功能。

i=n      'n为数组a中的元素个数

do while i>0 and a(i)>x

   

    i=i-1

loop

a(i+1)=x

最近更新