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

古希腊人将因子的和等于它本身的数(自身因子除外)称为完全数。例如28的因子是1、2、4、7、14,且1+2+4+7+14=28,则28是一个完全数。编程求解[2,1000]内的所有完全数,用VB编写的程序运行界面如图1所示。

图1

  1. (1) 利用计算机解决问题一般可以分哪三个步骤? 、  、  。
  2. (2) 图中标注A处的对象类型应为标签类对象 (填:对 / 错)。
  3. (3) 标注B处 Command1对象属性肯定被修改过的是(填:Caption / Font)
  4. (4) 在窗体中,创建标签类(Label1)对象时应选择工具箱中的_________(如图,填字母: A / B / C / D)
    A . B . C . D .
  5. (5) 按此要求编写的程序如下,程序划线处①应填入 (填:Text1_Change() / Command1_Click()),②应填入 (填:Dim /Define) 。

    Private Sub   ①   

       ②   a, b, s As Integer

    For a = 2 To 1000

      S = 0

      For b = 1 To a - 1

        If a Mod b = 0 Then s = s + b

      Next

      If a = s Then List1.Additem str(a)        '输出满足条件的完全数a

    Next

    End Sub

  6. (6) 调试正确,编译生成可执行文件后,想把自己的成果通过QQ传给同学们使用。发送时应该选择如图2中(填完整文件名)。

    图2

执行如下Visual Basic程序段时,出现了如下图所示的错误:

Private Sub Command1 Click()

Dim a As Integer, b As Integer

a = 5: b = 8

b = a + b

label1.Caption = Str(b)

End Sub

引发此错误的语句可能为(   )

A . Dim a As Integer, b As Integer B . a = 5: b = 8 C . b = a + b D . label1.Caption = Str(b)
有如下Visual Basic程序:

Private Sub Command1_Click( )

   Dim  s  As  Integer

   Dim  I  As  Integer

   S=0

   For i=1 To 10

      s=s+i\7

   Next i

   Text1.text=str(s)

End sub

该程序段运行后,文本框Text1中显示 

对英文字母进行加密的规则:用26个互不重复的ASCII字符作为密钥,字母“A”用密钥中第1个字符代替,字母“B”用密钥中第2个字符代替,其他字母用类似方法进行加密。现编写一个验证密钥合法性的程序。在文本框Text1中输入密钥,单击“验证”按钮Command1,在文本框Text2中输出相应的信息。程序运行的界面如图所示。

实现该功能的程序代码如下:

Private Sub Command1_Click()

    Dim i As Integer,ch As String,s As String

    Dim my(0 To 127)As Boolean  ‘0~127表示128个ASCII字符的ASCII值

    s=Text1.Text

    For i=0 To 127

        my(i)=False

    Next i

    If    ①   then

        Text2.Text=”密钥长度不足26个字符!”

    Else

        For i=1 To 26

           ch=Mid(s,i,1)

           t=    ②    

           If my(t)=False Then

              my(t)=True

           Else

             Text2.Text=“密钥中有重复字符!”

             Exit Sub

           EndIf

        Next i

        Text2.Text=“密钥正确!”

    EndIf

End Sub

  1. (1) 实现验证功能事件的过程名称是

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

     ②


编写VB程序,实现如下功能:在文本框Text1中输入当天对应的星期,文本框Text2中输入天数,单击“推算”按钮Command1,推算出相应天数后的星期情况,并在标签Label1中输出结果。界面如图所示。

  1. (1) 程序界面中共有类对象。

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

      Private Sub Command1_Click()

        Dim x As String,xq As String,num As Integer

        Dim i As Integer,h As Integer,f As Boolean

        x=”一二三四五六日”

        xq=Text1.Text

        num=    ①   

        f=False:i=1

        Do While i<=7 And f=False

          If xq=Mid(x,i,1)Then

             h=i:f=True

          End If

          i=i+1

        Loop

        r=(h+num) Mod 7

        If r=0 Then

           Label1.Caption=“星期日”

        Else

           Label1.Caption=“星期”+    ②  

        End If

      End Sub

     ②

  3. (3) 若当天是“星期五”,在文本框Text2中输入“166”,单击“推算”按钮后,标签Label1中显示的内容是

【加试题】德国数学家哥德巴赫曾猜测:任何大于6的素数都可以分解成两个素数(素数对)的和。但有些偶数可以分解成多种素数对的和,如:10=3+7,10=5+5,即10可以分解成两种不同的素数对的和。

