分支结构语句及程序实现 知识点题库

以下流程图描述的算法,执行结果是

有如下VB程序段:

s = “QUOTES:keep on going never give up!”

flag = False: m = 0

For i = 1 To Len(s)

  ch = Mid(s, i, 1)

  If ch >= “a” And ch <= “z” Then

    If Not flag Then

      m = m + 1

      flag = True

    End If

  Else

    flag = False

  End If

Next i

Text1.Text = Str(m)

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

A . 5 B . 6 C . 7 D . 21
以下是凯撒密码的改进版,请将下划线处内容补充完整。

import os  #开始

def NewCaesar(m,n,t):

  z='';i=0

  while i<:

    tmp=

    if tmp in m:

      if ord(t[i])<=90:

        z+=n[m.find(tmp)]

      else:

        z+=n[m.find(tmp)].lower()

    else:

      z+=t[i]

    i+=1

  return z

m='ABCDEFGHIJKLMNOPQRSTUVWXYZ'

n='QWERTYUIOPASDFGHJKLZXCVBNM'

a=input('请输入<明文>a=')

b=NewCaesar(m,n,a)

print('对应的密文为:',b)

c=NewCaesar(n,m,b)

print('解密后明文为:',c)

if :

  print('加密解密成功!')

else:

  print('加密解密失败!')

input("运行完毕,请按回车键退出...")

os._exit(0)

#结束

字符串数组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
小王编写统计工厂中生产某种零件的工人数量的VB程序,运行程序后,从数据库中获取每个工人生产的零件数量,并存储在数组xs中:在文本框Text1中输入达标零件数da,单击“开始统计”按钮Command1,筛选数组xs中大于等于所输入零件数da的数据,并依次存储在数组bf中。最后统计数组bf中生产相同零件数量的人数,存储在数组tj后,将统计结果输出在列表框List1中,数组tj中各元素的含义如下表所示,程序运行界面如图所示。

数组元素

数组元素的含义

tj(1)

存储查找到第1个大于da的零件数

tj(2)

存储生产了tj(1)个零件的工人数量

tj(2*i-1)

存储查找到第i个大于da的零件数

tj(2*i)

存储生产了tj(i)个零件的工人数量

例如:tj(1)=1948,tj(2)=12。这对数据的含义为:共有12个工人生产了1948个零件。

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

  1. (1) 根据程序运行界面的数据及数组tj中各元素的含义进行分析,数组元素tj(8)的值是(填数值)。
  2. (2) 请在画线处填入合适的代码。

    Private Sub Command1_Click( )

      Dim bf(1 To 1000)As Integer

      Dim maxn, d, k, sa As Integer

      Dim I, j, flag As Integer

      da=Val(Text1.Text):maxn=0:k=1

      For j=1 To n

        If xs(j)>=da Then maxn=maxn+1

        bf(maxn)=xs(j)

      Next j

      For i=1 To maxn

        flag=0

        For j=1 To i-1

            If bf(i)=bf(j) Then flag=1

        Next j

        If flag=0 Then

             ①   

          d=1

            For j=i+1 To maxn

              If bf(i)=bf(j) Then   ②   

            Next j

            tj(2*k)=d

            k=k+1

          End If

        Next i

        k=k-1

        For j=1 To   ③   

          List1. Addltem Str(tj(j))+"     "+Str(tj(j+1))

        Next j

    End Sub

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

统计不同单词个数,在Text1中输入一行单词,点击“统计”按钮后在Text2中输出不同单词的个数。单词字母有大小写,同一单词的大小字母视为相同,句子以符号结尾, 程序运行界面如图1所示。

图1

图2

  1. (1) 观察以下代码,该代码中 Command1_Click()是(选:A . 对象名 /B . 事件名 /C . 事件处理过程名)
  2. (2) 在设计应用程序界面时,应使用图2所示“控件工具箱”中的添加列表框List1.
  3. (3) 实现上述功能的VB程序如下,请在划线处填入合适代码。

    Private Sub Command1_Click()

      Dim a(1 To 100) As String ,s As String, ch As String, word As String

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

      s = Text1.Text : k = 0 : word = ""

      For i = 1 To Len(s)

        ch = Mid(s, i, 1)

        If ch >= "a" And ch <= "z" Or ch >= "A" And ch <= "Z" Then

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

            word = word + ch

          Else

            flag = False

          For j = 1 To k

            If a(j) = word Then flag = True

          Next j

          If Not flag And word <> "" Then

            

            a(k) = word

            numb = numb + 1

          End If

          

        End If

      Next i

     Text2.Text = str(numb)

    End Sub

