第三章 算法的程序实现 知识点题库

要求从某一字符串中删除指定的字符(假设所含的英文字母均为小写字母),并将处理后的字符串重新输出。

程序界面如图所示,在文本框Text_1中输入原始字符串,在文本框Text_2中输入需要删除的字符,单击“删除此字符”按钮(Command1)后,在文本框Text_3中输出处理后的结果。

解决此问题的算法流程图如图所示,相应的Visual Basic程序如下:

Dim p As String,k As String

Private Sub Command1_Click()

Dim s As Integer,result As String,flag As Boolean

result=“”

p=Text_1.Text

k=Text_2.Text

For s=1 To Len(p)

  flag=f(s)

  If Not flag Then

   result=result+①   

  End If

Next s

   

End Sub

Function f(s As Integer)As Boolean

  If Mid(p,s,1)=k Then f=True

End Function

  1. (1) 解决此问题的算法是。(选填:顺序查找或对分查找)
  2. (2) 在程序①和②划线处,填入适当的语句或表达式,把程序补充完整。

    程序中①划线处应填入

    程序中②划线处应填入

某算法的部分流程图如图所示,执行这部分流程,则“s≤100?”被执行的次数是(  )

A . 5 B . 4 C . 3 D . 2
有VB 程序段如下:

Randomize

For i=1 To 6

  a(i)= lnt(Rnd * 20)+1

  If a(i)Mod 2=i Mod 2 Then

    a(i)= a(i)-1

  Else

    a(i)= a(i)+2

  End If

Next i

执行该程序段后,a(1)~a(6)各元素可能的是(  )

A . 13,2,7,12,5,18 B . 22,7,0,15,4,19 C . 20,9,18,23,4,7 D . 6,0,4,21,18,17
某加密算法对大写字母加密,其加密规则如下:密文的ASCII码值=明文的ASCII码值+密钥,加密后生成的密文仍为大写字母。其密钥是在3*3矩阵中获得,获得密钥的方式为:如字母“A”的ASCII码值为65,将65反复除3,其转换过程如图1所示,得到商为2,密钥在矩阵中所在行;得到余数2,密钥在矩阵中所在列;商或余数为0,密钥在矩阵中最后一行或最后一列。其程序运行界面如图2所示。

  1. (1) 下列对象中没有Caption属性的是(单选,填字母:A .Command1 /B .Form1 /C .Text1和Text2)。
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Dim a(1 To 9) As Integer

    Private Sub Command1_Click()

    Dim column As Integer, row As Integer, t As Integer, tmp As Integer

    Dim s As String, ch As String, result As String

    s = Text1.Text: result = ""

    For i = 1 To Len(s)

      ch = Mid(s, i, 1): t =.

      column = (t - 1) Mod 3 + 1

      Do While t >= 3

        t = t \ 3

      Loop

        row =

        tmp = (Asc(ch) +  - 65) Mod 26 + 65

        result = result + Chr(tmp)

    Next i

    Text2.Text = result

    End Sub

    Private Sub Form_Load()      '用来生成3*3矩阵

    For i = 1 To 9

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

      s = s + Str(a(i))

      If i Mod 3 = 0 Then

        List1.AddItem s

        s = ""

      End If

    Next i

    End Sub

  3. (3) 程序中加框处代码有错,请改正。
  4. (4) 根据程序的功能并结合图2,字母C加密后的密文为
某编码由4个信息位和3个校验位组成,通过对编码信息进行验算,能够检测并纠正一位错误代码。该7位编码中b1~b4为信息位,p1~p3为校验位,位置如表所示:

编码中位

1

2

3

4

5

6

7

对位信息

p1

p2

b1

p3

b2

b3

b4

校验的方式如下,求校验值g1、g2、g3:

g1 = p1 Xor b1 Xor b2 Xor b4

g2 = p2 Xor b1 Xor b3 Xor b4

g3 = p3 Xor b2 Xor b3 Xor b4

其中Xor 为异或运算,规则是:0 Xor 0 =0,0 Xor 1 =1,1 Xor 0 =1,1 Xor 1 =0,p1 Xor b1 是将p1、b1 转换为二进制后按位进行异或运算,如7 Xor 12 的结果为11。

