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

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

程序功能:在文本框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) 程序中②划线处应填入
编写“小学生除法练习”程序,实现如下功能:在文本框Text1中输入题数n,单击“出题” 按钮Command1,在列表框List1中显示n个两数除法练习题,要求除数和被除数均小于100,除数不能为0,且商为整数。程序运行界面如图所示。
  1. (1) 实现上述功能的VB程序如下,请在划线处填入适合的代码。


    Private Sub Command1_Click()

      Dim n, i, a, b As Integer   Randomize   list1.Clear   n =                i = 0

      Do While i < n     a = Int(rnd * 100)     b = Int(rnd * 100)     If b <> 0 Then       if  then              i = i + 1

            list1.AddItem Str(i) + "、" + Str(a) + "/" + Str(b) + "="

          End If

        End If

      Loop

    End Sub

  2. (2) 程序调试无误后,下列除法题不可能的是  (   )
    A . B . C . D .
【加试题】 有如下VB程序段:

Max=-10000

For i = 1 To 10

    s = 0

    For j = i To 10

      s = s + a(j)

      If s > max Then max = s

    Next j

 Next i

已知数组a(1)到a(10)的原始数据为6,-6,8,-7,7,2,-2,-1,-2,4.程序执行后,变量max的值为(   )

A . 9 B . 10 C . 27 D . 4
【加试题】小明基于选择排序算法编写了一个VB程序,功能如下:某班有50个学生,从中选择10个身高最高的同学,要求被选的任何两个人不能身高一样(所给的数据保证能选10个)。

实现上述功能的VB程序如下,但加框处代码有错,请改正。

Const  n = 50

Dim d(0 To n) As single , name(1 to n) as string

'读入50个学生的身高,依次存入d(1)…d(50),姓名存入name(1)…name(50) '代码略

Private Sub Command1_Click()

Dim i As Integer, j As Integer, temp As single, k As Integer,r as string

d(0) = 2

For i = 1 To 10

    ①

    For j = i To n

     If d(j) < d(i - 1) Then

         If     ②  Then

           k = j

        End If

     End If

  Next j

  If k <> i Then

     temp = d(k):  d(k) = d(i):  d(i) = temp

     r=name(k) : name(k)=name(i) : name(i)=r

  End If

Next i

For i = 1 To 10   ‘输出被选的10个人的名字和身高。

  List2.AddItem  name(i) & d(i)

Next i

End Sub

 ②

“字符串合并”程序实现功能:在文本框Text1中输入字符串1,在文本框Text2中输入字符串2,单击“合并”按钮Command1,按如下规则依次从中取出各字符进行合并,合并后的结果显示在标签对象Label3中。

合并规则如下:

⑴当字符串1的长度大于字符串2的长度时,将字符串2中的各个字符从左侧依次插入到字符串1中的各字符后方。例如字符串1为“abcdef”,字符串2为“123”时,合并后的字符串为“a1b2c3def”。

⑵当字符串2的长度大于等于字符串1的长度时,将字符串1中的各个字符从右侧依次插入到字符串2中的各个字符后方。例如字符串1为“abcd”,字符串2为“12345”时,合并后的字符串为“12d3c4b5a”。

程序运行界面如图所示。

  1. (1) 要使程序运行时,窗体Form1标题显示“字符串合并”,可在Form_Load事件过程中添加语句(单选,填字母:A,Form1.Caption=“字符串合并”/B,Label3.Caption=“字符串合并”/C,Text1.Text=”字符串合并”)。

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

    Private Sub Command1_Click()

    Dim s1 As String,s2 As String,arts As String

    Dim n As Integer,m As Integer,i As Integer

         s1=Text1.Text

         s2=Text2.Text

       m=Len(s1)

         n=Len(s2)

         If m>n Then

             For i=1 To n

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

             Next i

               ans=ans+Mid(s1,i,m-n)

             Else

               For i=1 To m

                 ans=    ①    +Mid(s1,i,1)+ans

               Next i

               ans=Mid(s2,1,n-m)+aFIS

        ②   

             Label3.Caption=”合并为”+ans

      End Sub

     ② 

  3. (3) 若在文本框Text1中输入“Word”,在文本框2中输入“Mini”,单击“合并”按钮后,标签Label3中显示的内容是