小敏编写了一个VB程序,用来求一个偶数(6到100之间)可能存在多少这样是素数岁(注:A+B与B+A认为是相同素数对,不重复统计),并把这些结果输出到一个列表框中,通过逻辑推理,小敏发现这些素数对都是奇数,所以她只需要验证奇数的素数对即可,运行界面如图所示,程序代码如下。但加框处代码有错误,请改正。

Dim IsPrime(100)As B00lean  ‘用来存储是否素数,True为素数,False为非素数

privatw Suh Command1_Click()

Dim x As Integer,y As Integer,i As Integer,num As Integer

Call Init              ‘调用Init函数

x=Val(Text1.Text)

y=x\2

num==0

For i==3 To y Step 2

If  Then                  ‘①

    num=num+1

    List1.AddItem Str(x)+“=”+Str(i)+“+”+Str(x-i)

End If

 Next i

Label2.Caption=“偶数”+Str(x)+“共有”+Str(num)+“个素数对。”

End Sub

Sub Init()           ‘初始化IsPrime数组的值

  Dim i As Integer.j As Integer,X As Integer

  For i=3 To 100 Step 2

    X=Int(Sqr(i))

    For  Step 2                ‘②

    If i Mod j=0 Then Exit For

    Next j

    If i>x Then IsPrime(i)-True Else IsPrime(i)=False

  Next i

End Sub

①处加框代码应该为

②处加框代码应该为

某VB程序段如下:

Private Sub Command1_Click()

Dim a As Integer

Dim b As Boolean

a = (a + 1) * 2

b = a - 1

print a:print b

End Sub

程序运行时,单击命令按钮Command1后,变量a和b的值分别是(  )

A . 2   1 B . 2  true C . 4  -1 D . 4   False
我国居民身份证号是由18位字符组成,其中前17位是数字,第18位是校验位(校验位字符在“0”~“9”或“X”中选取)。由前17位数字经过一定的规则计算得到校验值,在查验居民身份证号有效性时,如果校验位中的字符与计算所得校验值相等则身份证号有效,否则无效。

校验值计算规则如下:

第一步:将身份证号前17位数字分别乘以不同的系数后相加,对应系数如下表所示。

位数

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

系数

7

9

10

5

8

4

2

1

6

3

7

9

10

5

8

4

2

第二步:将第一步的计算结果除以 11,得到余数。 第三步:根据第二步的计算结果从下表获取对应的校验值。

余数

0

1

2

3

4

5

6

7

8

9

10

校验值

1

0

X

9

8

7

6

5

4

3

2

例如:某身份证号为 34052419800101001X。要计算此身份证的校验值步骤如下:第一步:计算 3*7+4*9+0*10+5*5+……+1*2=189

第二步:189除以11得到余数为2

第三步:由余数2获取校验值X。

根据以上规则小王编写了一个验证身份证号是否有效的VB程序,功能如下:在文本框Text1中输入身份证号,单击“验证”按钮Command1后,在列表框List1中显示验证结果。程序运行界面如图1所示。

  1. (1) 设计程序界面时,应使用图2中的(填写相应编号)添加列表框对象 List1。

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

    Private Sub Command1_Click()

    Dim i As Integer, a As Integer, b As Integer, sum As Integer, pos As Integer

    Dim idCode As String, result As String

    Const xs = "0709100508040201060307091005080402"    '存储前17位每位系数

    Const checkCodeStr = "10X98765432"    '存储余数对应的检验值

    sum = 0

    For i = 1 To 17 Step 1

        a = Val(Mid(idCode, i, 1))

        b =

        sum = sum + a * b

    Next i

        pos =

    checkCode = Mid(checkCodeStr, pos, 1)

        If checkCode = Mid(idCode, 18, 1) Then

            result = "有效"

        Else

            result = "无效"

        End if

    List1.AddItem (idCode & "    " & result)

    End Sub

  3. (3) 程序中加框处代码有误,应修改为
删除字符串中的非字母字符,并查找出ASCII码值最大的字母。程序功能如下: 在文本框Text1中输入一个字符串,单击命令按钮Command1,在文本框Text2中显示删除非字母字符后的字符串,在文本框Text3中显示ASCII码值最大的字母,运行界面如图所示。

图片_x0020_100006

  1. (1) 程序中的Command1_Click()属于。(单选,填代码:A .对象名/B .事件名/C .属性名/ D .事件处理过程名)
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适代码。

    Private Sub Command1_Click()

      Dim result As String, s As String, c As String, cmax as string

      Dim i As Integer, j As Integer

      s = Text1.Text

      Text2.Text = ""

      For i = 1 To Len(s)

        

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

          result =

        End If

      Next i

      Text2.Text = result

      j = 2

      cmax = Mid(result, 1, 1)

      Do While j <= Len(result)

      If Mid(result, j, 1) > cmax Then cmax = Mid(result, j, 1)

     

      Loop

      Text3.Text = cmax

    End Sub

