算法与程序设计 知识点题库

[加试题]如图所示的VB程序中,输入以下程序代码,运行后单击命令按钮Command1,出现错误的提示图是:(   )

Private Sub Command1Click()

Dim a(1 To 4) As Integer

Dim i As Integer

   a(1) = 1

 For i = 2 To 4

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

 Next i

List1.AddItem Str(a(i))

End Sub

A . B . C . D .
下列不是用于程序设计的软件的是 (     )
A . BASIC B . C语言 C . WORD D . Pascal
VB标准函数Rnd的作用是返回一个大于等于0且小于1的随机数。要产生[10,99]的随机整数的VB表达式是(   )
A . Int(Rnd*89) B . Int(Rnd*90)+10     C . Int(Rnd*99)+10 D . Int(Rnd*89)+10
【加试题】小林和小王合作编写一个查询英语单词的VB程序:小林编写一个过程,单击“读取数据库”按钮Command1,从一个数据库中读取英语单词和中文含义,分别保存在a数组和b数组中。并显示在List1中;小王编写另一个过程,在文本框Text1中输入要查询的单词,单击“查询”按钮Command2,将查询单词的中文含义显示在Text2中,程序界面如图所示。

  1. (1) 分析程序,“英语单词”和“中文含义”被保存在数据表中。
  2. (2) 按此要求编写的程序如下,请在画线处填入合适的代码。

    Const n=3500               ’存储单词的总数

    Dim a(1 To n)As String      ’依次存储每个英语单词

    Dim b(1 To n) As Strin9    ’依次存储每个英语单词的中文含义

    Private Sub Command1_Click()

      Dim Conn As New ADODB.Connection

      Dim rs As New ADODB.Recordset

      Dim strSQL As String

    conn.ConnectionString=“Provider=Microsoft.ACE.OLEDB.12.0;Data source=”&App.Path&“\dictionary1.accdb”

      strSQL=”select*from list”

      conn.Open

      Set rs.ActiveConnection=conn

      rs.Open strSQL

      num=0

      Do While Not rs.EOF

           num=num+1

           a(mum)=rs.Fields(“英语单词”)

           b(num)=rs.Fields(“中文含义”)

           rs.MoveNext

      Loop

      rs.Close

      conn.Close

      Set rs=Nothing

      Set conn=Nothing

      For i==1 To n

             List1.AddItem a(i)+“  ”+b(i)

      Next i

      End Sub

      Private Sub Command2_Click()

      Dim s As String

      S=Text1.Text

      If search(s)=-1 Then

              Text2.text=“找不到该单词”

      Else

              Text2.Text=   ①  

      End If

      End Sub

      Function search(key As String)As Integer

      Dim i,j As Integer

      Dim mid1,mid2 As Integer

      i=1:j=n

      search=-1

      Do While i<=j

           mid1=Int(j+(j—i)/3)

           mid2=Int(j-(j-i)/3)

           If key=a(mid1)Then

                search=mid1

                Exit Do

           ElseIf key<a(mid1)Then

                j=mid1-1

           ElseIf key=a(mid2)Then

                search=mid2

                Exit Do

           Elself key>a(mid2)Then

                i=mid2+1

           Else

                i=mid1+1

                   ②  

           End If

     Loop

    End Function

        ②  

有如下VB程序段:

a(l) = "Java": a(2) = 〃VB": a(3) = "Swift"

a⑷="Pascal": a(5) = "Python": a(6) = "Delphi

For i = 1 To 3

  For j = 1 To 6 - i

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

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

    End If

  Next j

Next i

执行该程序段后,数组a(1)到a(6)的数据依次是(  )

A . Delphi  Java  Pascal  Python  VB  Swift B . VB  Swift  Python  Pascal  Java  Delphi C . VB  Swift  Python  Java  Pascal  Delphi D . Java  Pascal  Delphi  Python  Swift  VB
小虞编写了一个求数列、……前10项和的程序,VB程序段如下:

s = 1/2 + 2/3 : t = 1: b = 2

For i= 3 To 10

 

Next i

Label1.Caption = "前10项的和是:" + Str(s)

方框中的代码由以下四部分组成:

①b = r   ②t = b   ③r = t + b    ④s = s + r/(r + b)

代码顺序正确的选项是(  )

A . ④③①② B . ④③②① C . ③④①② D . ③④②①
RGB颜色模式是用8位二进制数表示红色、8位二进制数表示绿色、8位二进制数表示蓝色即使用24位二进制数表示一种颜色的模式。若将每位二进制数取反,即(0改为1、1改为0)就会变为另一种颜色,我们称这种方式为颜色反相。小明编写了一个VB程序实现上述功能,在名称为o_c_txt的文本框中输入原始颜色如#000000,点击命令按钮fx_cmd后,在名称为f_c_lab的标签中输出反相后的颜色如#FFFFFF。运行效果如图所示。实现上述功能的算法如下:

  数组dzb_h的16个元素分别存放16进制数的16个基本数码。

  依次取出原始颜色代码中每一位对应的16进制数码,例如原始颜色代码为#123456,第1次取出1,第2次取出2……

  在数组dzb_h各元素中找到对应16进制数码的元素

  运用规律:0+F=1+E…=7+8取得反相色并累加,例如:数组dzb_h第1个元素值的反相色的值是数组dzb_h第16个元素值。

  输出得到的反相色。

  实现上述功能的VB程序代码段如下,请完善相关程序代码。

