试题

试题 试卷

logo

题型:综合题 题类:模拟题 难易度:困难

浙江省十校联盟2018年3月适应性考试信息技术试卷

【加试题】问题描述:有n个互不重复的数字,值的范围是[1,n],分别保存在数组元素a(1)到a(n)中,如果数字i保存在a(i),认为数字i在正确的位置上。若干个相互占用了位置的数字称为一组,一个在正确位置上的数字单独为一组,比如6个数字2,3,1,4,6,5分别保存在数组元素a(1)到a(6)中,则2、3、1为一组,4为一组,6、5为一组。该程序的功能为输出每组的情况。运行界面如下图:

(1)、数组元素a(1)到a(5)的值分别为2、5、3、1、4,这5个元素总共有组。
(2)、请在划线处填入合适的代码

  Const n = 10

  Dim a (1 To n)  As Integer    ‘保存原始数据

  Dim b(1 To n )  As Boolean ‘数组b用来标记相应的位置有没有找过

  Private Sub Command1 _ Click ()

    Dim i As Integer , sum As Integer ,  total As Integer

    sum = 0: total = 1  ‘total 表不第几组

    i = 1

    List 2.Addltem “第”& Str (total) & “组”

    Do While sum < n

        Do While Not b (i)

            List 2.Addltem a (i)

            b(i) = True

           

            sum = sum + 1

        Loop

        If sum < n Then

            total = total + 1

            List 2.Addltem “第” &  Str ( total ) &■“组”

            i = 1

            Do While b(i) ‘该循环用来查找下一组的开始位置

           

            Loop

        End If

    Loop

  End Sub

Private Sub Form _ Load ()

  Dim i As Integer

  Randomize

  For i = 1 To n ‘产生 n 个不一样的整数,范围为[ 1, n ]

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

    Do While

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

    Loop

  Next i

  For i = 1 To n

    List1.Addltem a (i)

    b (i) = False

  Next i

End Sub

Function f(x As Integer , y As Integer )  As Boolean

‘该函数的功能:判断x和数组a中前y个数有没有重复,有重复返回值True,否则False

End Function

举一反三
【加试题】RGB颜色模式是用8位二进制数表示红色、8位二进制数表示绿色、8位二进制数表示蓝色即使用24位二进制数表示一种颜色的模式。若将每位二进制数取反,即(0改为1、1改为0)就会变为另一种颜色,我们称这种方式为颜色反相。


小明编写了一个VB程序实现上述功能,在名称为o_c_txt的文本框中输入原始颜色如#000000,点击命令按钮fx_cmd后,在名称为f_c_lab的标签中输出反相后的颜色如#FFFFFF。运行效果如图所示。

 实现上述功能的算法如下:

 数组dzb_h的16个元素分别存放16进制数的16个基本数码。

 依次取出原始颜色代码中每一位对应的16进制数码,例如原始颜色代码为#123456,第1次取出1,第2次取出2……

 在数组dzb_h各元素中找到对应16进制数码的元素

 运用规律:0+F=1+E…=7+8取得反相色并累加,例如:数组dzb_h第1个元素值的反相色的值是数组dzb_h第16个元素值。

 输出得到的反相色。

 实现上述功能的VB程序代码段如下,请完善相关程序代码。

Private Sub fx_cmd_Click()

  Dim dzb_h(1 To 16) As String

  Dim o_c As String, f_c As String, i As Integer, xbxh As Integer, c As String

  dzb_h(1) = "0": dzb_h(2) = "1": dzb_h(3) = "2": dzb_h(4) = "3"

  dzb_h(5) = "4": dzb_h(6) = "5": dzb_h(7) = "6": dzb_h(8) = "7"

  dzb_h(9) = "8": dzb_h(10) = "9": dzb_h(11) = "A": dzb_h(12) = "B"

  dzb_h(13) = "C": dzb_h(14) = "D": dzb_h(15) = "E": dzb_h(16) = "F"

  o_c = o_c_txt.Text  '存储原始色

  i = 2

  f_c = "#"     '存储反相色

  Do While i <= Len(o_c)

    c = Mid(o_c, i, 1)

    If Asc(c) > 96 Then c = Chr(Asc(c) - 32) '小写字母变大写字母

    xbxh = 1

    Do While xbxh < 17

      If {#blank#}1{#/blank#} Then    '在数组中找到对应16进制数码的元素

        f_c = {#blank#}2{#/blank#}    '累加反相色对应的16进制代码

        Exit Do

      End If

      xbxh = xbxh + 1

    Loop

    i = i + 1

  Loop

  f_c_lab.Caption = f_c

End Sub

返回首页

试题篮