试题

试题 试卷

logo

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

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

小明编写了一个寻找非常幸运数的程序。程序运行时,单击“求解”按钮,则在列表框中输出所有的六位数中的非常幸运数,在标签Label2中输出非常幸运数的个数。

所谓的非常幸运数是指符合下列条件的整数:

⑴该数的偶数位数字之和等于奇数位数字之和。

⑵该数的前一半的各位数字之和正好等于后一半的各位数字之和。

实现上述功能的VB程序如下,在程序划线处填入合适的代码。

Private Sub Command1_Click()

    Dim a(1 To 6) As Integer, sum(1 To 4) As Integer

    Dim x As Long, i As Long, count As Long, k As Long

    For i=100000 To 999999

        x=i

        k=1

        Do While x > 0

            a(k)=

            x=x\10

            k=k+1

        Loop

        sum(1)=a(1) +a(2)+a(3)

        sum(2)=a(4)+a(5)+a(6)

       

        sum(4)=a(2)+a(4)+a(6)

        If sum(1)=sum(2) And sum(3)=sum(4)Then

            List1.AddItem Str(i)

           

        End If

    Next i

    Label2.Caption="共有个数:" + str(count)

End Sub

举一反三
现有n根棍子,第i根棍子的长度为a<sub>1</sub>,现设计了以下VB程序段,想要从中选出三根棍子组成周长尽可能长的三角形,输出最大的周长;若无法组成三角形,则输出0。如当n=5,a={2,3,4,5,10}时,输出12,即选择了3、4、5。当n=4,a={4,5,10,20}时,无法组成三角形,输出0。实现上述功能的VB程序代码如下,但加框处代码有误,请改正。

Dim a(1 To 1000) As Integer

Dim n As Integer

Private Sub Form_Load()

'确定n的值和数组a的各个元素值,即每根棍子的长度值,代码略

End Sub

Function max (x As Integer, y As Integer) As Integer

    If x>y Then

        max=x

    Else

        max=y

    End If

End Function

Private Sub Command1_Click()

    Dim i As Integer, J As Integer, K As Integer

    Dim ans As Integer, c As Integer, longest As Integer,

    rest As Integer

    ans=0

    '让i<j<k,保证棍子不会被重复选中

    For i=1 To n

        For j=i+1 To n

            For k=j+1 To n

                c=a(i)+a(j)+a(k)

                longest=      '①

                rest=c-longest        'rest 保存最短的两条边的和

                If Then      '②

                    ans=max(ans, c)

                End If

            Next k

        Next j

    Next i

    Print ans

End Sub

返回首页

试题篮