有VB程序段如下:

Randomize

For i = 1 To 6

a(i) = Int(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 . 20,9,18,23,4,7  C . 22,7,0,15,4,19 D . 6,0,4,21,18,17
有如下 VB 程序段 :

Dim i As Integer

Dim a(1 To 9) As Integer

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

For i = 3 To 10

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

Next i

Text1.Text = Str(a(i))

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

A . 下标越界 B . 溢出 C . 子程序或函数未定义 D . 类型不匹配
若参与运算的数范围大大超出了标准数据类型能表示的范围的运算,就要用到高精度算法。小明编写了如下的高精度乘法程序,文本框Text 1和Text 2中分别输入两个乘数,单击命令按钮Command 1,在文本框Text 3中输出两个数的乘积, 运行界面如图所示。

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

    Private SubCommand1_Click()

    Dim a( 1 To 100) As Integer, b( 1 To 100) As Integer, c( 1 To 1000) As Integer

    Dim t As Integer, k As Integer, i As Integer, jAs Integer

    Dims1As String, s2As String, output As String

    s 1=Text 1.Text:s2=Text2.Text:Text3.Text=“”

    For i=1 To Len(s1)

        a(i)=  ①     ‘将文本框Text 1中的自然数按从低位到高位的顺序依次存放在数组a(1),a(2) ……a(len(s1))中

    Next i

    ‘将文本框Text2中的自然数按从低位到高位的顺序依次存放在数组b(1),b(2) …… b(len(s2))中,代码略

        len c=Len(s1) +Len(s2) -1

        For i=1 To Len(s1)

            For j=1 To Len(s2)

              c(i+j-1)=c(i+j-1)+a(i)*b(j)

           c(i+j)=  ② 

           c(i+j-1) =c(i+j-1) Mod 10

        Next j

      Next i

      If c(len c+1) > 0 Then   ③ 

      Do While c(len c) =0Andlenc> 1 (2)

           len c=len c-1

      Loop

      output=“”

      For i=len c To 1 Step-1

          output=output+Mid(Str(c(i)),2,1)

      Next i

      Text 3.Text=output

    End Sub

  2. (2) 若将方框内代码“And len c>1”删除,在文本框Text 1中输入122134,在文本框Text 2中输入0,单击命令按钮Command 1,则程序提示
某 VB 程序如下:

Dim a(1 To 10) As Integer,b(1 To 10) As Integer

k = 0

For i = 10 To 1 Step -1

Do While b(i) <> 0 k = k + 1

a(k) = i: b(i) = b(i) - 1

Loop

Next i

若 a(1)~a(10)的值分别为 7,9,8,1,9,4,4,2,1,1,则运行以上程序后,下列说法正确的是(  )

A . 这是一段冒泡排序程序 B . 运行后 a(1)~a(10)的值分别为 1,1,1,2,4,4,7,8,9,9 C . 加框部分运行后 b(1)~b(10)的值分别为 3,1,0,2,0,0,1,1,2,0 D . 本算法是通过比较交换数据来实现排序的
奇偶校验是一种校验数据传输正确性的方法。其中奇校验方法:统计二进制数据的数位中“1”的个数,若个数为奇数,则校验位值为0,否则校验位值为1。小李编写了一个计算奇校验位值得VB程序,功能如下:在文本框Text1中输入1~255十进制待校验数,单击“计算”按钮Command1后,在文本框Text2中显示该数对应的二进制值,并在标签Label3中显示该数的校验位值。程序运行界面如图所示。
  1. (1) 在设计程序界面时,要清空文本框中的显示内容,应修改该文本框中的属性,要修改窗体的标题,应该应修改该窗体的属性。
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适代码。

    Private Sub Command1_Click()

    Dim a As Integer, s As String

    Dim n As Integer, t As Integer, v As Integer

    n = Val(Text1.Text)

    t = 0

    s = ""

    Do While n > 0

      a = n Mod 2

      n = n \ 2

      t =

      s = Str(a) + s

    Loop

    v = t Mod 2

    Text2.Text = s

    Label3.Caption = "校验位值:" +

    End Sub

  3. (3) 运行该程序,在文本框Text1中输入22,单击“计算”按钮,则显示的校验位值是 。

s=int(input("请输入一个两位数:"))

s=s%6

print(s)

程序运行后,键盘输入33,其输出结果为 (    )

A . 5.5 B . 3 C . 5 D . 3.0
在挖金矿小游戏中,玩家通过指令控制小人运动,小人按照一定的规则将地底的金矿全部收集完毕。现将地底的截面可用一个n*n的矩阵表示,其中第一行表示地面,不会出现金矿;第2行至第n行表示地底。每一行中黑色格子表示金矿,白色格子表示空地,其中小人在矩阵左上角第一行第一列的位置。

玩家通过4种指令控制小人运动:

· 左 X:小人向左移动X个格子

· 右 X:小人向右移动X个格子

· 下 X:小人向下移动X个格子

· 挖矿:收集小人所在格子的金矿

小人收集金矿需要遵循一定的规则:

①小人必须将当前行的金矿全部收集,才能去往下一行,即金矿需从上到下收集

②对于同一行的金矿,小人必须按照从左往右的顺序开始收集

现编写程序,以8*8的矩阵为例,在文本框Text1中输入金矿数量,点击按钮“开始”后,随机产生对应数量的金矿并借助图形控件输出(保证不会在同一个格子出现两个金矿),并且在列表框List1中按顺序输出指令,使小人按照规则得到所有金矿。如图a所示。请回答下列问题。

图片_x0020_100013

图a

  1. (1) 现有4*4的地底截面如图b所示,小人在左上角位置,请写出任意一种可使小人按规则获得所有金矿的指令(指令之间用逗号或空格隔开)

    图片_x0020_100014

    图b

  2. (2) 请完成程序中的填空。

    Const n = 8           '程序以8*8的矩阵为例

    Dim x(1 To n*n) As Integer, y(1 To n*n) As Integer           '存储所有金矿的位置

    Dim px As Integer, py As Integer          '存储小人所在的位置

    Dim i As Integer, j As Integer, m As Integer, tmp As Integer

    Private Sub Command1_Click()

    m = Val(Text1.Text)

    Randomize

    '随机产生m个金矿并通过图形控件显示在界面上,代码略

    For i = 1 To m - 1

        For j = 1 To m - i

        '将所有金矿按照从上到下、从左到右的顺序排序,以符合题目描述的规则

            If x(j) > x(j + 1) Or Then

                tmp = x(j): x(j) = x(j + 1): x(j + 1) = tmp

                tmp = y(j): y(j) = y(j + 1): y(j + 1) = tmp

            End If

        Next j

    Next i

    px = 1: py = 1

    i = 1: j = 1

    Do While j <= m

        Do While x(j) = x(j + 1) And j <= m

            j = j + 1

        Loop

        If y(i) < py Then

            List1.AddItem "左" + Str(py - y(i))

        ElseIf y(i) > py Then

            List1.AddItem "右" + Str(y(i) - py)

        End If

        List1.AddItem "下" + Str)

        List1.AddItem "挖矿"

        For k = i + 1 To j

            List1.AddItem "右" + Str(y(k) - y(k - 1))

            List1.AddItem "挖矿"

        Next k

        px = x(j)

        

        j = j + 1

        i = j

    Loop

    End Sub

