算法及程序语言基础 知识点题库

下列Visual Basic程序用于计算1010的值:

Private Sub Command1_Click()

 Dim n As Integer, s As Integer

 n = 10

 s = 10 ︿ n

 Text1.Text = Str(s)

End Sub

运行程序时,单击命令按钮Command1后弹出如图所示的出错信息提示,引起该错误的原因是(   )

A . 变量n的数据类型说明不当  B . 变量s的数据类型说明不当 C . 文本框Text1的宽度不够  D . s值太大,因此不能在文本框Text1中输出
若改变一文本框中所显示文本的颜色,需改变此文本框的哪个属性?(   )
A . Caption B . Forec olor C . Backcolor D . Text
小杰为学校教务处编写了一个排考场座位的VB程序,考场采用“6排5列”共30人的模式,程序执行后,考生的考号与姓名显示在列表框List1中,单击“考场座位”按钮,考场号与座位显示在Text1中,程序运行界面如图所示,数据表如图

图片_x0020_100020   图片_x0020_100021

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

  1. (1) 程序中读取的数据库文件是
  2. (2) 当“Form_load() 事件处理过程运行结束后,变量x的值为
  3. (3) 请在划线处填入合适的代码

    Dim sName(100) As String

    Dim kh(100) as string

    Private Sub Command1_Click()

    Dim y As Integer

    Dim start As Integer   '考场第1位数据元素的下标

    Dim pa As Integer       '数据库导入VB时学生数据下标

    Dim pb As Integer        '考场座位数据下标

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

    Dim kcsName(100) As String

    start = 1

    pa = start

    recCount = x-1

    If recCount Mod 30 <> 0 Then

       

    For i = 1 To y   ‘将当前考生人数添加到30的整数倍    

    recCount = recCount +1   

        sName(recCount) = " "

    Next i

    End If

    For j = 1 To recCount / 30  

    pa = start

    pb = start

    For i = 1 To 30

    kcsName(pb) = sName(pa)

    pb = pb +1    

    If  i Mod 5 = 0 Then

    pa = start +i \5

    Else

       

    End If  

    Next i  

    start = start +30

    Next j

    Text1.Text = " "

    start = 1

    For k = 1 To recCount /30  

    m = start  

    Text1.Text = Text1.Text + "第" + Str(k) + "考场" + vbCrLf  

    'vbCrLf为换行标志符,实现Text1中内容换行显示  

    For i = 1 To 6    

    For j = 1 To 5      

    Text1.Text = Text1.Text +" " +kcsName(m)      

    m = m +1    

    Next j    

    Text1.Text = Text1.Text +vbCrLf  

    Next i  

    Text1.Text = Text1.Text +vbCrLf +vbCrLf

       

    Next k

    End Sub

    Private Sub form_load()

    Dim conn As New ADODB.Connection

    Dim rs As New ADODB.Recordset

    conn.ConnectionString = "provider=microsoft.ace.oledb.12.0;data source=" & App.Path & "/kaochang.accdb"

    conn.Open

    Set rs.ActiveConnection = conn

    rs.Open "select * from banji"

    x = 1

    List1.AddItem " 考号  姓名"

    Do While Not rs.EOF    '

    kh(x) = rs.fields("kh")

    sName(x) = rs.fields("xm")

    List1.AddItem kh(x) + "  " + sName(x)

    x = x + 1

    rs.MoveNext

    Loop

    rs.Close

    End Sub

编写一个“二进制加法”程序,算法是从低位到高位逐位相加,逢二进一。程序运行界面如图所示。

  1. (1) 要使程序运行时,文本框Text1的width属性值为1500,可在Form_Load事件处理过程中添加语句(单选,填字母:A .Text1.width=1500 / B .Text1.width str(1500) / C .Text1.AddItem 1500  )
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适代码。

    Private Sub Command1_Click()

      Dim m1 As String, m2 As String, sum As String ,t As String

      Dim n1 As Integer, n2 As Integer, k As Integer, x As Integer

      m1 = Text1.Text:m2 = Text2.Text

      If Then t = m1: m1 = m2: m2 = t

      x = Len(m1) - Len(m2)

      Do While x > 0

        m2 = "0" + m2

        x = x - 1

      Loop

      n = Len(m1): sum = "": k = 0

      Do While n > 0

        n1 = Val(Mid(m1, n, 1))

        n2 = Val(Mid(m2, n, 1))

        sum = Str((n1 + n2 + k) Mod 2) + sum

       

        n = n - 1

      Loop

      If k <> 0 Then sum = Str(k) + sum

      Label4.Caption = sum

    End Sub

  3. (3) 若在文本框Text1和Text2中分别输入数据1101和101,单击“计算”按钮,计算结果显示为
