2.2 算法的控制结构 知识点题库

编写VB程序,界面设计如图所示,使其具有下列功能:在文本框Text1中输入一个小于20的正整数n,单击“计算”按钮Command1,计算斐波那契数列中第n项的值,并在标签Label2中输出结果;若输入错误,则在标签Label2中显示相应的提示信息。(斐波那契数列是指这样的数列:1,1,2,3,5,8,13…。即:第1项和第2项的值均为1,从第3项开始,每一项的值是它前面两项之和)

  1. (1) 代码“Private Sub Command1_Click()”中的Command1 是       。(单选,填字母)
    A . 对象名 B . 属性名 C . 属性值 D . 事件名
  2. (2) 为实现上述功能,请在划线处填入合适的代码。

    Private Sub Command1_Click()

    Dim n As Long, k As Integer

    Dim f1 As Long, f2 As Long, f As Long

    =Val(Text1.Text)

        If n >= 20 Or n <= 0 Then

            Label2.Caption = "输入的数据有误"

        Else

            If n <= 2 Then         ' 第1,2个元素的值都为1

                f = 1

            Else

                f1 = 1

                f2 = 1

                For k = 3 To n

                    f = f1 + f2

                    f1 = f2

                    f2 = f

                Nextk

            End If

            Label2.Caption = "斐波那契数列第" + Str(n) + "项的值为" +  

        End If

    End Sub

  3. (3) 若在文本框Text1.Text输入21,则标签Label2显示的内容为
统计“英文句子单词平均长度”的程序,其实现功能为在文本框Text1中输入要统计的英文句子,单击“统计”按钮Command1。进行统计,求出句子中共有几个单词、句子单词的平均长度,并显示在标签框Label1中。程序运行界面如图所示。

  1. (1) 代码“Private Sub Command1_Click()”中的Command1_Click是(单选,填字母:A,对象名/B,事件名/C,事件处理过程名)。
  2. (2) 实现上述功能的VB程序如下,请在画线处填入合适的代码。

      Private Sub Command1_Click()

        Dim S As String

        Dim n As Integer

    Dim cnt As Integer

    Dim i As Integer

    Dim num As Single

    Dim cd As Single

    Dim ave As Single

    s=Text1.Text

    n=Len(s)

    hum=0

    cd=0

    cnt=0

    For i=1 To n

           ①  

          If c>“a”And c<=“z” Or c>=“A”And c<=“Z”Then

            cnt=cnt+1

          Elself c>=”0”And c<=”9”Then

            cnt=cnt+1

          Else

           If cnt>0 Then

              num=num+1

              cd=cd+cnt

         ②  

           End If

         End If

        Next i

        If cnt>0 Then

           num=num+1

           cd=cd+cnt

        End If

        Ave=cd/num

        Label1.Caption=“总共有”+Str(num)+“个单词,平均长度为”+Str(ave)

      End Sub

     ② 

  3. (3) 若在文本框中输入“you are "No1".”,则经过上述程序统计共有单词数为个。
某算法的部分流程图如图a所示。参照这部分流程图图b程序代码中①处正确的程序段是(  )

A . For i= 3 To 100 Step 2     s=s+1 Next i B . For i= 1 To 101 Step 2     s=s+1 Next i C . Do While i <= 100     s=s+i     i=i+2 Loop D . Do While i <= 100     i=i+2     s=s+i  Loop
下列程序段执行后,变量s的值是(  )。

s=0

For i=1 To 10

 s=s+i

Next i

A . 1 B . 0 C . 55 D . 10
有如下VB程序段:

For i = 1 To 6

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

Next i

For i = 1 To 5

  If i Mod 2 = 1 And a(i) < a(i + 1) Then

    t = a(i): a(i) = a(i + 1): a(i + 1) = t

  Else

    a(i) = a(i) - 1

  End If

Next i

执行程序后,a数组各元素可能是(    )

A . 9,9,8,7,5,3 B . 2,6,10,8,9,5 C . 9,6,7,3,11,8 D . 9,3,8,-1,7,2
以下流程图描述的算法执行结果是(    )。

A . 6 B . 5 C . 4 D . 36
有如下 VB 程序段:

s1 = "abcde" j = 1

s2 = "a"

For i = 1 To Len(s1)

  j = (j + 2) Mod Len(s1) + 1 s2 = s2 + Mid(s1, j, 1)

Next i Text1.Text = s2

