第2单元 编程计算 知识点题库

读下列程序段,运行该段程序之后,变量a的值是(    )。

a=3;b=4;

if a<b then a=0;

else a=1;

end if

A . 3 B . 4 C . 0 D . 1
小张编写 VB 程序,实现如下功能:在前 100 个偶自然数中,计算恰好有四位为 1 的二进制数的个数, 如图所示,单击“计算”按钮 Command1,在文本框 Text1 中显示符合条件的个数,在列表框 List1 中显示符合条件的二进制数。VB 程序代码如下:

提示:本题“除 2 取余倒排法”的方法将十进制转化为二进制,算法如下: 例如十进制数“97”转化为二进制的过程如右图所示:

因此“97”二进制值为:1100001

  1. (1) 解决此问题主要采用的算法是      (选填字母)
    A . 解析算法 B . 枚举算法
  2. (2) 为了实现程序的功能,请在划线处填入合适的代码。Private Sub Command1_Click()

      Dim a As Integer, c As Integer, w As Integer, i As Integer

      Dim s As String, k As String

      c = 0

      For m = 1 To 100

        k = ""

        i = 2 * m

        Do While i > 0

           a=i Mod 2 

      

           k = str(a) + k

        Loop

     

    For n = 1 To Len(k)

           s = Mid(k, n, 1)

           If s = "1" Then w = w + 1

        Next n

    If w = 4 Then

       c = c + 1

     End if

     Next m

     Text1.Text = Str(c) End Sub

一段字符中的每个词(由大、小写字母组成)是倒序显示的,比如“Good night,Tom!”就倒序显示成“dooG thgin,moT!”。小王编写了一个VB程序,实现还原功能,即单击“还原”按钮后,将文本框Text1中倒序显示的内容还原,并在文本框Text2中输出结果。程序运行界面如图所示。

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

  1. (1) 观察程序代码,“还原”按钮的对象名为
  2. (2) 请在①、②的划线处填入合适的代码 

    Function zf(s As String) As Boolean

      zf = False

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

              ①       

      End If

    End Function

    Private Sub rev_Click()

    Dim s As String, ch As String, rv As String, rv1 As String

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

    s = Text1.Text

    rv = "" : i = 1

    Do While True

      ch = Mid(s, i, 1)

      Do While Not zf(ch) And i < Len(s)

        rv = rv + ch

        i = i + 1

        ch = Mid(s, i, 1)

      Loop

      j = i

      ch = Mid(s, j, 1)

      Do While zf(ch) And j <= Len(s)

               ②        

                  If j > Len(s) Then Exit Do

        ch = Mid(s, j, 1)

      Loop

      rv1 = ""

      For                   '改错

        rv1 = Mid(s,k,1)+rv1

      Next k

      rv = rv + rv1

    If j <= Len(s) Then rv = rv + Mid(s, j, 1)

      i = j + 1

      If i > Len(s) Then Exit Do

    Loop

    Text2.Text = rv

    End Sub

     ② 

  3. (3) 加框处代码有错,请改正。
在VB中,下列函数返回值最小的是(  )
A . Sqr(9) B . Abs(﹣3.2) C . int(-3.2) D . Len(“3.2“)
给出用等号连接的两个整数,如“222 = 24”,让你在左边的整数中间某个位置插入一个加号,看有没有可能让等式成立。以上面的式子为例,可以写成2+22=24和22+2=24两种答案。现设计一个程序,实现该算法,程序运行界面如图所示。

  1. (1) 标题要显示“趣味数学”,需修改窗体的(选填:Caption、Name、Text)属性。
  2. (2) 实现上述功能的VB程序如下,请在程序划线处填入合适代码。

    Private Sub Command1_Click()

    Dim s As String, s1 As String, s2 As String

    Dim c As Integer, k As Integer, i As Integer, flag As Boolean

    flag = False: c = 0

    s = Text1.Text

    For i = 1 To Len(s)

     If Mid(s, i, 1) = “=”Then Exit For

    Next i

    s2 = Mid(s,i+1,Len(s)- i)

    k = Len(s1)

    For i = 1 To k-1

     If Val(Mid(s1, 1, i))+Val(Mid(s1, i + 1, k-i))=Val(s2) Then

      List1.AddItem “第”+Str (c)+“种答案:”+Mid(s, 1, i)+“+”+Mid(s, i + 1, Len (s)-i)

      flag = True

     End If

    Next i

    IfThen List1.AddItem “没有答案!”

    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 .Fom1. Caption=“字符串合并”/B .Label3. Caption=“字符串合并”C .Text1. Text=“字符串合并”)。
  2. (2) 实现上述功能的VB程序如下,请在画线处填入合适的代码。

    Private Sub Commandl_Click ()

    Dim sl As String, s2 As String, ans 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 (sl, i, 1)+Mid (s2, i, 1)

            Next i

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

        Else

            For i=1 To m

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

            Nest i

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

          ② 

        Label3. Caption=“合并为”+ans

    End Sub

     ② 

  3. (3) 若在文本框Text1中输入“Word”,在文本框2中输入“Min”,单击“合并”按钮后,标签Label3中显示的内容是