【加试题】随机数排序程序。程序功能如下:窗体加载时生成[10,100]范围内的随机整数10个存储在数组a中,并在列表框List1中显示原始数据,单击“排序”按钮,这10个数据按降序排序后显示在列表框List2中。程序运行效果如图所示。实现上述功能的VB代码如下,但加框处代码有错,请改正。

Dim a(1 To 10) As Integer

Private Sub Command1 Click()

Dim i As Integer, j As Integer, x As Integer p = True

i = 1

    Do While i <= 9 And p p= False

    For j = 10 To i + 1 Step -1

        If  Then    '①

            k = a(j): a(j) = a(j - 1): a(j - 1) = k: p = True

        End If

    Next j

    i = i + 1

Loop

For i = 1 To 10

    List2.AddItem Str(a(i)) Next i

End Sub

Private Sub Form_Load()

Dim i As Integer

List1.Clear

Randomize         '初始化随机函数 Rnd

For i = 1 To 10

    a(i) =     '②

List1.AddItem

Str(a(i))

Next i

End Sub

 ② 

行程压缩编码(RLE)的基本原理:把一个相同值的连续串用一个代表值和串长来表示,如一串字母数据“aaabbbbccccddd”可压缩为“3a4b4c3d”。小王编写了一个VB程序,功能如下:在文本框Text1中输入一串字母,单击“压缩”按钮Command1后,在文本框Text2中显示压缩后的结果。程序运行界面如图所示。

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

    Private Sub Command1_Click()

    Dim s1 As String,s2 As String,pos As Integer

    Dim num As Integer

    s1=Text1. Text:s2=“”

        ①   

    pos=2

    Do While pos<=Len(s1)

      If Mid(s1, pos, 1)=Mid(s1, pos-1, 1)Then

        num=num+1

      Else

        s2=    ②   

        num=1

      End If

          ③   

    Loop

    Text2. Text=s2+Str(num)+Mid(s1, Len(s1), 1)

    End Sub

     ② ③ 

幸运数。一组由1开始的奇数数列为:

1,3,5,7,9,11,13,15,17,19,21,23,25,……

此数列的第二项为3,将此数列的第3n个数删除,留下的数为:

1,3,7,9,13,15,19,21,25,……

新数列的第三项为7,将新数列的第7n个数删除,留下的数为:

1,3,7,9,13,15,21,25.……

若一直重复上述步骤,最后剩下的数就是幸运数。

下列程序的功能是找出1000以内的幸运数,但加框处代码有错,请改正。

Private Sub Commandl_Click()

Dim a(500)As Integer,b(500)As Integer

Dim i As Integer,m As Integer,k As Integer

Dim top As Integer,bott As Integer

'产生由1开始的奇数数列,依次存储在数组a中,代码略

top=2:bott=500

Do While top<bott

        ‘⑴

  For i=1 To bott

    If i Mod a(top)<>0 Then

      b(k)= a(i)

      k=k+1

    End If

Next i

      ‘⑵

  top = top+1

  For i=1 To bott

    a(i)=b(i)

  Next i

Loop

For i=1 To bott

  List1.AddItem Str(a(i))

Next i

End Sub

 ⑵ 

有如下VB程序段:

s=Text1.Text

s1= “ ”

For i=1 To Len(s)

  c=Mid(s,i,1)

  If c>=“A” And c<=“Z” Then

    c=Chr(Asc(c)+32)

  Elself c>=“a” And c<=“z” Then

    c=Chr(Asc(c)-32)

  End If

  s1=c+s1

Next i

Text2.Text=s1

该程序段运行后,若在文本框Text1中输入“Ab12CD”,则文本框Text2中显示的内容是(  )

A . aBcd B . dcBa C . aB12cd D . dc21Ba
下面关于算法的描述,错误的是(    )
A . 可以使用自然语言来描述算法 B . 可以使用流程图来描述算法 C . 同一种算法只能用一种程序语言来实现 D . 同一种算法可以用不同的程序语言来实现
在VB中,如果要在按钮对象MyCmd上显示文字“单击计算”,则下列语句正确的是(  )
A . MyCmd.Caption="单击计算" B . Command1.Caption="单击计算" C . Command1.Text="单击计算" D . MyCmd.Text="单击计算"
求两个整数的最大公约数可以使用递归算法实现,程序运行界面如图所示。在文本框Text1中输入两个数字中较大的数字m,在Text2中输入较小的数字n,单击Command1按钮,在Text3中显示数字m和n的最大公约数。可实现该目的的VB程序如下,请在画线处填入合适的代码。

