程序的调试及运行 知识点题库

某学校开设多样化选修课程,学生可以根据个人兴趣和特长选择选修课。假设每门选修课的选课人数不超过40,学生选课的相关信息存放在数据库文件“student.accdb”的data表中,选课查询程序运行时界面如第16题图所示。

程序功能:在文本框Text1中输入课程号,单击“查询”按钮Command1,在列表框List1中显示选修本课程的学生信息。如果没有找到,在列表框中显示“该课程当前无人报名”。按此要求将程序补充完整。

Private Sub command1_click()

Dim xh(1 to 40),xm(1 to 40) As String   '学号和姓名的数组

Dim i,num as integer

Dim conn As New ADODB.Connection, rs As New ADODB.Recordset

Dim strSQL As String

conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + App.Path + "\student.accdb"     '打开到数据库的链接

 conn.Open

strSQL ="select xh,xm from data where '课程=&(Text1.Text) & '" '设置查询的SQL语句

 Set rs.ActiveConnection = conn      '设置rs的ActiveConnection属性,指定与其关联的数据库链接

  rs.Open strSQL   '打开记录集,将从表student中读取的结果集保存到记录集rs中

  List1.Clear

num=0

Do while not rs.EOF

             ①       

    xh(num)=rs.Fields("xh")

      xm(num)=rs.Fields("xm")

  rs.MoveNext

loop

rs.Close

  conn.close

set rs=nothing

set conn=nothing

For  i=1 to num

      ②     

Next i

if num=0 then list1.additem("该课程当前无人报名")

End Sub

  1. (1) 程序中①划线处应填入
  2. (2) 程序中②划线处应填入
小金编写了一个统计随机数分布的VB程序,部分程序如下所示,在调试程序的时候出现如图所示的错误信息:

n = 0 : m = 0

For  i = 1 To 100

     If  Rnd > 0.5  Then

        n = n + 1

     Else

     m = m + 1

Next  i 

……

小金仔细分析该程序段后,发现其中缺少了(   )

A . For B . End If C . Next D . If
【加试题】有如下VB程序段:

k = Val(Text1.Text)

left1 = 1: right1 = 10

Do While (left1 <= right1)

  mid1 = (left1 + right1) \ 2

  If a(mid1) <=k Then

       left1 = mid1 + 1

  Else

       right1 = mid1-1

  End If

Loop

Text2.text=str(right1)

已知数组a(1)到a(10)的原始数据为1,4,5,5,5,5,8,9,9,10.程序运行时,在文本框text1中输入5,文本框text2显示的内容是(   )

A . 5 B . 10 C . 3 D . 6
小王喜中新股,为了能预估自己的收益情况,编写“新股收益预期”程序,实现如下功能:在文本框Text1中输入该股票的发行价,在文本框Text2中输入预期涨停个数,在文本框Text3中输入股数,单击“计算”按钮Command1,在列表框List1中依次显示各个交易日的结果信息,并在标签Label4中显示总收益信息。

新股首个交易日的涨停上限为44%,其余的交易日涨停上限为10%,并将相应股票价格四舍五入到分。公式提示:日收益=(本交易日股价-前一交易日股价)×股数

程序运行界面如图所示:

  1. (1) 程序代码中出现Label4.Caption,其中Caption是指(填字母:A,对象名/B,属性名/C,属性值/D,事件名)。

  2. (2) 实现上述功能的VB代码如下,请在画线处填写合适的代码。

    Private Sub Command1_Click()

        Dim gj As Double,x As Double      ‘用于存放股价

        Dim n As Integer·gs As Integer     ‘n用于存放涨停个数,  gs用于存放股数

        Dim zsy As Long,rsy As Long     ‘zsy用于存放总收益。  rsy用于存放日收益

        List1.Clear

            gi=Val(Text1.Text):n=Val(Text2.Text):gs=Val(Text3.Text)

            zsy=0

            List1.Addltem“交易日  股价  日收益”

            For i=1 To n

                x=gj

                IfThen      ‘①

                    gj=Int(gj*1.44*100+0.5)/100

                Else

                    gj=Int(gj*1.1*100+0.5)/100

                End If

                rsy=            ‘②

                zsy=zsy+rsy

                List1.Addltem“第”Str(i)&“  ”&Str(gj)&“  ”&Str(rsy)

          Next i

          Label4.Caption=Str(gs)&”股预期总收益”&Str(zsy)&“元”

    End Sub

  3. (3) 若该新股连续涨停,则第11个交易日的日收益(填:能/不能)超过首个交易日的日收益。