下列VB表达式的值为False的是(  )
A . 50 Mod 100 \ 50 = 1 B . Int(2 * Rnd – Rnd) \ 2 = 0 C . Int(Rnd * 10) / 5 < 2 D . "22" > "112"
小明编写了一个有关整数闭区间合并操作的VB程序:从数据库读取闭区间数据(左端点和右端点),存储在数组a中,按区间数据左端点升序排序,然后进行合并操作,操作结果存储在数组b中。

例如,读取的数据为 2、3、15、25、10、14、1、5、30、60、15、25,过程是:

⑴设置区间信息为[2,3],[15,25],[10,14],[1,5],[30,60],[15,25];

⑵按区间左端点升序排序,得到J区间信息为

[1,5],[2,3],[10,14],[15,25],[15,25],[30,60],[15,25];

⑶合并区间,得到[1,5],[10,25],[30,60]。说明:区间[1,5]和[2,3]合并为[1,5],区间[10,14]和[15,25]合并为[10,25],区间[10,25]和[15,25]合并为[10,25],因此合并后的结果为:

[1,5],[10,25],[30,60]三个区间。

程序功能如下:单击“读数据库”按钮Command1,程序从数据库读取数据,输出在文本框Text1中;单击“开始处理”按钮Command2,程序进行区间排序,并进行区间合并操作,操作后的结果输出在文本框Text2中。程序运行结果如图所示。

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

  1. (1) Private Sub Command1_Click()中的Click()是(单选,填字母:A .对象名、B .属性名 、C .事件名、D .事件处理过程名)
  2. (2) 从数据库中读入的区间为[1,10],[15,20],[6,18],[25,30],[31,200],则合并操作后的区间为
  3. (3) 请在划线处填入合适的代码。

    Dim a(l To 100) As Integer ′数组a存储合并前的区间

    Dim b(l To 100) As Integer ′数组b存储合并后的区间

    Dim n As Integer    ′n表示区间个数

    Private Sub Command1_Click()

     Dim s1 As String, i As Integer

      ′读取数据,并存储到数组a中,并输出在文本框Text1中,代码略

    End Sub

    Private Sub Command2_CIick()

      Dim s2 As String, i As Integer, j As Integer, k As Integer

      Dim n As Integer, t As Integer, x As Integer

      For i=1 To n-1

     For j=1 To 2 * n-2 * i Step 2

       If  ① Then

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

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

       End If

     Next j

      Next i

      k=2

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

      i=2: j=3

      Do While j <=2 * n

        If b(i) >=a(j) Then

         If b(i) <=a(j+1) Then ② 

        Else If b(i)+1=a(j) Then

         b(k)=a(j+l)

        Else

         k=k+1:③

         k=k+1: b(k)=a(j+1)

         i=i+2

        End If

         j=j+2

      Loop

      For x=1 To k-2 Step 2

        s2=s2 & “[”& b(x) & “,” & b(x+1) & “]” & “,”

      Next x

      s2=s2 & “[” & b(x) & “,” & b(x+1) & “]”

      Text2.text=s2

    End Sub

数据类型用来定义一系列及应用于这些值的一系列
阅读程序如下图。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。下面程序中使用了统计函数,其中一个函数为(    )。

A . Pd B . Encoding C . Mean D . plt
若输入值为1150,输出结果(    )。

A . 0 B . 10 C . 20 D . 850
以下是牛顿迭代程序,认真阅读,填写横线内容

import math

a=float(input("请输入方程系数a:"))

b=float(input("请输入方程系数b:"))

c=float(input("请输入方程系数c:"))

d=b*b-4*a*c

if :

    x1=(-b+math.sqrt(d))/(2*a)

    x2=(-b-math.sqrt(d))/(2*a)

    print("方程有两个不同的解",x1,x2)

elif:

    x1=-b/(2*a)

    print("方程有两个相同的解",x1)

else:

    print("方程无解")

哥德巴赫(Goldbach)的“1+1猜想”是每个偶数都能写成两个素数之和;华林(Waring)的“1+1+1猜想”是每个不是素数的奇数,都能写成三个素数之和。这两个猜想虽然至今未被证明,但是也未曾发现反例。

