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

某VB程序的一个事件过程如下:

  Private Sub Commandl_Click()

     Dim i As Integer,j As Integer.s As String

     Dim a(1 To 5) As Integer

     List1.Clear

     Randomize             

     For i=1 To 10

       j=Int(Rnd*6)+1

       a(j)=a(j)+1

Next i

For i=1 To 5

  s=Str(a(i))

  List1.AddItem s

Next i

End Sub

程序运行时,单击按钮Commandl后弹出如图所示的错误提示。出现错误的语句是(   )

A . j=Int(Rnd*6)+1 B . a(j)=a(j)+1 C . s=Str(a(i)) D . List1.AddItem s
在Visual Basic中,若x表示能被5整除的正整数,则下列逻辑表达式的值一定为真的是(  )
A . x / 5=0 B . x Mod 5=0 C . Int(x\5)=0 D . 5 Mod x=0
有如下程序:

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中无内容
下列VB表达式中,只随机产生9到99之间偶数的是(  )
A . Int(Rnd*90+10) B . Int(Rnd*90+9) C . Int(Rnd*45)*2+10 D . Int(Rnd*45)*2+9
有如下VB程序段:

L = 0: R = 7: i = 1

Do While i < R

    If a(i) = 0 Then

        L = L + 1

        t = a(i): a(i) = a(L): a(L) = t i = i + 1

    ElseIf a(i) = 2 Then

        R = R - 1

        t = a(i): a(i) = a(R): a(R) = t

    Else

        i = i + 1

    End If

Loop

数组元素 a(1)到 a(6)的值依次为“2,0,2,1,1,0”。执行该程序段后,下列说法不正确的是(  )

A . 变量L的值为2 B . 变量R的值为5 C . 变量i的值为4 D . 数组元素值依次为“0,0,1,1,2,2”
生成2位能被3整除的随机整数的VB表达式是(  )
A . int(Rnd()*90+10 ) B . int(Rnd*30)*3+12 C . int(Rnd*88+12) D . int((Rnd*30)*3)+12
统计不同单词个数,在Text1中输入一行单词,点击“统计”按钮后在Text2中输出不同单词的个数。单词字母有大小写,同一单词的大小字母视为相同,句子以符号结尾,程序运行界面如图所示。

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

    Private Sub Command1_Click()

    Dim a(1 To 100)As String, s As String, ch As String, word

    As String

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

    s=Text1.Text:k=0:word=" "

    For i=1 To Len(s)

    ch=Mid(s,i,1)

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

        If ch>="A" And ch<="Z"Then  ①  

        word=word+ch

      Else

        flag=False

        For j=1 To k

          If a(j)=word Then flag=True

        Next j

        If Not flag And word<> ''Then

            ②  

          a(k)=word

          numb=numb+1

        End If

          ③  

      End If

    Next i

    Text2.Text=Str(numb)

    End Sub

在算法描述中,整数X大于等于整数Y的表达式为:X>=Y。
有如下VB程序段:

s ="waste" : n = Len(s)

s1 = Text1.Text : flag = False

For i=1Ton

    If Mid(s,i,1) = Mid(s1, 1,1) Then

        flag = True

        For j = 2 To Len(s1)

            If Mid(s1, j, 1)<>Mid(s, (j+i-2) Mod n + 1, 1) Then flag = False: Exit For

        Next j

        If flag Then Exit For

    End If

Next i

执行该程序段后,若flag变量值为True,则文本框Text1中输入的内容不可能的是(    )

A . ste B . tewa C . steaw D . Wastew
设x=4,y=6,则能在Text1控件上显示SUM=10的语句是(  )
A . Text.Text1="SUM=x+y" B . Text1.Text="SUM="+Str(x+y) C . Text="SUM="+Str(x+y) D . Textl.Text="SUM="+Val(x+y)
下列VB表达式的值为False的是(      )
A . 8 Mod 10 \ 5 = 0 B . Int(Rnd * 50) Mod 2 * 2 < 4 C . Mid("1234", 3, 2) > "234" D . "Abc" < "ABCD"
设a=2,b=3,c=4,表达式a>b And b<=c值是(   )。
A . 5 B . 1 C . True D . False
某算法的部分流程图如图所示。

