试题

试题 试卷

logo

题型:综合题 题类:常考题 难易度:普通

【bj】高中信息技术综合库——枚举算法1

珠心算是在大脑中以算珠表象作为载体,运用珠算法则所进行的计算。某学校的珠心算老师采用一种快速考查珠心算加法能力的测验方法,他随机给出一个正整数集合,集合中的数各不相同,然后要求学生回答:其中共有多少个数恰好等于集合中另外两个(不同的)数之和,例如集合{1,2,3,4},一共有2个数等于集合中另外两个数之和,它们是3、4(4=3+1,3=2+1)。将上述算法编写成程序,其功能如下:程序运行时产生n个范围在[1,100]内的不同的随机整数存储在数组a中,并在列表框List1中显示,单击按钮Command1后,在标签Label1上输出结果,如图所示。

(1)、集合{1,2,3,4,5,6}中一共有个数等于集合中另外两个数之和。
(2)、实现上述功能的VB程序如下,请在划线处填入合适代码。

Const n=12

Dim a(1 To n) As Integer

Dim flag(1 To 100) As Boolean

Private Sub Form_Load()

    Dim i As Integer, t As Integer

    For i=1 To 100

        flag(i)=False

    Next i

    i=1

    Do While i <=n

        t=Int(Rnd * 100)+1

        If Not flag(t) Then

           

            List1.AddItem Str(t)

            flag(t)=True

            i=i+1

        End If

    Loop

End Sub

Private Sub Command1_Click()

    Dim i As Integer, j As Integer, ans As Integer

    ans=0

    For i=1 To n

        For j=i+1 To n

            If a(i)+a(j)<=100 Then

                If Then

                    ans=ans+1

                    flag(a(i)+a(j))= False

                End If

           

        Next j

    Next i

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

End Sub

举一反三
由n行数字组成的数字三角形如图所示。设计一个算法,对于由n行数字组成的数字三角形(数字范围[1,50],计算从三角形的顶至底的路径经过的数字和的最大值,每一步可以从当前点走到左下方的点也可以走到右下方的点。

寻求路径最大值的算法设计如下:

按三角形的行划分,若有n行,则有n-1个步骤

①从底层开始,本身数即为最大值

②倒数第二层的计算取决于底层的数据:

12+6=18,13+14=27,24+15=39,24+8=32;

③倒数第三层的计算取决于底二层的数据:

27+12=39,39+7=46,39+26=65;

④倒数第四层的计算取决于底三层的数据:

46+11=57,65+8=73;

④最后的路径:13—8—26—15—24其和为86。

根据上述算法描述,设计程序界面如下图所示,点击“生成金字塔”按钮,在列表框中生成数字金字塔,点击“寻求路径最大值”按钮,在文本框text1中输出最大值。

依据上述描述设计如下VB程序:

Const n = 5

Dim sx As String

Dim i, j, k, a(1 To 100) As Integer Private Sub Command1_Click() List1.Clear

For i = 1 To n For j = 1 To i

    ①  

sx = sx + Str(a((i - 1) * n + j)) Next j

For k = n To i Step -1 sx = " " + sx

Next k List1.AddItem sx sx = ""

Next i End Sub

Private Sub Command2_Click() For i = n To 1 Step -1

For j = 2 To i

If    ②   Then

a((i - 2) * n + j - 1) = a((i - 1) * n + j - 1) + a((i - 2) * n + j - 1)

Else

a((i - 2) * n + j - 1) = a((i - 1) * n + j) + a((i - 2) * n + j - 1)

End If Next j

Next i

    ③  

End Sub

请回答下列问题:

返回首页

试题篮