卡普利加数又称雷劈数,是指将该数的平方数拆分成两部分,若这两部分的和与该数相等,则该数为卡普利加数。小陈编写VB程序,实现功能:文本框Text1输入一个正整数,单击“判断”按钮,在标签Label2中显示该数的平方,如果该数是卡普利加数,在标签Label3中显示两数和相加的等式,否则显示“该数不是卡普利加数”。运行界面如下图所示:

  1. (1) “判断”按钮的对象名为
  2. (2) 请在划线处填入合适的代码。

    Private Sub Judge_Click( )

        Dim x As Integer, i As Integer

        Dim y As Long, flag As Boolean

        flag = False

        x = Val(Text1.Text)

        i = 10

       

        Label2.Caption = "该数的平方是:" + Str(y)

        Do While y \ i > 0 And flag = False

            t1 = y \ i

            t2 = y Mod i

            If  Then

                flag = True

                Label3.Caption = Str(t1) + "+" + Str(t2) + " = " + Str(x)"

            End If

            i =

        Loop

        If Not flag Then Label3.Caption = "该数不是卡普利加数"

    End Sub

  3. (3) 已知55是卡普利加数,根据以上程序,在文本框Text1中输入55,则标签Label3中显示的表达式是:
寻找受潮药瓶。现有5瓶药,每瓶有20粒药丸,每粒药丸重10克,其中有几瓶受潮了,受潮的每粒药丸重11克,如何用天平只称一次找出受潮的那几瓶药?

解决此问题的方法是:将5瓶药编号为1~5号,从中分别取出1、2、4、8、16粒药丸进行称重。在不受潮时应是(1+2+4+8+16)×10=310(克)。假如称出的重量是315克,那么超出的重量是5克,说明有5粒超重,(5)10=(00101)2 , 因此受潮的是第1瓶和第3瓶。编写程序模拟此过程,程序运行时,单击“模拟”按钮Command1,在文本框Text1中输出超重克数,在列表框List1中输出药瓶编号,运行界面如图所示。

  1. (1) 代码中List1.AddItem中的AddItem是。(选,填字母:A .属性名 / B .方法名 /C .事件名)
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适代码。

    Private Sub Command1_Click()

        Dim s As Integer, cz As Integer       'cz存储超重克数Dim k As Integer

        '依次从1~5号瓶中取出1、2、4、8、16粒药,并计算总重量,存储在变量s中,代码略

        cz = s - 310

        Text1.Text =

        k = 0

        Do While  cz <> 0  

            k = k + 1

            If  Then

                List1.AddItem "第" + Str(k) + "瓶"

            End If 

            cz = cz \ 2

        Loop

    End Sub

  3. (3) 假如超重为10克,则受潮的药瓶编号是(填数字:若有多瓶,用“,”号隔开)
阅读下面一段程序,运行后可能会出现什么结果(   )

Private Sub Command1_ Click ()

    Dim i As Integer

    For i=1 To 10

        If Not i Mod 2=0 or i Mod 5=0 Then

            Print i

    Next i

End Sub

A . 出现错误:块If没有End if B . 在窗体中输出2、4、5、6、8、10 C . 出现错误:Next没有For D . 在窗体中输出1、3、5、7、9、10
下列选项中,与语句y=-Abs(x)实现功能相同的是(   )
A . If x < 0 Then y = -x else y = x B . If x > 0 Then y = x else y = -x C . y = -x

If y > 0 Then y = -y

D . y = x

If x < 0 Then y = -x

运行如下VB程序:

Private Sub Command1_Click( )

    Dim x As Integer

    Dim y As String

    x=Val(Text1.Text)

    If x>=95 Then

        y=“非常满意”

    ElseIf x>=80 Then

        y=“满意”

    ElseIf x>=60 Then

        y=“基本满意”

    Else

        y=“不满意”

    End If

    Label1.Caption=y

End Sub

在文本框Text1中输入50,单击命令按钮Command1后,在标签Label1中显示(    )

A . 非常满意 B . 满意 C . 基本满意 D . 不满意
  小张要对一批数据加密,数据内容全部由英文单词和空格组成(不包含数字和标点符号,数据最终以英文单词结尾,每个单词至少由两个字母组成)。加密时小张先从文本框中读取整段原文内容,然后对每个单词进行如下操作:每个单词中第一个和第二个字母交换位置,第三个字母按字母表顺序向后移动3 位,并后移到整个单词的最后面,其余字母前移,过程如图所示。例如:单词“Hazarded”,经过转换之后得到的密文是“aHardedc”。

代码和程序运行界面如下所示,请在划线处填入合适的代码,并且在加框处代码有错误,请改正:

 

Const n = 1000

Dim mw(0 To 1000) As String    '存放转换后密文的字符

Function zh(s As String) As String     '按字母表后移3位进行转换

    Dim p As Integer,flag As Boolean

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

        p = Asc(s) - 96: flag = True

    Else

        p = Asc(s) - 64: flag = False

    End If

        ①   

    If flag Then zh = Chr(p + 96) Else zh = Chr(p + 64)

End Function

Private Sub Command1_Click()

    Dim i As Integer, j As Integer, t As String, a As Integer

    Dim tmp As String, k As Integer, s As String

    s = Text1.Text

    k = 1: a = 1

    For i = 1 To Len(s)

    t = Mid(s, i, 1)

    If t = " " Then

        k = 0: mw(i) = t

    Else

        If k < 3 Then

            mw(i + a) = t: a = -a

        Else

            tmp = zh(t)

            j = i

            Do While

                   ②  

                j = j + 1

            Loop

            mw(j) = tmp

               ③   

        End If

    End If

    k = k + 1

    Next i

    For i = 1 To Len(s)

        Text2.Text = Text2.Text + mw(i)

    Next i