编写输出所有字符串子串的VB程序,实现如下功能:在文本框Text1中输入一串不重复的字符串,单击命令按钮“子串”Command1后,在列表框List1中输出该字符串的所有子串和子串的总数。程序运行界面如图所示,VB程序代码如下。

程序代码中,语句加框处有错,请改正。

Private Sub Command1_Click()

Dim s As String, sum As Integer

Dim i As Integer, j As Integer

List1.Clear

s = Text1.Text

n = len(s)

                               ’(1)

For i = 1 To n

  For j = 1 To n-i+1

     List1.AddItem        ’(2)

     sum = sum + 1

  Next j

Next i

List1.AddItem "总共有" + Str(sum)  + "个子串"

End Sub

 ⑵ 

数组a初始值均为0,生成n个1到100之间的随机整数依次存入数组a,要求a(1)至a(n)中的奇数位上的都是偶数,偶数位上的都是奇数且都升序排序,例如n=4时有数列2,5,6,9,n=5时有数列2,5,6,9,8,运行程序,向文本框text2 输入个数,单击“生成”按钮后按上面的规则生成数据并排序,然后在文本框text1中显示结果,在文本框text3中输入一个1到100之间的整数,单击“添加”则向已生成的数据中添加该数,要求保持偶数在奇数位上升序,奇数在偶数位上升序,如存在与该数相同的数据则插入到最后一个相同数据的后面,并将最终结果显示在text1中。运行程序生成5个数据“28,5,50,25,98,”,添加1次17得到“28,5,50,17,98,25,”,再添加1次17得到“28,5,50,17,98,17,0,25,”,运行效果如图所示。

  1. (1) 为了“生成”按钮command1被单击后处于不可点状态,应该向程序添加代码(单选填字母:A .command1.Visible=False B .command1.Enabled=False C .command1.Caption="False")
  2. (2) 请将划线部分补充完整。

    Dim a(1 To 1000) As Integer

    Dim n As Integer, p As Integer, q As Integer

    Private Sub Command1_Click() '生成随机数据

        n = Val(Text2.Text)

        If n Mod 2 = 0 Then p = n - 1: q = n Else p = n: q = n - 1

          'p,q 分别为生成的数列的奇数位和偶数位最大下标

          '以下代码为生成随机数并按要求排序输出,代码略

    End Sub

    Private Sub Command2_Click() '添加数据

        Key = Val(Text3.Text)

        If Key Mod 2 = 0 Then

            i = 1: j = p: p = p + 2

        Else

            i = 2: j = q: q = q + 2

        End If

        Do While i <= j

            m = (i + j) / 2

            If Key Mod 2 = 0 And m Mod 2 = 0 Then m = m - 1

            If Key Mod 2 = 1 And m Mod 2 = 1 Then m = m - 1

            If Then i = m + 2 Else j = m – 2

        Loop

        If Key Mod 2 = 0 Then '插入一个偶数

            For k =

                a(k) = a(k - 2)

            Next k

            a(k) = Key

        Else

            '插入一个奇数,代码略

        End If

        If p > q Then n = p Else n = q

        For i = 1 To n

            s = s + Str(a(i)) + ","

        Next i

        Text1.Text = s

    End Sub

  3. (3) 运行程序时在 text1 中生成“6,53,” ,先后添加数据“2”和“8”则在 text1 中显示的内容为
有如下VB程序段:

For i=1 To 3

k=“”

Fori-1 To 2*i-1

k=k+“*”

Next j

List1.AddItem k

Next i

该程序运行后,在列表框List1中显示的是(  )

A . B . C . D .
编写“加法练习题生成器”程序,实现如下功能:在文本框Text1中输入题数n,单击“生成”按钮Command1,在列表框List1中显示n个两数之和小于100的加法练习题。程序运行界面如图1所示。

图1