现在我们来验证一个简单点的“1+1+1+1猜想”;在Text1中输入整数,单击“验证”按键Command1后,把此整数分解成任意四个素数之和的形式,并在List2中输出这四个素数。已知1≤n≤1000000。程序运行时,先求出1000000以内的所有素数,并输出到List1中。运行界面如图所示。

⑴在事件处理过程Form_Load( )中,用筛选法筛出了1~n范围内的所有素数,放置在数组p中。筛选算法是:从2开始,第一个未被筛掉的是2,2是素数,那么把2×2,2×3…,即所有2的倍数都筛掉,下一个未被筛掉的数是3,再把所有3的倍数筛掉……若下一个未被筛掉的是i,那么要把i×i,i×(i+1),i×(i+2)…筛掉,请把画线①、②处的代码补充完整。

⑵有了1~n范围内的素数表后,我们可以用枚举算法验证素数表中的四个数pa , pb , Pc , Pd。是否满足pa+pb+Pc+Pd=n。但是,范围过大,无法承受这么大的枚举量。因此我们考虑如何用哥德巴赫猜想来优化。显然n<8时是无解的,只需考虑n≥8时的情况。因为分解是任意的,那就用前两个素数2或3去分解n,余下部分用哥德巴赫的“1+1猜想”去验证即可。请把画线③、④处的代码补充完整。

Const maxn As Long=1000000    ‘这里最多验证一百万以内的“1+1+1+1猜想”

Dim p(maxn)As Boolean     ‘p存放maxn以内的素数,p(i)=True表示i是素数

Private Sub Form_Load( )

    Dim i As Long, j As Long, cnt As Long

    For i=0 To maxn

      p(i)=True

    Next i

    p(0)=False:p(1)=False

    ‘筛选法求素数表,对于maxn个数,最后一次只要筛去 的所有倍数即可

    For i=2 To Int(Sqr(maxn))

        If p(i)Then

            For j=i To    ①   

                p(   ②   )=False

            Next j

        End If

     Next i

     cnt=0

     For i=1 To maxn

        If p(i)Then

             List1.Addltem Str(i):cnt=cnt+1

      End If

    Next i

  Label1.Caption=maxn & "内的素数,共"& cnt & "个"

End Sub

Private Sub Command1_Click( )

  Dim n As Long, i As Long

  n=Val(Text1.Text):List2.Clear

  If n<8 Then

    List2.AddItem"Impossible":Exit Sub

  Else If   ③   Then     ‘先用两个2去分解n

    List2.Addltem"2"

    List2.Addltem"2"

    n=n-4

  Else

    List2.AddItem "2"    ‘用2和3去分解n

    List2.AddItem "3"

    n=n-5

  End If

  For i=2 To n   ‘余下部分用哥德巴赫的“1+1猜想”来验证

      If     ④     Then

        List2.AddItem Str(i)

        List2.Addltem Str(n-i)

        Exit For

      End If

  Next i

End Sub

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

利用可视化程序设计语言VB6.0,编程加工解决问题的一般过程是(     )。
A . 编写代码、分析问题、设计算法、设计界面、调试运行 B . 分析问题、设计算法、设计界面、编写代码、调试运行 C . 设计算法、编写代码、设计界面、调试运行 D . 设计算法、编写代码、调试运行、设计界面
能被计算机直接执行,运行效率非常高,是需要经过编译或解释才能执行的程序设计语言。
有如下VB 程序段:

s=Text1.Text: n=len(s): y=" "

For i = 1 To n\2

    If Mid(s, i, 1) = Mid(s,n-i+1,1) Then

        y = Str(i)+y

    End If

Next i

若在文本框Text1中输入字符串“abc2008cba”,则y的值为(    )

A . 1 2 3 4 B . 4 3 2 1 C . 5 3 2 1 D . 1 2 3 5
在Python中要生成随机数,应该使用(    )。
A . math 模块 B . random模块 C . numpy 模块 D . pygame 模块
现有如下Visual Basic程序段:

S = 0

For i = _____ to 3 step -1

    S = S + i

Next i

该程序段运行后,语句S = S + i共执行了4次,则下划线处应是(   )

A . 0 B . 1 C . 5 D . 6
以下流程图的功能是:根据输入的正整数X,求分段函数。请将流程图中对应①、②位置的语句选填完整。

① 处可填入的正确的表达式为

A.X%2==0              B.X%2!=0

C.X//2==0             D.X//2!=0

已知字典dict1={1:"One",2:"Two",3:"Three",4:" Four",5:"Five"}要得到字典中的"Four",下列方法中可行的是(    )
A . dict1["Four"] B . dict1[3] 

C . dict1{4} D . dict1[4]