试题

试题 试卷

logo

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

信息技术基础

小王和小李在学习二进制数时发明了一种“二进制骰子”的游戏:游戏双方轮流掷骰子,每人按顺序掷4次,点数是奇数时代表0,偶数时代表1,四次骰子点数依次从低位到高位组成一个4位的二进制数,其十进制的值就是最后的成绩,成绩高的胜出,相等则平局。如图a所示,四次掷出的骰子点数依次是3-1-4-2,则代表二进制数1100,最后的成绩就是12。

图a

图b

程序运行界面如图b所示,请回答以下问题。

(1)、要想程序运行时自行清空文本框Text1中的内容,需要将语句“Text1.Text=″ ″”添加在过程(单选,填字母:A .Form_load()/B .Command1_Click()/C .Text1_Change())中。
(2)、实现上述程序的VB代码如下,请在划线处填入合适的代码:

Private Sub Command1_Click()

Dim a(1 To 4) As Integer, b(1 To 4) As Integer

'数组a存储骰子的点数,数组b存储对应的二进制数值

Dim s As Integer

Randomize

List1.Clear

c=0

For i=1 To 4

a=Int(Rnd*6)+1

Ifthen b=1 Else b=0

c=c+

List1.AddItem ″第″+Str(i)+″次:″+Str(a)+″点″

Next i

Text1.Text=Str(c)

End Sub

(3)、若小王掷的点数依次是4-5-6-2,小李掷的点数依次是6-4-3-2,结果是(选填:小王胜/小李胜/平局)。
举一反三
【加试题】数据的有损压缩:对多媒体数据进行有损压缩时,通常是以少量数据丢失作为代价的,比如对某8 bit量化的数据压缩为6bit量化,其算法可简单表示为:逐一删除各个字节的后2 bit,将删除除后的6 bit数据首尾相连,然后重新按照8bit一组构建字节,以十六进制显示。

例如,压缩前的原始数据为:

1111 1100 0101 1010 1011 0000  可表示为十六进制:FC 5A B0

  删除每字节的后2 bit:

1111 1100 0101 1010 1011 0000

  首尾相连构建新的数据:

11 1111 0101 1010 1100 表示为十六进制:... F5 AC

 自此,原数据进行了有损压缩。程序运行界面如下所示:

实现上述算法的VB程序如下,但程序中加框处有误,请改正。

Dim a(1 To 100) As Integer

Const code = "0123456789ABCDEF"

Const n = 100

Private Sub FormLoad()‘ 以随机数模拟读取原始数据

  s = ""

  Randomize

  For i = 1 To n

  a(i) = Int(Rnd * 16)

    Text1.Text = Text1.Text +  ①

  Next i

End Sub

Private Sub Command1Click()

For i = 1 To n

   t = t + HtoB(a(i))

Next i

For j = 1 To n * 4 Step 8'每8位一组,取前6个字符

   s = s + Mid(t, j, 6)

Next j

For i = 1 To 4 * (n - 1) Step 4'每4位一组转为十六进制显示

    Text2.Text = Text2.Text + BtoH(Mid(s, i, 4))

Next i

End Sub

Function HtoB(x As Integer) As String'十六进制转为二进制函数

 t = ""

 m = 0

Do While   ②

   r = x Mod 2

   m = m + 1

   t = Trim(r) + t'trim()用于删除前导空格

   x = x \ 2

 Loop

 HtoB = Mid("0000", 1, 4 - m) + t

End Function

Function BtoH(y As String) As String'二进制转为十六进制函数

 t1 = Val(Mid(y, 4, 1))

 t2 = Val(Mid(y, 3, 1))

 t3 = Val(Mid(y, 2, 1))

 t4 = Val(Mid(y, 1, 1))

 s = t1 + t2 * 2 + t3 * 4 + t4 * 8

 BtoH = Mid(code, s + 1, 1)

End Function
①  {#blank#}1{#/blank#}② {#blank#}2{#/blank#}

条形码是按照一定编码规则排列的图形标识符。如图所示,条形码下方数字左边12位代表信息,最右边一位是校验码。校验码产生方法如下:

①把条形码下方数字从右往左依次编序号为“1,2,3,4……”;

②从序号2开始把所有偶数序号位上的数相加求和,并乘以3;

③从序号3开始把所有奇数序号上的数相加求和;

④把第②和第③步结果相加求和;

⑤10减去第④步结果的个位数,得出校验码(如果差值为10,则校验码为0);

如条形码的数字为:977167121601X(X为校验码),则校验码主要产生步骤如下:

1)   (1+6+2+7+1+7)×3=72

2)   0+1+1+6+7+9=24

3)   72+24=96

4)   10-6=4

所以最后校验码X=4,此条形码数字为9771671216014。

小何为此编写了VB程序,用以验证条形码输入正确与否。程序运行时,从文本框Text1获取条形码数字部分,单击按钮Command1后,在标签Label1中输出结果。实现上述功能的VB代码如下,请补全代码。

Private Sub Command1_Click()

Dim i As Integer, b As String, Lb As Integer

Dim s1 As Integer, s2 As Integer, tmp As Integer

Dim c As String

Dim d(1 To 13) As Integer     '存储数据

Dim res As String             '存储结果

  b = Text1.Text              '输入条形码

  Lb = Len(b)

  s1 = 0 : s2 = 0

  flag = True

  res = "输入错误!"

  listt1.Clear

  If  Lb = 13 Then

    For i = 1 To 13

      c = Mid(b, Lb - i + 1, 1)

      If c >= "0" And c <= "9" Then

      {#blank#}1{#/blank#}          '输入转换

      Else

        flag = False : Exit For

      End If

    Next i

    If flag Then

      For i = 2 To Lb Step 2

        s1 =  s1 + d(i)                 '参数计算1

        s2 =  {#blank#}2{#/blank#}       '参数计算2    

Next i

tmp = s1 * 3 + s2

If  {#blank#}3{#/blank#} Then res = "输入正确!" 

    End If

  End If

  Label1.Caption = res

End Sub

返回首页

试题篮