试题

试题 试卷

logo

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

浙江省普通高校招生信息技术选考模拟卷(三)

【加试题】某排序算法思想如下:若有11个桶,编号从0~10,随机产生多个整数,每产生一个整数时,就在以该整数位编号的桶中放一面小旗子,最后只要按顺序数每个桶中有几面小旗子,就能得到这几个整数的有序排列。例如2号桶中有1个小旗子,表示2出现了一次;3号桶中有1个小旗子,表示3出现了一次;5号桶中有2个小旗子,表示5出现了两次;8号桶中有1个小旗子,表示8出现了一次,按桶的编号顺序读出旗子数量,没有旗子的桶略过,得到有序整数为“2,3,5,5,8”。

为此,小李编写了一个VB程序,功能如下:运行程序,窗体加载时随机产生6个[0,9]的随机整数,并在列表框List1中依次显示排序前数据,单击“排序”按钮Command1,在列表框List2 中显示经过上述排序算法后的数据。运行结果如图所示。实现上述功能的VB代码如下,但加框处代码有错,请改正。

Dim a(10) As Integer    '数组a表示桶的编号,如a(0)表示第0号桶

Private Sub Command1_Click()

    Dim i As Integer, j As Integer

    For i = 0 To 10

        For j = 1 To       ①

List2.AddItem  CStr(i)

        Next j

    Next i

End Sub

Private Sub Form_Load()

    Dim i As Integer

    Randomize

    For i = 0 To 10             '将数组初始化为0

        a(i) = 0

    Next i

    For i = 1 To 6            '产生6个[0,9]的随机数

        t = Int(Rnd * 10)  

        a(t) =   '第t桶中小旗子数量加1    ②

        List1.AddItem  CStr(t)

    Next i

End Sub

举一反三
当计算机程序中无法用普通数据类型表示位数较多的乘数和计算结果时,就需要采用高精度乘法。如,当两个各有20位数字的整数相乘时,就无法用长整型(Long)数据类型来表示。高精度乘法运算就是运用数组,用程序模拟列竖式计算的过程。两个正整数进行高精度乘法计算的一般算法如下:

⑴将第一个整数各位上的数字按照从低位到高位的顺序依次存入数组a(1)、a(2)、…、a(La)中,将另一个整数各位上的数字按照从低位到高位的顺序依次存入数组b(1)、b(2)、…、b(Lb)中。其中,La表示第一个整数的位数,Lb表示第二个整数的位数;

⑵按照从低位到高位的顺序,将两个整数各位数值进行逐位乘法计算(第一轮先让b(1)依次乘a(1)、a(2)…a(La),第二轮再让b(2)依次乘a(1)、a(2)、…、a(La),依次进行),每位的乘法结果也按照低位到高位的顺序依次存入数组ans(1)、ans(2)、ans(3)中;

⑶对数组ans中的计算结果进行从低位到高位的进位处理;

⑷统计数组ans中实际计算结果的有效数值位数,并将位数值存入变量length;

⑸按照高位到低位的顺序输出数组ans中的计算结果。

小明按照上述方法设计了一个两数进行高精度乘法计算的VB程序,功能如下:在文本框Text1和Text2中依次输入两个整数,单击“计算”按钮Command1,程序进行高精度乘法计算,并在标签Label4中输出计算结果。

实现上述功能的VB程序如下:

返回首页

试题篮