小王用VB编写一个自动统计英文字母和单词个数的程序。功能如下:在文本框Text1中输入任意的英文句子,单击 “统计”命令按钮Command1,程序自动统计出每个字母出现的频率,并将其输出到列表框List1,且将出现次数最多的字母输出在标签Label1中,另外将单词个数在标签label2中输出。程序界面如图所示,实现上述功能的VB程序如下。请回答以下问题:

  1. (1) 请在划线处填入合适的代码。

    Private Sub Command1_Click()

      Dim a(65 To 122) As Integer

      Dim i As Integer, ch As String, count As Integer

      Dim Max As Integer, Maxi As Integer, flag As Boolean

      List1.Clear

      flag = False

      count = 0

      s = Text1.Text

      For i = 1 To Len(s)

         ch = Mid(s, i, 1)

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

            a(Asc(ch)) =

            If flag = False Then

               count = count + 1

               flag = True

            End If

         Else

           

         End If

      Next i

      Max = 0: Maxi = 0

      For i = 65 To 122     ’A的ASCII码值为65,a的ASCII码值为97

        If a(i) > 0 Then

            List1.AddItem Chr(i) + ":  " + Str(a(i))

        End If

        If a(i) > Max Then

           Max = a(i)

           Maxi = i

        End If

      Next i

      Label1.Caption = "频率最高字母:" + 

      Label2.Caption = "共有单词数:" + Str(count) + "个"

    End Sub

  2. (2) 从代码可知,当出现两个以上的字母次数最高时(例如字母a和d都出现4次,且为最高次数),则程序最终输出的是(单选,填写字母:A .排在前面的第一个频率最高字母/B .中间的某个频率最高字母/C .排在最后的一个频率最高字母/D .无法确定)。
一个程序实现如下功能:在文本框text1中输入一个数,在文本框text2中输入需要转换的进制(小于等于16),点击转换按钮,在标签Label3输出转换后的十进制数,程序运行界面如下图所示:

请在划线处填入合适的代码

Private Sub Command1_Click()

  Dim s As String, k As Integer

 

  k = Val(Text2.Text)

  Label3.Caption=“对应的十进制数:”+Str(toD(s, k))

End Sub

Function toD(s As String, k As Integer) As Integer

  Dim ans As Integer, x As Integer

  ans = 0

  For i = 1 To Len(s)

    If Mid(s, i, 1) >= "A" And Mid(s, i, 1) <= "F" Then

      x = Asc(Mid(s, i, 1))- Asc(“A”)十 10

    Else

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

    End If

   

  Next i

 

End Function

字符串中任意个连续的字符组成的子序列称为该字符串的子串,如字符串“123” 的子串有“1”、“2”、“3”、“12”、“23”、“123”。输出字符串s所有子串的VB程序段如下:

s = Text1.Text

List1.Clear

len1 = Len(s)                  ‘①

For i = 1 To len1              ‘②

For j = 1 To len1- i           ‘③

List1.AddItem Mid(s, j, i)  ‘④

Next j

Next i

运行时发现未输出所有子串,则修改(  )

A . ①处所在行的语句为len1= Len(Text1.text) B . ②处所在行的语句为For i= 1 To len1+ 1 C . ③处所在行的语句为For j= 1 To len1+ 1- i D . ④处所在行的语句为List1.AddItem Mid(s, i, j)
使用 VB 编写一个数字逆序功能的程序,在文本框 Text1 中输入若干整数,相互之间用逗号隔开,单击“开始逆序”按钮,在文本框 Text2 中输出逆序后的数字序列。程序运行界面如图所示,请改正划线处的错误语句使程序能正确运行。

Private sub Command1_click()

Dim s1 As String, s2 As String, t As String, ch As String

Dim i As Integer

s1 = Text1.Text

i = Len(s1)

t = "": s2 = ""

Do While i > 0

    ch = Mid(s1, i, 1)

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

        t = ch + t

    Else

    s2 = s2 + t +,   ①

    t = ""

End If

i = i + 1    ②

Loop

s2 = s2 + t

Text2.Text = s2

End sub

 ② 

某VB程序段代码如下:

Private Sub Command1_Click()

a = Text1

For i = 1 To Len(a)

    b = Mid(a, i, 1)

    c = Chr(Asc(b) )

    d = d + c

Next i

Text2 = d

End Sub

如果在文本框text1中输入字符"316100",则文本框text2中显示的值是:(   )