a.若计算得到的校验值g1、g2、g3 均为0,说明校验正确,数据无错误。例如:若7 位编码为1101001,计算校验值g1、g2、g3 值均为0,验证正确。

b.若校验值g1、g2、g3 不全为0,说明数据有错,出错位置为g3g2g1(二进制数表示),纠错的方法是对错误的位进行取反,即“0”变“1”,“1”变“0”。例如:若7 位编码为1111001,计算校验值g1=1、g2=1、g3=0,不全为0,说明数据有错,错误位置在011(二进制数)位,即第3位,原位置上“1”应为“0”,正确编码为1101001。

小明为此编写了VB 程序,程序运行时,在文本框Text1 中输入编码值,单击“校验”按钮Command1 后,在文本框Text2 中输出运行结果,如图所示。

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

  1. (1) 若按上述规则的7位编码为1001000,其中一位有错,则正确的编码应为
  2. (2) 请在划线处填入合适的代码并对加框处改正

    Function check(s As String) As Integer

    Dim i As Integer, g1 As Integer, g2 As Integer, g3 As Integer

    Dim c(1 To 7) As Integer

    For i = 1 To 7

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

    Next i

    g1 = c(1) Xor c(3) Xor c(5) Xor c(7)

    g2 = c(2) Xor c(3) Xor c(6) Xor c(7)

    g3 = c(4) Xor c(5) Xor c(6) Xor c(7)

    If g1 + g2 + g3 = 0 Then check=0 Else check=

    End Function

    Private Sub Command1_Click()

    Dim i As Integer, m As Integer, Outs As String

    m=  ② 

    If m = 0 Then

      Text2.Text = “验证正确,数据无错误”

    Else

      For i = 1 To 7

     If i = m Then

       Outs=Outs+   ③  

     Else

       Outs = Outs + Mid(Text1.Text, i, 1)

     End If

      Next i

      Text2.Text = “第” + Str(m) + “位上数据有错误,正确编码应为:” + Outs

    End If

    End Sub

     ② ③ 

    加框处改正:

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

x= "abcdcba": ans = 0

For i= 1 To Len(x) \2.

If Mid(x, i, 1) = Mid(x, Len(x)-i+ 1, 1) Then ans = ans+ 1

Next i

Text1.Text = Str(ans)

A . 1 B . 2 C . 3 D . 4
有如下 VB 程序段:

s = Text1.Text

If Mid(s, 1, 1) = "(" Then flag = True Else flag = False

cnt = 0: sum = 0

For i = 2 To Len(s)

  c = Mid(s, i, 1)

  If flag = True Then

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

      sum = sum + 1

    Else

    If sum <> 0 Then cnt = cnt + 1: sum = 0

    End If

  End If

  If c = "(" Then flag = True

  If c = ")" Then flag = False

Next i

文本框Text1的内容为一串只包含小写字母、左右括号和空格的字符串“(we can) do (better) we (should (be )better)”,执行程序段后,变量cnt的值为(   )

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

For i=1 to 3

    For j=1 to 5-i

        If a(j)>a(j+1) Then

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

        End If

    Next j

    Text1.Text = Str(a(i))+Text1.Text

Next i

数组元素a(1)到a(5)的值依次为“2,9,7,8,5”。若该程序段执行后,文本框Text1显示的内容是(    )

A . 2 5 7 B . 9 8 7 C . 2 7 7 D . 7 7 2
将数学代数式 写成VB表达式,正确的是(  )
A . -b+Sqr(b*b-4ac)/2a B . -b+Sqr(b*b-4*a*c)/(2*a) C . (-b+Sqr(b*b-4*a*c)/2*a) D . (-b+Sqr(b^2-4*a*c))/(2*a)
有如下VB程序段,该程序段运行后,在文本框中显示的内容是(  )

Dim a(1 To 10)As Integer

Dim i As Integer, j As Integer

a(1)=1:a(2)=1

For i=3 To 5

    a(i)=1

    For j=i-1 To 2 Step-1

        a(j)=a(j)+a(j-1)

    Next j