执行该程序段后,文本框Text1中输出的内容是(   )

A . acebda B . Acdeab C . Adbeca D . adaceb
在顺序结构中,各语句依次按顺序执行。其流程图的表示方式是(   )
A . B . C . D .
由数组a生成数组b的方法描述如下:

⑴将数组a中的n个元素依次分割出若干个数据块,每个数据块有2m个元素,分割时,按尽可能大的数据块进行分割。

⑵对每个分割出的数据块进行求和,将和依次存储在数组b中。

例如:n=13,可将a(1)~a(13)依次分割成3个数据块,元素的个数分别为8、4、1。将3个数据块的和依次存储在b(1)、b(2)、b(3)中。

小明依据上述描述设计了如下VB程序,运行界面如图所示。请回答下列问题:

Const n = 13

Dim a(1 To n)  As  Integer Dim b(1 To n) As Integer Private Sub Command1_Click()

  Dim start As Integer                 ‘当前未分割数据的第1个元素下标

  Dim i As Integer, k As Integer, pb As Integer, left As Integer, m As Integer

  '读取n个数据,依次存储到a(1)、a(2)、……a(n)中,并对数组b赋初值为 0,代码略

  start = 1: left = n: m = 0

  Do While 2 ^ m <= left             ‘寻找第1个数据块

         ①       

  Loop

  m = m - 1

  pb = 1

  Do While left > 0

    For i = start To start + 2 ^ m - 1

            ②         

    Next i

    List1.AddItem Str(2^m) + " " + Str(b(pb)) pb = pb + 1

            ‘改错

    left = left - 2 ^ m

    Do While left < 2 ^ m

      m = m - 1

    Loop

  Loop

End Sub

  1. (1) 当 n=110时,分割出的数据块有 个。
  2. (2) 程序代码中,将划线处语句补充完整。

     ② 

  3. (3) 程序代码中,加框处语句有错,请改正。
有如下VB程序段:

s = Text1.Text

For i=1 To Len(s)

  ch = Mid(s,i,1)

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

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

    ch = Chr(Asc(ch)-32)

    t=t+ch

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

    t=ch+t

  End If

Next i

Text2.Text = t

已知'A'的ASCI码为65,'a'的ASCI码为97。程序运行后,在文本框Text1中输人“Text2.text=”Abc1234“”(外括号不包括),则在Text2中显示的内容是(    )

A . TEXT2.TEXTABC1234 B . 43212TexttextABC C . 43212TEXTTEXTABC D . TEXTTEXTABC43212
有如下VB程序段:

s=0

For i= 1 To 10

    For j=i To 10

        s=s+1

    Next j

Next i

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

A . 45 B . 50 C . 55 D . 100
有如下VB程序段:

Function fun(x As Integer) As Integer

    If x <= 2 Then

        fun = x

    Else

        fun = 2 * fun(x - 1) + fun(x - 2)

    End If

End Function

则表达式fun(5)的值为(   )

A . 12 B . 29 C . 30 D . 70
有VB程序段如下:

s = "United by Emotion": s1 = "”

For i=1 To Len(s) Step 4

    c = Mid(s, i,1)

    If Asc(c) >= Asc("a") Then

        c = Chr(Asc(c) - Asc("a") + Asc("A"))

        s1=c+s1

    End If

Next i

程序运行后,s1的值是(     )

A . "UEYON" B . "NOYE" C . "EYON" D . "UEEI"
下列哪种结构,可以实现程序的判断(    )。
A . 顺序结构 B . 选择结构 C . 循环结构 D . 组合结构\
某种编码为4位二进制码,前2位表示方向,后2位表示距离。编写一个程序,将编码翻译成方向和距离。距离值为每组编码后两位二进制码转换为十进制数的值。

例如,输入“0110”,前两位的01代表方向为“西”,后两位的10转化为十进制,代表距离为2。请回答以下问题。

 

  1. (1) 实现上述功能的Python代码如下,请在划线处填入合适的代码。

    a=input("请输入四位二进制码")

               #获取方向码

    fx_dict={"00":"东","01":"西","10":"南","11":"北"}

    s=+int(a[3])         #根据后两位计算距离

    print("方向为:",fx_dict[fx])

    print("距离为:",s)

  2. (2) 分析上述代码后可知,输入“0011”,则方向为,距离为