A . 16100 B . 6131 C . 001613 D . 3161
模拟一个简单计算器,输入两个数和一个运算符(加、减、乘、除),进行算术运算,并输出运算结果。程序界面如下图所示,在文本框Text1输入第一个数a,在文本框Text2输入第二个数b,在文本框Text3输入运算符ch,在文本框Text4中输出结果。当输入的运算符不是加、减、乘、除四种运算符时,则输出“运算符不正确”;当进行除法运算时,如果除数为0,提示输出“除数不能为零”。相应的Visual Basic程序如下,

  1. (1) 观察程序设计界面,共有类对象具有Caption属性。
  2. (2) 实现上述功能的VB程序如下在划线处,填入合适的语句或表达式,把程序补充完整。

    Private Sub Command1_Click()

        Dim a As Single, b As Single, ch As String

        a = Val(Text1.Text)

        b = Val(Text2.Text)

           

        If ch = "+" Then

            Text4.Text = Str(a + b)

        ElseIf ch = "*" Then

            Text4.Text = Str(a * b)

        ElseIf ch = "-" Then

            Text4.Text = Str(a - b)

        ElseIf ch = "/" Then

            If Then Text4.Text = Str(a / b) Else Text4.Text = "除数不能是零" 

        Else

            

        End If

    End Sub

小容想设计一个自己的网页,在配色时发现网页使用的颜色是用十六进制表示的,但她习惯使用了十进制RGB颜色模式,学习了VB应用程序开发后,她想通过程序实现十进制到十六进制的转换。实现如下功能:在文本框Text1中输入RGB颜色的十进制,每个值以逗号结束,单击“转换”按钮Command1,在文本框Text2中显示颜色的十六进制值。运行效果如图所示:

  1. (1) 若要将窗体Form1的标题修改为“颜色转换”,则应修改Form1对象的 属性。
  2. (2) 以下程序段运行时,为了实现上述功能,请在划线处填入合适代码。

    Private Sub Command1_Click()

      Const st = "0123456789ABCDEF"

      Dim s, ch, rs As String

      Dim m, r1, r2, n As Integer

     

      For i = 1 To Len(s)

        ch = Mid(s,i,1)

        If ch > "9" Or ch < "0" Then

           

            r2 = m Mod 16

            rs = rs + Mid(st, r1 + 1, 1) + Mid(st, r2 + 1, 1)

            m = 0

        Else

            m = m * 10 + Val(ch)

        End If

      Next i

      Text2.Text = "#" + rs

    End Sub

  3. (3) 若黄色是由红色和绿色混合得到,则输入黄色的RGB值,文本框Text2中显示的内容为
有如下程序:

Private Sub Command1_Click()

  Dim a(5) as Integer

  Dim n as Integer, i as Integer

  n = Val(Text1.Text)

  i = 0

  a(1) = 1

  a(2) = 1

  For i = 3 To n

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

  Next i

  Label1.Caption = a(i)

End Sub

若在Text1中输入5,则点击按钮后的运行结果为(  )

A . Label1中输出5 B . Label1中输出10 C . 报“下标越界”错误 D . Label1中无内容
有如下程序段,运行时程序出现如下错误提示,出错语句的位置是 (  )

Private Sub Command1_Click()

 Dim i As Integer

 Dim a(10)As Integer    ‘①

 For i=1 To 10    ‘②

  a(i)=Rnd* 100    ‘③

 Next i

 Label1.Caption=Str(a(i))    ‘④

End Sub

A . B . C . D .
某程序段如下:

Dim b(1 To 10)As Long

Dim i As Integer

b(1)=1

  For i=1 To 10

     b(i+1)=b(i)+1

  Next i

Text1. Text=Str(b(i))

运行该程序段,会出现的错误提示为(  )。

A . 下标越界 B . 子程序或函数未定义 C . 要求对象 D . 溢出
运行图1所示的VB程序,出现了图2所示错误。若要纠正程序中的错误,以下叙述正确的是(    )。

 

A . 将变量i的数据类型改为Double B . 将变量s的数据类型改为Double C . 将变量s的数据类型改为String D . 将变量i的数据类型改为String
有如下VB程序段:

For i=1 To 1000

  a=Int(Rnd * 100 + 1)

  b=Int(Rnd* 100 + 1)

  x=a+b

  y=a-b

  c=Sqr(x)

  d=Sqr(y)

Next i

调试时出现如图所示的错误提示,产生此错误的语句是(    )

A . a = Int(Rnd * 100 + 1) B . y = a – b C . c = Sqr(x) D . d = Sqr(y)
s=int(input(“请输入一个两位数:”))

s=s//6

print(s)

程序运行后,键盘输入31,其输出结果为

下面的程序段运行后的结果为

s=0

for i in range(1,8,3):

  s=s+i

print(s)

下列Python程序段运行的结果是(     )

f=[‘A’,‘B’,‘C’]

a=len(f)

print(‘a=’,a)

A . a=2 B . a=‘A’ C . a=‘C’ D . a=3
运行如下程序,单击命令按钮Command1后弹出如图所示的信息提示。

此时程序正在执行的语句是(    )

Private Sub Command1_ Click( )

  Dim a As Integer

  Dim s As String

  s ="year:

  a = 2016

  s=s+a

  Text1.Text = Str(a)

End Sub

A . s="year": B . a=2016 C . s=s+a D . Text1.Text = Str(a)