Next i

Text1.Text=Str(a(3))

A . 1 B . 3 C . 4 D . 6
   一般来说,在运用计算机解决一个具体的问题时,大致经历以下几个步骤: 、 、
程序代码如下:

i=1

s=0

while i<7:

    s=s+i

    i=i+1

    if i ==5:

        break

print("s=",s)

程序运行后输出的结果为(    )

A . 10 B . 15 C . 21 D . 死循环
列表q=[1,2,3,4,5,6],删除列表数值1,下列代码不能实现此功能的代码是(    )
A . del q[1] B . del q[0] C . q.pop(0) D . ABC都不可以。
以(    )开头的代码是注释语句,不参与程序的执行。
A . % B . C . “” D . #
以下表达式的值为16的是(    )
A . int(‘12’)+abs(-4. 2) B . len(‘China’)*2+max([2,4,6,3]) C . round(16.7325,2) D . ‘13’ +str(float(3))
以下语句的运行结果是(    )

pwd= {" Name" : "User", "Password" :"@YueKao108"}

pwd["Name* ]=" Administrator"

print(pwd["Name"][:4])

A . "User" B . "resU" C . "Admi" D . "Admin"
有如下VB程序段:

s1 = "567898765"

s2 = ""

n = Len(s1) \ 2

For i = 1 To n

    If Mid(s1,i,1) < Mid(s1, n + 1, 1) Then

        s2 = s2 + Mid(s1, i, 1)

    Else

        s2 = Mid(s1, n + i, 1) + s2

    End If

Next i

Text1.Text = s2

A . 98765 B . 7898 C . 5678 D . 56789
学校创客社团开展机器人比赛活动,其中设置了机器人循迹项目。比赛规则如下:给出10* 10规模的矩阵地图,随机设定4个循迹点,小车以蛇形路线找到循迹点后,计算最长的两点直线距离。矩阵图中以0表示非循迹点,1表示循迹点,循迹过程如图a所示:

编写一个VB程序实现如下功能:单击“开始循迹”按钮Command1,呈现10*10矩阵地图,并随机生成4个循迹点,分别用数字1表示,数字0表示非循迹点;计算4点中相距最远的两点的直线距离,显示在标签Label1中。程序运行界面如图b所示。

  1. (1) 若随机生成的4个循迹点如图a所示,则该4点中相距最远的两点直线距离为
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Const n = 10

    Const m=4

    Dim b(1 To 8) As Integer

    Private Sub Command1_Click()

        Dim f(1 To n* n) As Integer

        Dim i As Integer, j As Integer

        Dim w As Integer, k As Integer

        Dim length As Single, maxlen As Single

        Dim s As String

        '生成矩阵地图和随机生成4个循迹点,0表示非循迹点,1表示循迹点,存于数组f中,代码略。

        For i= 1 To n^2       '显示矩阵地图和4个循迹点

            s = s+ Str(f(i))

            If i Mod n=0 Then

                List1. AddItem s

                s=" "

            End If

        Next i

        w=1

        For i=1 To n

            For j=1 To n

                k = (n+1)* ((i-1) Mod 2)+(-1)-(i-1) * j

                If  Then     '记录循迹点所在位置

                    b(2*w-1)=i

                    b(2*w)=k

                    w=w+1

                End If

            Next j

        Next i

        i=1

        maxlen = 0

        Do While i<=m-1

            For j=i+1 To m

                

              If length > maxlen Then maxlen = length

            Next j

            i= i+1

        Loop

        Label1. Caption = Str( maxlen)

    End Sub

    Function reck(x As Integer, y As Integer) As Single

        Dim c As Integer, d As Integer

        Dim h As Single

        c=

        d=Abs(b(2*x)-b(2*y))

        h=Sqr(c^2+d^2)

        reck = h

    End Function

在python中,下面代码的输出结果是(    )

x=10

y=3

print(x%y)

A . 3 B . 13 C . 30 D . 1
执行下列语句后的显示结果是(    )

a=1

b=2*a/4

a="one"

print(a, b)

A . one 0 B . 1 0 C . one 0.5 D . one,0.5
最近更新