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

下列 VB 程序段中:

Dim i as Integer, max as Integer Dim a(1 to 10) as Integer

‘代码略,随机产生 10 个不重复的数存于数组 a 的 10 个元素 a(1)~a(10)中max=a(1)

For i=2 to 10

       If a(i)>a(max)  then  max=i Next i

变量 max 用于存储(   )

A . a(2)~a(10)的最大值 B . a(1)~a(10)的最大值 C . a(2)~a(10)的最大值在数组中的下标值 D . a(1)~a(10)的最大值在数组中的下标值
若已知当前的人均GDP水平和GDP年增长率,可以计算达到某个GDP水平所需年份。在文本框Text1、Text2、Text3中分别输入人均GDP、年增长率和达到的GDP水平,单击计算按钮Command1,在文本框Text4中输出所需年数。程序运行界面如下:

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

    Private Sub Command1_Click()

        Dim gdp As Single,ddgdp As Single,zc As Single,y As Integer

        gdp=Val(Text1.Text)

        zc=Val(Text2.Text)

        ddgdp=Val(Text3.Text)

        y=0

        Do While

            

            gdp=gdp*(1+zc) 

        Loop

    Text4.Text=Str(y)

    End Sub

编写一个VB程序,实现程序功能如下:随机产生10个1~20之间的整数存放在数组a,在列表框List1中显示,单击“排序”按钮Command1后,在列表框List2中显示升序排序后的结果。具体算法描述如下:引入数组index,index(i)存储i位置应放置的数组元素的下标。排序完毕,a(index(i))成为升序序列,即a(index(1))≤a(index(2))≤a(index(3))≤……≤a(index(i))。在数组a的所有元素中找出最小元素,将其所在位罝存放在数组元素index(1)中,然后在余下的元素中找出最小元素,将其所在位置存放在数组元素index(2)中,以此类推,直到完成所有元素排序。如n=5时,数组a排序后各变量值如下表所示。

i

1

2

3

4

5

a(i)

17

19

9

13

6

index(i)

5

3

4

1

2

a(index(i))

6

9

13

17

19

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

Const n = 10

Const maxn = 20

Dim a(1 To n) As Integer, index(1 To n) As Integer, flag(1 To n) As Boolean

Private Sub Form_Load()

Dim i As Integer

Randomize

For i = 1 To n

 flag(i) = False

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

 List1.AddItem Str(a(i))

Next i

End Sub

Private Sub Command1_Click()

Dim i As Integer, j As Integer

Dim k As Integer

For i = 1 To n

 For j = 1 To n

  If flag(j) = False Then k = j: Exit For

 Next j

 For m = k + 1 To n

  If Then k = m     ‘⑴

 Next m

 index(i) = k

 flag(k) = True

Next i

For i = 1 To n

 List2.AddItem      ‘⑵

Next i

End sub

 ⑵ 

以下程序的输出结果是(   )

S=0

For i=1 To 10

If i Mod 2=0 Then S=S+i

Next i

Print s

A . 10 B . 20 C . 30 D . O
小天使舞蹈队编排一个舞蹈。该舞蹈要求人数为偶数,其中 1 位同学领舞,其站位始终不变,舞蹈队形 变化时,其余同学按逆时针顺序移动站位。我们把所有跳舞的同学从领舞开始依次编为数字 1~n(n 为偶 数),然后把队伍编号按 U 形走向分成两列,即得到第一次队形。从第二次队形开始,固定编号 1(领舞), 其余编号均按逆时针方向移动一个位置,即为该次队形;以后各次队形以此类推,直到除领舞外的所有同学 按逆时针转完一圈为止。

例如,节目人数为 6 时队形变化情况如下:

小嘉为此编写了一个 VB 程序,功能如下:在文本框 Text1 中输入跳舞的同学 n(n 为偶数),单击“队形

变化”按钮 Command1,在列表框 list1 中输出每次变化后的队形。程序代码如下,运行效果如图所示。