执行这部分流程,s的初值为0,输入n为5,则输出s的值为(   )

A . 1 B . 4 C . 5 D . 6
在Visual Basic程序中,设x为一个大于“0”的三位数,能得到x百位上数字的表达式是(   )
A . Int(x / 10)*10 B . Int(x \ 100)*100 C . x - Int(x / 10)*10 D . Int(x \ 100)
下面的代码段可以实现统计某种递增序列的功能:

a=[3,7,2,5,8,9,4,6,1]

m, c=1, 1

for i in range(1,len(a)):

    if a[i]>=a[i-1]:

        c+=1

        m=max(m, c)

    else:

        c=1

程序执行后,c和m的值分别是(      )

A . 1和1 B . 1和4 C . 2和4 D . 3和4
matplotlib模块是Python中最出色的绘图库,功能很完善。调用 matplotlib.pyplot时,坐标系可以根据数值范围自动生成。阅读下列程序代码。

import numpy as np #加载numpy模块并取名为np

import matplotlib.pyplot as plt

x=np.arange(0,2*np.pi,0.01)

y=np.sin(x) 

plt.plot(x,y)

plt.title('sin(x)') 

plt.xlabel('X')

plt.ylabel('Y')  

plt.show() 

下列选择错误的是(    )

A . import matplotlib.pyplot as plt ,加载matplotlib.pyplot并取名为plt B . x=np.arange(0,2*np.pi,0.01)为x轴区间 C . plt.plot(x,y),显示x轴、y轴 D . plt.show()显示图像
数学可以看到算术表达式:a * b= c,现在有一段程序可以输入乘数和被乘数(默认正整数),并输出上述表达式的效果。例如:输入:3  5,输出的结果为:3 * 5= 15。

a=int(input(“请输入正整数:”))

b=int(input(“请输入正整数:”))

c=a*b

print()+“*”+ “=” )

请将上述缺失的代码补充完整。

给定一个序列a,这个序列由n个数组成(n个数依次保存在数组a(1)~a(n)中),现在给定一个整数p,要求将序列a的前p个数与后n-p个数对调,且不改变这p个数(和n-p个数)之间的相对位置。例如长度为5的序列1,2,3,4,5,当p=2时重排的结果为3,4,5,1,2。

我们可以用两种不同的方法来实现这一目的:

方法一:逐个地将数组a的后n-p个数依次移动到前面去。

数组 a:

1

2

3

4

5

3

1

2

4

5

3

4

1

2

5

3

4

5

1

2

方法二:将前p个数看作一个区间,后n-p个数看作另一个区间,依次将数交换,同时缩小区间的大小;若某一个区间达到末尾,则调整区间的范围,直到两个区间刚好同时达到末尾,即调整结束。

数组a:

互换并调整区间:第一个区间结束且第二个区间还有元素,调整区间 1 和区间 2 的范围,如图将区间 1 调整为[3,4],区间 2 调整为[5:5]。

互换并调整区间:第二个区间结束且第一个区间还有元素,仅调整第 1 个区间的起始位置。

互换并结束:两个区间同时到达末尾。

3

4

5

1

2

小明依据上面的方法设计了VB程序如下:

Dim a(1 To 100), i As Integer, j As Integer, tmp As Integer, p As Integer

Dim start1 As Integer, end1 As Integer, start2 As Integer, end2 As Integer   '将序列保存到数组a中,序列长度保存到n中,移动数字的个数保存在p中