图2

  1. (1) 在设计程序界面时,应使用图2所示“控件工具箱”中的(填写相应编号)添加“生成”按钮。
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Private Sub Command1_Click()

        Dim n As Integer, i As Integer, a As Integer, b As Integer

        Randomize

        n = Val(Text1.Text)

        i = ①

        Do While i <= n

            a = Int(Rnd * 100)

            b = Int(Rnd * 100)

            If ② Then

                List1.AddItem "(" + Str(i) + ")" + Str(a) + "+" + Str(b) + "="

                i = i + 1

            End If

        Loop

    End Sub

  3. (3) 运行该程序,在文本框中输入5,单击“生成”按钮后,对语句a = Int(Rnd * 100)执行次数的描述,最合理的是(单选,填字母:A .执行次数等于5 / B .执行次数大于等于5 / C .执行次数小于等于5)
下列程序的运结果是(  )

DIM A(1991 TO 1998) AS INTEGER

FOR I=1 TO 8

   A(I)=I

PRINT A(I);

       NEXT I

A . 1  2  3  4  5  6  7  8 B . 1991  1992  1993  1994  1995  1996  1997  1998 C . 显示出错信息 D . 0 0 0 0 0 0 0 0
某VB程序如下:

Private Sub Command1_ Click( )

  Dim a(1 To 15) As Integer

  Dim i As Integer

  a(1) = 1

  For i = 1 To 15

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

  Next i

  Text1. Text = str(a(i))

End Sub

运行程序,单击命令按钮 Command1后,出现的错误提示为(  )

A . 下标越界 B . 子程序或函数未定义 C . 溢出 D . 类型不匹配
一个VB程序的运行界面如图所示。下列说法不正确的是(  )

A . 文本框Text1的Caption 属性值为“H” B . 标签Label1的Caption 属性值为“输入字符" C . 命令按钮Command1的Caption属性值为“查询” D . 窗体的Caption属性值为“查询字符ASCⅡ码”
阅读下列程序,写出运行结果

Dim a As Integer

Dim k As Integer

s = 0

For k = 1 To 6 Step 2

s = s + k

Next k

Print s

输出s的值是

小明编写好解密程序后,调试运行时,程序没有报错且能顺利运行,但不能正确解密,造成这个结果的原因是(    )
A . 解密算法逻辑错误 B . 程序语句语法错误 C . 程序过期了 D . 程序设计窗口配置不对
下面代码的输出结果是(     )

x=10

y=3

print(x%y,x**y)

A . 3  1000 B . 1  30 C . 3  30 D . 1  1000
下面的程序段,通过键盘输入5,则运算结果是(    )

A=input()

print(A * 5)

A . 3125 B . 25 C . 5*5 D . 5.5
有如下 VB 程序段:

Dim i As Integer

Dim a(1 To 10) As Integer

a(1) = 1

For i = 2 To 10

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

Next i

Text1.Text = Str(a(i))

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

A . 下标越界 B . 溢出 C . 子程序或函数未定义 D . 类型不匹配
有如下VB程序段:

Dim t As Integer, s As String, i As Integer

s = "20PYt22hoN"

t = 0

For i = 1 To Len(s)

    c = Mid(s, i, 1)

    If c >= "a" And c <= "z" Then c = Chr(Asc(c) - 32)

        If c >= "A" And c <= "Z" Then

            t = t + 1

        Else

            t = t - 1

    End If

Next i

Text1.Text = Str(t)

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

A . -1 B . 0 C . 1 D . 2
小林编写一段文件读写操作代码,文件如图,代码段如下:

file=open('ceshi.txt','w')

file.write("python is a programming language.")

file.close( )

file=open('ceshi.txt','r')

print(file.read( ))

该代码段运行后,输出的结果为(   )

A . IA Distributed System Based on Python. B . python is a programming language. C . IA Distributed System Based on Python. python is a programming language. D . 程序编译错误,不会输出结果
要判断一个正整数n (n>=3 )是否为素数,一种方法是 :统计2到n -1之间所有能整除n的整数个数s,若s等于0,则n是素数,否则就不是素数。为了实现这一算法, 编写代码如下, 运行程序时出现错误提示,根据错误提示,一种修改方法是:只需修改图中源程序的第2行代码,就可以使程序正常运行,则第2行应修改为:

源程序

运行时错误提示