Private Sub Command1_Click() Dim a(1 To 20) As String

Dim result As String, t As String

Dim n As Integer, i As Integer, j As Integer n = Val(Text1.Text)

For i = 1 To n

    ①    

Next i

For i = 1 To

result = " "

List1.AddItem "第" & Str(i) & "次:" For j = 1 To n \ 2

result = a(j) + " " +   a(n – j + 1 ) List1.AddItem result

Next j

    ②    

For j = n To 3 Step -1 a(j) = a(j - 1)

Next j

a(2) = temp

Next i End Sub

请回答下列问题:

  1. (1) 语句 List1.AddItem result 中的 AddItem 是(单选,填字母:A .方法名/B .过程名/C .事件名)
  2. (2) 实现上述功能的 VB 代码如下,请在划线处填入合适代码。

     ② 

  3. (3) 程序中加框处代码有错,请改正。
算法设计与程序实现

换钱问题:

要将一张100元的钞票,换成等值的5元、2元、1元一张的钞票共50张。其中一种换法如下:

5元:3张

2元:38张

1元:9张

求出所有的换钱方案。

【算法设计】

x表示5元的张数:1≦x≦20;

y表示2元的张数:1≦y≦50;

z表示1元的张数:1≦z≦100。

【参考程序】

Dim x AsInteger

Dim y AsInteger

Dim z As Integer

For x=1 To20

    For y=1To 50

        Forz=1 To 100

           If           Then

               Print x;y;z       ‘x y z 之间以分号分隔

           End If

        Nextz

   Next y

Next x

根据上述回答下列问题:

  1. (1) 本题采用的算法是 (填:解析法/枚举法/排序法/递归法)。
  2. (2) 程序代码中空白处应填写的条件是           
    A . 5x + 2y + z=100 Or  x+ y + z = 50 B . 5x + 2y + z=100 And x + y + z = 50 C . 5*x + 2*y + z=100 Or x + y + z = 50 D . 5*x + 2*y + z=100 And x + y + z = 50
numpy是一个科学计算包,其中包括很多,如、矩阵计算方法、、线性代数等。
小明对教材上的冒泡算法进行优化,当数据已经有序时就停止加工,为此他编写了一个VB程序,功能如下:运行程序时,在列表框List1中显示排序前的数据,单击“排序”按钮Command1,在列表框List2中显示这些数据按升序排序后的结果,在标签Label1中显示排序过程的加工遍数,在标签Label2中显示排序过程的数据交换次数。运行效果如图所示。

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

Const n=10

Dim a(1 To n)As Integer

Private Sub Form_Load( )

‘排序前的数据存储在数组a中,并在List1中显示,代码略

End Sub

Private Sub Command1_Click( )

  Dim flag As Boolean

  Dim x As Integer, y As Integer

  x=0:y=0

  flag=True:i=1

  Do While i<=n-1 And flag

    flag=False

    For j=n To i+1 Step-1

      If   Then    ‘①

          t=a(j)

          a(j)=a(j-1)

          a(j-1)=t

          flag=True

               ‘②

      End If

  Next j

  y=y+1

        ‘③

Loop

Label1.Caption="经过"+Str(y)+"遍排序数据有序!"

Label2.Caption="数据总共交换"+Str(x)+"次!"

For i=1 To n

  List2.AddItem Str(a(i))

Next i

End Sub

以上程序段运行时,为了实现上述功能,加框处代码应改正为:①;②;③

(约瑟夫问题)n个人围成一圈,从第1个人开始从1报数,数到3的人出圈;再由下一个人继续从1开始报数,数到3的人出圈……输出依次出圈的人的编号和最后一个留在圈里的人的编号。如输入n=8,则依次出圈的人的编号是3,6,1,5,2,8,4,最后留在圈内的是7号。

以下VB程序在a数组中保存了下一个要报数的人的编号,即若。(w)=p,则表示当第w个人报过数2后,下一个要报数的是第p号。程序在列表框Listl中输出了依次出圈的人的编号,在标签Label1中输出了最后剩下的人的编号。请完善程序。

