试题

试题 试卷

logo

题型:综合题 题类:常考题 难易度:困难

浙江省湖州市2018-2019学年高二下学期信息技术期末考试试卷

编写“矩形面积”程序,实现如下功能:按一定比例随机生成a(1)至a(100)数组元素的值:0或1(0多1少);将这100个数组元素,按行依次转化为10×10的二维阵列; 当数组元素的值为0 时显示成“□”,当数组元素的值为1时显示成“◆”,并在列表框 List1中输出。寻找阵列中,由“□”字符构造出的最大面积的矩形,在标签Label1中显示最大面积所占的单位数。程序运行界面如图所示。

实现上述功能的VB代码如下:

Dim a(1 To 100) As Integer Private Sub Command1_Click()

Dim i As Integer, s As Integer, smax As Integer ‘用于随机生成数据,并将阵列按规则在列表框中输出,该部分功能的代码略。

smax = 0

For i = 1 To 100

If a(i) = 0 Then s = search(i) If s > smax Then smax = s

Next i

Label1.Caption = "最大面积的矩形,占" + Str(smax) + "个单位。" End Sub

Function search(i As Integer) As Integer

Dim x As Integer, x1 As Integer, xend As Integer Dim y As Integer, y1 As Integer

Dim s As Integer

x = (i - 1) Mod 10 + 1   '起始列号 y = (i - 1) \ 10 + 1    '起始行号 x1 = x

y1 = y xend = 10

search = 0

Do While y1 <= 10

If a((y1 - 1) * 10 + x) = 1 Then Exit Do   '判断 x1 = x

Do While x1 <= xend

If a((y1 - 1) * 10 + x1) = 1 Then

x1 = x1 – 1   '改错

Else

x1 = x1 + 1

End If Loop

y1 = y1 + 1

s = (x1 - x) * (       )   '填空 If s > search Then search = s

Loop

End Function

请回答下列问题:

(1)、根据程序的运行界面,没有 Caption 属性的控件为类(单选,填字母: A .窗 体/ B .命令按钮/ C .列表框/ D .标签)。
(2)、程序代码中,去除“判断”处语句,是否会影响程序的结果(选填:是/否)。
(3)、程序代码中,“改错”处的语句有误,请改正。
(4)、程序代码中,将“填空”处的语句补充完整。
举一反三
编写一个查找最接近的数的VB程序:程序运行时,在文本框Text1中输人产生随机数的个数(1到100之间),单击命令按钮“产生随机数并升序排列”后,在列表框List1中显示已经按升序排列后的随机整数,然后在文本框Text2中输入要查找的整数,单击命令按钮"查找"后,在标签Label3中显示随机整数序列中与待查找数最接近的整数(当最接近的数有2个时,输出较大的一个)。程序运行效果如图所示:

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

Dim n As Integer          '存储随机数的个数

Dim f(1To100)As Boolean

'f(i)为True时表示随机整数i已经产生过

Dim a(1 To 100)As Integer

'依次存放升序排序后的n个随机数

Private Sub Command1_Click()

'命令按钮“产生随机数并升序排列”的单击事件

    Dim i As Integer

    Randomize

    For i=1 To 100

        f(i)=False

    Next i

    n=Val(Text1. Text)

    For i=1 To n

        t=Int(Rnd * 100+1)

        Do While f(t)=True

            t=Int(Rnd * 100+1)

        Loop

        {#blank#}1{#/blank#}

    Next i

    j=0

    For i=1 To 100        '实现排序并输出

        If f(i)=True Then

            {#blank#}2{#/blank#}

            a(j)=i

            List1.AddItem Str(i)

        End If

    Next i

End Sub

Private Sub Command2_Click()

'命令按钮“查找”的单击事件

    Dim key As Integer

    key=Val(Text2. Text)

    If key <=a(1) Then Label3. Caption=Str(a(1)): Exit Sub

    If key >=a(n) Then Label3. Caption=Str(a( n)): Exit Sub

    L=1: R=n

    Do While L<=R                '找到与 key 较为接近的两个数a(R)和a(L)

        m=(L+R)\2

        If key<=a(m)Then

            R=m-1

        Else

            L=m+1

        End If

    Loop

    If {#blank#}3{#/blank#}Then

    '在a(R)和 a(L)中选出更接近key的数

        Label3. Caption=Str(a(R))

    Else

        Label3. Caption=Str(a L))

    End If

End Sub

返回首页

试题篮