Private Sub Command1_Click( )

  Dim m,n As Integer

  m=Val(Text1.Text)

  n=Val(Text2.Text)

  Text3.Text=   ①   

End Sub

Function gcd(x, y As Integer)As Integer

  Dim z As Integer

  z=x Mod y

  If z=0 Then

    gcd=   ②   

  Else

    gcd=gcd(y, z)

  End If

End Function

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

有如下VB程序段:

Dim a(1 To 10)As Integer

Dim i As Integer, k As Integer

For i=1 To 10 Step 2

    a(i)=1

Next i

For i=1 To 10

    If i Mod 3=0 Then a(i)=1-a(i)

Next i

For i=1 To 10

    If a(i)=1 Then k=k+1

Next i

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

A . 3 B . 4 C . 5 D . 6
(消失的pigs)用VB编写程序实现:从某一字符串中删除指定的字符串,并将处理后的字符串重新输出。程序界面如图1所示,在文本框Text1中输入原始字符串,在文本框Text2中输入需要删除的字符串,单击“删除字符串”按钮Command1后,在文本框Text3中输出处理后的结果。

图1

  1. (1) 在设计应用程序界面时,应使用图2所示“控件工具箱”中的(填写相应编号)添加按钮。

    图2

  2. (2) 窗体按钮上显示的文字“删除字符串”是需要修改按钮Command1的属性值修改为“删除字符串”。
  3. (3) 为实现上述功能,请在划线处填入合适的代码。

    Private Sub Command1_Click()

      Dim s As Integer, r As Integer, c As Integer

      Dim source As String, delstr As String, ch As String

      c = 0: i = 1

      source = Text1.Text:delstr = Text2.Text

      s = Len(source)

      r = Len(delstr)

      Do While s-i+1 >= r

        ch = Mid(source, i, r)

        If ch = delstr Then

            source = Mid(source,1, i-1) +

            s = Len(source)

             

        Else

            i = i + 1

        End If

      Loop

      Label4.Caption = "共删除:" + Str(c) + "处"

      Text3.Text = source

    End Sub

图像二值化。一个完整的车牌号识别系统要完成从图像采集到字符识别输出的过程,系统包括硬件部分与软件部分。硬件部分主要包括系统触发、图像采集;软件部分主要包括图像预处理车牌定位、字符分割、字符识别等。

软件部分的图像预处理往往是对采集到的车牌图像,在经过倾斜校正之后进行二值化处理,这样能够凸显出车牌的轮廓,使图像变得简单,减少数据量。如:

  1. (1) 得到的图像是在灰度图像的基础上将灰度值存储在二维数组p中,p(x,y)表示宽度位置为x,高度位置为;y的像素的灰度值,然后判断每一个像素的灰度值是否小于阈值(假设阈值T=136):若灰度值小于阈值,则该阈值标记为0(显示黑色),反之则标记为1(显示白色)。

    对应数学模型的表述公式应为

  2. (2) 对图像进行二值化处理的算法描述如下:

    ①给定图像的灰度值:输入每个像素的灰度值p(x,y);

    ②列举图像中的每个像素点:横坐标x列举的范围为1到图像的宽度,纵坐标y列举的范围为1到图像的高度;

    ③判定:若在x,y位置上的像素的灰度值小于阈值136,则判定为0;否则判定为1。

    该判定的过程属于算法控制结构中的结构。

在程序设计时,常常会用到下面类似的图示描述算法,这些图示被称为流程图。在该算法中主要使用到的是(   )。

A . 穷举法 B . 顺序结构 C . 选择结构 D . 循环结构
某算法的部分流程图如图所示。执行这部分流程,若输入s的值为“yummy”,则输出的ch、t值分别为(   )

A . "y",1 B . "m",1 C . "y",5 D . "m",4
某地一户一表居民实施阶梯式水价方案。阶梯水价计量分三级,第一级为18立方米以下,每立方米按2.4元计价;第二级为18至31立方米,每立方米按3.35元计价;第三级为31立方米及以上,每立方米按4.30元计价。如图2-1-38所示算法用于根据用水量V(立方米)计算水价s(元)。

流程图如图所示,①中应入填写的是,③中应该填入是

已知字符串s1="python",s2="Python",则表达式中s1>s2的值为(    )
A . “python” B . “Python” C . True D . False
某算法的流程图如图所示,若输入s的值为字符串“Abc123456def”,执行这部分流程后,输出c的值是( )

A . 123456 B . Abcdef C . 12345cdef D . Abc123456def
将下图所示的流程完整执行1次,下列说法正确的是(   )

A . i的值为31 B . s的值为135 C . 语句“i<30?”共执行了30次 D . 语句“s←s+i”共执行了9次
最近更新