Private Sub Command1_Click( )

  Dim i As Integer, n As Integer, w As Integer, num As Integer

  Dim a(1 To 100)As Integer, t As Integer

  n=Val(Text1.Text)

  For i=1 To n-1

      a(i)=i+1

  Next i

  a(n)=1

  w=n        ‘变量w表示当前检查的是第w号数组元素,即从第n号开始检查

  t=0       ‘变量t用以模拟报数

  Do While   ①   

      num=a(w)    ‘当前报数的人的编号

      t=t+1

      If t=3 Then

          List1.AddItem Str(num)

        a(w)=   ②   

        t=0

      Else

             ③   

      End If

  Loop

      Label1.Caption=Str(w)

End Sub

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

关于算法的描述,下列选项中正确的是(   )
A . 算法的每一步骤必须有确切的含义 B . 算法必须有输入 C . 算法本身就是一种程序设计语言 D . 算法的步骤可以是无穷的
有如下所示VB程序段:

str1 = “ABCDEFGHIJKLMNOPQRSTUVWXYZ”

s = “”

For i = 1 To 4

    t = Int(Rnd*10) + 1

    If t Mod 2 = i Mod 2 Then

        t = t + 1

    Else

        t = t + 2

    End If

    s = s + Mid(str1,t,1)

Next i

List1.AddItem s

执行该程序段后,列表框List1中可能显示的内容是(   )

A . BADC B . BCDY C . DEFG D . CDEF
寻找字符串中连续数字(全部都是1位数)之和为k的子串,如字符串“20210521”中和为6的子串为“105”。实现该功能的程序段如下,请完善程序:

s=input("请输入数字字符串")

i=0;j=0;k=6;sum=0

while j<len(s):

    sum=sum+int(ch1)

    while sum>k:

        ch2=s[i]

        i=i+1

    if sum==k:

print("子串为:",)

break

    j=j+1

else:

print("没有满足要求的子串。")

在Python中,设a=2,b=3,表达式a>b and b>=3的值是(     )
A . 1 B . -1 C . True D . False
VB表达式Int(Rnd* 10)+54>9/3的值可能是(    )
A . 18 B . 12 C . 28 D . 11
某算法流程图如图所示,执行该算法后,最后输出s的值为27,则下列说法中不正确的是(    )

A . 所输入的x的值为16 B . s←s+x被执行了2次 C . x>8被执行了2次 D . 算法结束时,x的值为4
已知变量a=5,a - =2,运算后变量a的值为(    )
A . 0 B . 1 C . 3 D . 7
有如下VB程序段:

Const n=5

Dima(1 to n) as integer,c(1 to n) as integer

For i=1 to n

    a(i)=int (rnd*10)+1

    c(a(i))=c(a(i))+1

Next i

For i=10 to 1 step -1

    For j=1 to c(i)

        Text1.Text = Text1.Text + Str(i)

    Next

Next i

执行以上程序段后,Text1 中显示的值可能是(    )

A . 5  7  9  8  10 B . 10  8  6  8  2 C . 5  5  3  3  1 D . 1  1  2  3  5
两个班级(人数均为50) 的学生参加志愿者活动的次数存储在数组a中,其中第1段元素a(1)~a(50)存储着第1个班的数据,第2段元素a(51) ~a(100)存储着第2个班的数据。使用选择排序算法分别对每段中的数据进行降序排列,则数组元素之间的总比较次数是(    )
A . 98 B . 2450 C . 2550 D . 4950
字符串类型在Python中经常用到,以下关于字符串的表述不正确的是(      )
A . Python中 "" 和" "是同一个字符串        B . Python中内置了许多字符串处理方法 C . 字符串可以用“+”运算符进行连接运算    D . Python中只有“字符串”而无“字符”类型  
某算法的部分流程图如图所示,若输人k的值为9,最终i,s的值分别为(    )

A . 11  0 B . 11  -11 C . 9   0 D . 9  -9