某影厅共12排,每排10座。座位编号以排号+座号来命名,如第10排3座,编号命名为103。该影厅的最佳观影区为方框内的座位,即第5排3座~第10排8座的矩形位置。0表示该座位可选,非0表示已售(1表示系统推荐,2表示手工选择) 座位推荐算法:

1)只推荐最佳观影区的座位,从前往后,优先选择最中间的位置,若找到最中间位置,则推荐,否则继续寻找下一排,以此类推;

2)购票数为1时,推荐单个靠中间的位置,大于1时,只推荐连续的座位;

3)若在最佳观影区内未找到可以推荐的座位时,系统将提示手工选择。编写VB程序,模拟电影院选座。在文本框Text1中输入购票数,单击“选座”按钮Command1,在标签Labe12中显示机选座位。程序运行界面如图所示。

  1. (1) 该影厅空座情况不变如上图所示,若购票数由2改为1,则推荐的座位编号为
  2. (2) 实现上述功能的VB程序如下,请在划线处填写合适的代码。

    ConstC=10:ConstR=12    '每排10座,共12排

    Dim zw(1 To C * R) As Integer, kzw(1 To C * R) As Integer      '座位,空座位

    Private Sub Form_ Load ()

        '读取影厅座位数据存入数组zw,并将座位信息显示在列表框list1中,代码略

    End Sub

    Private Sub Command1_Click ()

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

        Dim x As Integer, min As Integer, start As Integer

        Dim m As Integer, n As Integer, ans As String

        m = Val (Text1.Text)          '购票数,确保数值在座位数以内

        n=0            '空座位的个数

        For i=5 To 10         '统计最佳观影区中的空座位编号

            For j=3 To 8

                If zw((i-1)*C+j)= 0 Then

                    n=n+1

                    kzw(n) =

                End If

            Next j

        Next i

        min = C: start=0: k=1

        Do While k+m-1<= n

            If kzw(k) + m-1= kzw(k +m- 1) Then

                x=Abs(C\2-(kzw(k)+kzw(k+m-1))\2 Mod C)

                If x < min Then

                    min=x

                    start = k     '记录满足座位条件的起始空位号

                    If min=0 Then Exit Do    'Exit Do表示退出循环

                End If

            End If

           

        Loop

        ans =””

        If start = 0 Then

            ans = "未能推荐座位,请手工选座"

        Else

            For i = kzw(start) To

            'CStr函数把表达式转换为字符串,不产生前置空格

           ans = ans + "第"+ CStr(i \C+ 1) +"排"+ CStr(i ModC) +"座"

          Next i

        End If

        Label2.Caption = ans

    End Sub

以下选项中,与其它三项功能不同的是(    )
A . maxv = a

if b > maxv:

maxv = b

if c>maxv:

maxv = c

B . if a>b and a>c:

maxv = a

elif b>c:

maxv = b

else:

maxv = c

C . if a>b:

maxv = a

else:

maxv = b

if c > maxv:

maxv=c

D . If a >b and a >c:

maxv = a

if b>a and b > c:

maxv = b

ifc>a and c>b:

maxv = c

程序如下,键盘输入23和3,最后无法输出26,出错语句为(    )

a=int(input())①

b=int(input())②

c=a+b

print('c')③

A . B . C . D . 都出错
下列VB程序段功能为:在文本框 Text中显示整型数组元素a(1)到a(9)中的最小值和最大值。

amin= a(1) : amax=a(1)

i=2 : j=9

Do While i <= j

    If a(i) > a(j) Then

       

        

    Else

       

       

    End If

    i=1 : j=j-1

Loop

Text 1. Text= Str(amin)+"," Str(amax)

上述程序段中方框处可选语句为:

①If a(j)>amax Then amax =a(j)

②If a(j)< amin Then amin =a(j)

③If a(i)<amin Then amin =a(i)

④If a(i)>amin Then amin =a(i)

则(1)(2)(3)(4)处语句依次可为(    )

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

Dim s1 As String, s2 As String, n As Integer, t As Integer

Dim a(128) As Integer

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

s2 =""

For i=1 To n

    t = Asc(Mid(s1, i, 1))

    a(t)=a(t)+1

Next i

For i=1 To 128

    Do While a(i)> 0

        s2 = s2 + Chr(i)

        a(i)=a(i)-1

    Loop

Next i

Text2.Text = Mid(s2,5,1)

若Text1中输入的字符串为“He1lo535Study" (不包括引号) ,运行上述程序后,Text2中显示的结果为(    )

A . o B . e C . S D . 5
最近更新