Private Sub Command2_Click()       '用方法一实现

    For i = p + 1 To n

        tmp = a(i)

        For j = i To  ①   Step -1

            a(j) = a(j - 1)

        Next j

           ②   = tmp

    Next i

End Sub

Private Sub Command3_Click()      '用方法二实现

    start1 = 1: end1 = p      '第1个区间的起始状态

    start2 = p + 1: end2 = n      '第2个区间的起始状态

    i = start1: j = start2

    Do While   ③  

        i = start1: j = start2

        Do While i <= end1 And j <= end2

            tmp = a(i): a(i) = a(j): a(j) = tmp

            i = i + 1:j = j + 1

        Loop

        If i <= end1 Then     '第2个区间结束且第1个区间还有元素

            start1 = i

        ElseIf j <= end2 Then   '第1个区间结束且第2个区间还有元素

            start1 = i:   ④  

            start2 = j

        End If

    Loop

End Sub

请回答下列问题:

  1. (1) 若序列为:9,8,13,22,7,6,5,37,6,p=4 时,使用方法一,则a(3)的值依次是13,(用逗号隔开,顺序填写曾存储过的值)。
  2. (2) 请在划线处填入合适的代码。

     ② ③ ④ 

有n册图书已按图书编号升序排列(编号互不重复,用7位长度的字符串表示)。经过多次借阅归还之后,部分图书顺序被打乱,现要找出这部分图书进行调整,以使整体升序。算法思想:先找到首尾两个图书编号升序区间,再处理得到待调整区间,最后对该区间中的图书编号排序。

编写VB程序,实现上述功能。运行程序,在列表框List1中显示全部图书编号。单击“整理”按钮Command1,在标签Label1中显示待调整区间图书的册数,在文本框Text1中显示待调整区间图书的起止编号,并在列表框List2中显示排序后的图书编号。程序运行界面如图所示,其中①和②两处分别指向待调整区间图书的起始和截止编号。

  1. (1) 如图所示,若采用选择排序算法,仅将待调整区间图书进行升序排序,排序过程结束后,数组元素之间的比较次数为(填数字)。
  2. (2) 实现上述功能的部分VB程序如下,请在划线处填入合适的代码。

    'n是常量,代码略

    Dim a(0 To n) As String

    Private Sub Form_ Load()

        a(0)= "”

        '将n册图书的编号存入数组元素a(1)~a(n),在List1中显示,代码略

    End Sub

    Private Sub Command1_ Click()

        Dim i As Integer, k As Integer, left As Integer, right As Integer

        Dim min As String, max As String

        min= ": max= ": left= 1: right= 0

        For i= 1 To n- 1

            If a(i)> a(i + 1) Then

                max = a(i)

                left= i: Exit For

            End If

        Next i

        For i=n To 2 Step-1

            If  Then

               min= a(i)

    right= i: Exit For

            End If

        Next i

        i= left

         Do While i <= right

            If a(i)> max Then

              max = a(i)

            ElseIf a(i) < min Then

                min= a(i)

            End If

           i=i+ 1

        Loop

        k=0

        If left < right Then

            left = getPos(1, left, min)

           

             k= right- left+ 1

    Text1.Text= "待调整区间图书起始编号: " + a(left) + "-->截止编号: "+ a(right)

        End If

    Label1.Caption = "待调整区间图书共有:" + Str(k) + "册"

        '对待调整区间的图书编号进行排序,在List2中输出整理结果,代码略

    End Sub

    Function getPos(head As Integer, tail As Integer, value As String) As Integer

        Dim i As Integer

        i= tai1

        Do While

            i=i- 1

        Loop

        getPos=i+ 1

    End Function

编程解决“百钱买百鸡”的问题,下列工作过程,最恰当的是(    )。
A . 分析问题,编写程序,设计算法,运行程序 B . 分析问题,设计算法,编写程序,运行程序 C . 设计算法,编写程序,提出问题,运行程序 D . 设计算法,提出问题,编写程序,运行程序