End Sub

请回答下列问题:

  1. (1) 如果输入的原文单词是“TextBox”,则加密后的密文是
  2. (2) 加框处代码有错误,则正确的是
  3. (3) 请将划线处补充完整

     ② ③ 

现有如下python程序段:

for i in range( 6 ):

    p.append( int( random() * 10 ) + 1 )

for i in range( 2, 6 ):

    if i % 2 == 1 and p[ i ] % 2 == 0:

        p[ i ] += p[ i - 1]

    elif i % 2 == 0 and p[ i ] % 2 == 1:

        p[ i ] -= p[ i - 1]

执行该程序段后,在下列选项中,列表p中的元素值不可能的是(    )

A . 1, 2, 3, 4, 7, 2 B . 1, 2, 14, -9, -5, 8 C . 6, 8, 1, 4, 6, 10 D . 6, 4, 14, -7, 3, 8
PRIVATE SUB FORM_CLICK( )

    A=VAL(INPUTBOX(“请输入第一个数”))

    B=VAL(INPUTBOX(“请输入第二个数”))

    C=VAL(INPUTBOX(“请输入第三个数”))

    M=A

    IF M>B THEN M=B

    IF M>C THEN M=C

    PRINT M

END SUB

A . 给出三个数中的大数 B . 给出三个数中的小数 C . 给出三个数中的某个数 D . 出错
有N个人围成一个圈,从1到k报数,报到k的人出列,剩下的同学继续围成一个圈,由出列位置的下一个同学再从1开始报数,输出出列的顺序,则①②划下线处填空选项为(    )

Private Sub Command1 Click)

    Const n=9 '总人数

    Dim b(1 Ton) As Integer

    Dim k As Integer, i As Integer, p As Integer, cnt As Integer, pre. p As Integer

    k =Val(Text1. Text)

    For i= 1 Ton

        b(i)=iModn+1

    Next i

    p = n:i = 0:cnt=0

    Do While i<n

        pre_p = p

        p=   ①   

    cnt=cnt+1

    If cnt=k Then

       List1. AddItem Str(p)

       b(pre_p)    ②    

       cnt=0

       i= i+1

    End If

  Loop

End Sub

A . ①b(p)   ②b(p) B . ①p mod n+1   ②b(p+1) C . ①b(p)   ②b(p+1) D . ①(p-2+n) mod n    ②b(p)
小明编写了一个VB程序,功能如下:输入一个不超过10000的整数,若该数的各位数字之积是其各位数字之和的倍数,则输出“Yes”,否则输出“No”。

程序运行时,在文本框Text1中输入一个整数,单击“判断”按钮Command1后,在标签Label3中显示判断结果。程序运行界面如下图所示。

  1. (1) 在设计程序界面时,要清空标签Label3中的显示内容,应修改该标签的属性。
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适代码。

    Private Sub Command1_Click()

        Dim x As Integer, h As Integer, k As Integer

        x = Val(Text1.Text)

        h = 0

        k=1

        Do While x > 0

            h = h + x Mod 10

            k=

            x = x \ 10

        Loop

        IfThen

            Label3.Caption = “Yes”

        Else

            Label3.Caption = “No”

        End If

    End Sub

  3. (3) 运行该程序,在文本框Text1中输入1234,单击“判断”按钮,显示的判断结果为
有如下VB程序段:

For i=1 To 6

    If i Mod 2<>0 Then

        If a(i) Mod 10>5 Then

            a(i)=a(i) \ 10

        Else

            a(i)=a(i) Mod 10 

        End If

    Else

        a(i)=a(i- 1)+1

    End If

Next i

程序运行后a(1)到a(6)的值分别是2,3,4,5,0,1,则a(1)到a(6)各元素的初始值可能是(     )

A . 26,1,4,2,8,3 B . 12,1,14,2,11,3 C . 15,1,2,3,4,5 D . 29,1,40,2,3,30
有如下 python 程序段:

s = "1R2u3n_to45";num = 0

for i in s:

  if "a" <= i <= "z" or "A" <= i <= "Z":

    continue

  elif "0" <= i <= "9":

    num = num * 10 + int(i)

  else:

    break

该程序段运行后,num的值为(     )

A . 12345 B . 123 C . 45 D . 1
在Python中,下列关于if选择结构说法错误的是(   )。
A . if语句中可以没有else子句 B . 同一级别的if语句中可以有多个else子句 C . 同一级别的if语句中可以有多个elif子句 D . if选择结构可以多层嵌套
小明想要统计一篇英语作文中某些单词出现的次数,他设计了如下算法:

#将要统计的单词储存在列表lis中,代码略

wordcount={}

#导入作文,分词后储存在列表zw中,代码略

for word in zw:

    if word in lis:

          ①  :

            wordcount[word]+=1

         ②  :

            wordcount[word]=1

print(wordcount)

  横线处应填入的代码是(    )

A . ①if word in wordcount      ②else B . ①if word in lis            ②else C . ①if wordcount[word]!=1     ②else D . ①if wordcount[word]==True  ②elif wordcount[word]==False