Private Sub fx_cmd_Click()

Dim dzb_h(1 To 16) As String

Dim o_c As String, f_c As String, i As Integer, xbxh As Integer, c As String

dzb_h(1)="0":dzb_h(2)="1":dzb_h(3)="2":dzb_h(4)="3":dzb_h(5)="4":dzb_h(6)="5":dzb_h(7)="6"

dzb_h(8)="7":dzb_h(9)="8":dzb_h(10)="9":dzb_h(11)="A":dzb_h(12)="B":dzb_h(13)="C"

dzb_h(14)="D":dzb_h(15)="E":dzb_h(16)="F"

o_c=o_c_txt.Text     

 

f_c="#"

  Do While i<=Len(o_c)

    c=Mid(o_c,i,1)

    If Asc(c)>96 Then

    xbxh=1

    Do While xbxh<17

      If  Then

        f_c= 

        Exit Do

      End If

      xbxh=xbxh+1

    Loop

    i=i+1

  Loop

  f_c_lab.Caption=f_c

End Sub

数组a中存储的是左右交替上升的n个正整数,如下表所示:

a(1)

a(2)

a(3)

……

a(n-2)

a(n-1)

a(n)

3

25

38

……

55

31

12

依据对分查找思想,设计一个在数组a中查找数据key的程序,实现该功能的VB程序如下,但加框处代码有错,请改正。

Private Sub Commandl_Click()

Const n = 6

Dim a(1 To n)As Integer,flag As Boolean

Dim I As Integer,j As Integer,m As Integer,key As Integer

'读取一组正整数,按上述规则存如数组a中,代码略

key = Val(Text1.Text)

i = l

j =(n + 1)\2

flag = False

Do While  And Notflag      '(1)

  m = (i+j)\ 2

  If key = a(m)Then

      flag = True

  ElseIf key < a(m)Then

      j = m - 1

  Else

      i= m + 1

  End If

Loop

If Not flag And j >0 Then

  m=       '(2)

  If key = a(m)Then flag =True

End If

If flag Then

  Text2.Text = Str(m)

Else

  Text2.Text = "找不到"

End If

End Sub

 ⑵ 

VB语句List1.Addltem d(i)的作用是把数组d的数据添加到列表框对象List1中。该语句中的“AddItem”是(  )
A . 属性名 B . 属性值 C . 方法 D . 事件
使用计算机编程解决问题的首要步骤是(  )
A . 设计图纸 B . 分析问题 C . 查找资料 D . 问卷调查
要使输出的数据为十进制整数,则可以在print( )函数中添加哪种格式?(   )
A . %d B . %.f C . %.1f D . %.2f
以下VB程序利用选择排序思想对数组a进行升序排序。

For i=1 To n\2

    iMax= i:iMin= i

    For j=i+ 1 To n-i+1

        If a(j) > a(iMax) Then iMax=j

        If a(j) < a(iMin) Then iMin=j

    Next j

   

    If iMax= i Then

        

    Else

        

    End If

Next i

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

①temp=a(i):a(i)=a(iMin):a(iMin)=temp

②temp=a(iMin):a(iMin)=a(n-i+1):a(n-i+1)=temp

③temp=a(iMax):a(iMax)=a(n-i+1):a(n-i+1)=temp

则方框处的语句依次为(   )

A . ①②③ B . ①③② C . ②①③ D . ③②①
下列不属于基本数据类型的是(    )
A . 浮点型 B . 整型 C . 布尔型 D . 复数类型
数据类型可以分为              数据类型和              数据类型。(     )
A . 简单;复杂 B . 简单;复合 C . 复合;变量 D . 复合;常量
下列有关于print命令的描述中,描述错误的是

①在打印机里打印相关的文本或者数字等

②可以用来画图

③在屏幕中输出相应的文本或者数字等

④执行语句print(“python”,3.7)时会出错

下列变量名不合法的是(  )
A . 7bc B . c0 C . c_8 D . E6a
如下左图和右图所示,是求绝对值的算法,其描述方式分别是(    )

A . 自然语言、流程图 B . 伪代码、流程图 C . 自然语言、伪代码 D . 流程图、自然语言
某算法的部分流程图如图所示,

输入s=“101001”,b=0,执行这部分流程后,输出b的结果是(     )

A . 31 B . 15 C . 3 D . 1
下列Python表达式值为5的是(   )
A . 5.0**1 B . 10//2 C . 10.2/2 D . 10%2
程序如下:

a=5;b=4

a%=2

b//=3

c=a+b

程序执行后,c的值为(    )

A . 3 B . 4.3 C . 2 D . 4