现有VB程序“矩形面积和.vbp”,可计算100个矩形序列的面积和,计算公式为s=1 * 2+2 * 3+…+100 * 101,该程序运行时,单击“计算”按钮,即显示结果。但该程序代码有3处错误,请修改。

Private Sub Command1_Click()

    Dim i AS Integer

    Dim As Long

    For i = 1 To 100

        s = s + i *(i+1)

    Nest i

    Text1. Caption = s

End Sub

  1. (1) 修改“Dim As Long”行中的错误;
  2. (2) 修改“Nest i”行中的错误;
  3. (3) 修改“Text1. Caption=s”行中的错误;
在运行程序时,先执行主程序再调用函数。
小明在VB中定义了以下函数,功能是求a和b的最大公约数。

Function gcd(a As Integer, b As Integer) As Integer

    Do While b>0

        c=a Mod b

        a=b

        b=c

    Loop

End Function

调试中发现计算结果一直是0。经过仔细观察与分析,发现错误的原因是(    )

A . 函数名有错 B . 变量c没有定义 C . 函数没有返回值 D . b>0应该改为b>=0
王明录入程序代码并运行,出现错误提示(如下图所示),分析原因并改错,正确的是(   )

A . 变量名1w太短 B . 应该写成float(input("输入体重(kg):")=1w C . 将float改为int D . 变量名1w不符合 Python语言规范,不能以数字开头
最近更新