算法与程序设计 知识点题库

只能被1和它本身整除的自然数。要求编写VB程序找出任意两个整数之间中所有的素数及个数,程序运行界面如下图所示。

请根据算法将下列程序补充完整。

Function prime(a As Integer) As Boolean

    Dim j As Integer

    prime = True

    j = 2

    Do While prime And j <= a \ 2

       If a Mod j = 0 Then

           prime = False

         Exit Do

       End If

            

         Loop

End Function

Private Sub Command1_Click( )

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

Dim count As Integer

a = Val(Text1.Text)

b = Val(Text2.Text)

        For i = a To b

           If  = True Then

               List1.AddItem Str(i)

               count = count + 1

           End If

Next i

Label1.Caption = "素数共有" + Str(count) + "个!"

End Sub

某算法的部分流程图如图所示,退出循环后输出的s和a值分别是:(  )

A . 5,15 B . 105,7 C . 51,5 D . 15,7
有如下VB程序段:

i=1: j=8: n=1

k=Val(Text1. Text)

Do While i<=j

    m=(i+j)2

    IF k<d(m) Then j=m-1 Else i=m+1

    n=n+1

Loop

数组元素d(1)到d(8)依次为3,9,14,17,25,29,32,35,在文本框 Text1输人“14”。执行程序后,下列说法不正确的是(  )

A . 变量m的值为3 B . 变量i的值3 C . 变量j的值为3 D . 变量n的值为4
【排序算法的应用3】某排序算法思想如下:若有1个桶,编号为0~10,随机产生多个整数,每产生一个整数时,就在以该整数为编号的桶中放一面小旗子,最后只要按顺序数每个桶中有几面小旗子,就能得到这几个整数的有序排列。例如2号桶中有1面小旗子,表示2出现了一次;3号桶中有1面小旗子,表示3出现了一次;5号桶中有2面小旗子,表示5出现了两次;8号桶中有1面小旗子,表示8出现了一次,按桶的编号顺序读出旗子数量,没有旗子的桶略过,得到有序整数“2,3,5,5,8”。

为此,小李编写了一个VB程序,功能如下:运行程序,窗体加载时随机产生6个[0,9]内的随机整数,并在列表框List1中依次显示排序前数据,单击“排序”按钮Command1,在列表框List2中显示经过上述排序算法后的数据。运行结果如图所示。

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

Dima (10) As Integer ‘数组a表示桶的编号,如a(0)表示第0号桶

Private Sub Command1_Click ( )

Dim i As Integer, j As Integer

For i = 0 To 10

  For j = 1 To      ‘①

    List2. AddItem CStr(i)

  Next j

Next i

End Sub

Private Sub Form_Load ( )

Dim i As Integer

Randomize

For i = 0 To1 0    ‘将数组初始化为0

  a(i) = 0

Next i

For i = 1 To 6     ‘产生6个[0,9]内的随机数

  t = Int (Rnd*10)

  a(t) =          ‘② 第t号桶中小旗子数量加1

  List1. AddItem CStr(t)

Next i

End Sub

 ② 

若输入18,下图的执行结果是

下列表示式中,运算结果错误的是(  )。
A . 4/5=0.8 B . 4\5=0 C . 5 mod 4=1 D . 4 mod 5=0
  关系表达式是用连接起来的式子。当关系表达式成立时值为,不成立时值为
有如下VB程序段:

For i = 1 To 6

  a(i) = Int(Rnd * 10) + 1

Next i

For i = 1 To 5

  If i Mod 2 = 1 And a(i) < a(i + 1) Then

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

  Else

    a(i) = a(i) - 1

  End If

Next i

执行程序后,a数组各元素可能是(    )

A . 9,9,8,7,5,3 B . 2,6,10,8,9,5 C . 9,6,7,3,11,8 D . 9,3,8,-1,7,2
下列可以导入Python模块的语句是(    )
A . import module B . input module C . print module D . def module
数组a中存储着某市2010年到 2019 年的GDP数值,编写VB程序,实现找出相邻两年GDP变化最大(即相邻两年GDP差值最大)的年份区间。若有多个符合要求的年份区间,只输出距今最近的年份区间。部分代码如下所示:

Dim i As Integer, imax As Integer

       ①  

For i = 3 To 10

   If Abs(a(i) - a(i - 1)) >=  ②  Then imax = i

Next i

Text1.Text = "GDP变化最大的年份区间是" + Str(imax + 2008) + "-" + Str(imax + 2009)

①、②应填入的代码为(   )

A . ①imax=1  ②Abs(a(i - 1) - a(i - 2)) B . ①imax=1  ②Abs(a(imax) - a(imax - 1)) C . ①imax=2  ②Abs(a(i - 1) - a(i - 2)) D . ①imax=2  ②Abs(a(imax) - a(imax - 1))2
有如下VB程序段:

s=0

For i=1 To 5 Step 2

  s=s+i

Next i

s=s+i

Label1.Caption=Str(s)

该程序段运行后,标签Label1上显示的内容是(  )

A . 3 B . 9 C . 14 D . 16
为了把工厂中高低不等的物品按从低到高排好序,工程师发明了一种排序机械臂,它首先在参加排序的所有物品中同时选出高度最低和最高的物品,分别交换到左、右边界,再缩小左、右边界,然后在余下的物品中采用同样的方法排序,直到所有物品成为一个有序的序列。编写VB 程序,实现上述排序功能:运行程序,单击“读取”按钮Command1,在列表框List1中显示待排序的物品,然后单击“排序”按钮Command2,在列表框List2中显示排序好的物品。程序运行界面如图所示。

请回答下列问题:

  1. (1) 若要程序运行时,窗体Form1 的标题显示为“物品排序”,则Form_Load()事件中应添加的代码是(单选,填字母:A .Form1.Name="物品排序" /B .Form1.Text = "物品排序"/C .Form1.Caption ="物品排序")。
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Const m = 9       'm表示物品个数

    Dim id(m) As Integer, gd(m) As Integer

    Private Sub Command1_Click()

        '读取物品的信息依次存入数组id,gd中,并在列表框List1中显示,代码略

    End Sub

    Private Sub Command2_Click( )

        Dim LAs Integer, R As Integer, t As integer

        Dim imin As Integer, imax As Integer

        L = 1: R = m            '分别指向待排序区间的左右边界

        Do While L < R

            imin = L

           

            For i = L + 1 To R

                If  Then imax = i

                If gd(i) < gd(imin) Then imin = i

            Next i

            t = id(imin): id(imin) = id(L): id(L) = t

            t = gd(imin): gd(imin) = gd(L): gd(L) = t

            If imax = L Then     '考虑最大值恰好在L位置的情形

            t = id(imax): id(imax) = id(R): id(R) = t

            t = gd(imax): gd(imax) = gd(R): gd(R) = t

            L = L + 1

           

        Loop

        For i = 1 To m

            List2.AddItem Str(id(i)) + " " + Str(gd(i))

        Next i

    End Sub

    a(i) = n - i

    Next i

  3. (3) 程序中加框处代码有错,请改正。
某食品连锁店5位顾客贵宾消费卡的积分依次为900、512、613、700、810,若采用选择排序算法对其进行从小到大排序,如下表,第二趟的排序结果是(    )。

原始数据

900

512

613

700

810

第一趟

512

900

613

700

810

第二趟

第三趟

512

613

700

900

810

第四趟

512

613

700

810

900

A . 512 613 700 900 810 B . 512 810 613 900 700 C . 512 900 613 700 810 D . 512 613 900 700 810
有如下VB程序段:

For i = 1 To 5

    a(i)= Int(Rnd * 10)

Next i

For i = 2 To 5

    If a(i) < a(i -1) And a(i) Mod 2 = 1 Then

        a(i) = a(i) + 1

    ElseIf a(i) Mod 2 = 0 And i Mod 2 = 0 Then

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

    End If

Next i

执行程序后,a数组各元素不可能是(    )

A . 6,6,4,3,3 B . 0,-1,9,8,4 C . 4,3,5,8,7 D . 0,1,3,2,0
下列选项中,可以作为Python程序变量名的是(   )。
A . a/b B . ab C . 2c D . if
程序设计中的“算法”其实就是(   )。
A . 解决问题的方法和步骤 B . 能通过电脑进行计算的方法 C . 便于计算的方法 D . 能在计算机上解决的方法
有如下程序段:

import random

a = [0] * 6

for i in range(0,6):  

    a[i] = random.randint(1,5) * 2 + 1

    i = 0

    while i < 5:

        if a[i] > a[i+1]:

            a[i],a[i+1] = a[i+1],a[i]

        else:

            a[i] += 1

            i += 1

print(a)

执行以上程序后,列表变量a可能的是 (    )

A . [1, 6, 10, 10, 10, 9] B . [3, 8, 7, 13, 3, 9] C . [5, 10, 7, 7, 12, 11] D . [5, 10, 10, 7, 10, 8]
下列VB表达式中,计算结果最小的是(     )
A . 3+9%3*2 B . round(2.3) * len("12") // 3 C . abs(-49)**0.5 /int(2.3) D . ord("E")-ord("A")
以下名称中(        )表示变体类型的数据。
A . Name B . Currency C . Variant D . Const
某算法的部分流程图如图所示

执行这部分流程图a、b的值分别是(    )

A . 22      6 B . 72      6 C . 72     3 D . 22     3