题库 高中信息

题干

数据的有损压缩:对多媒体数据进行有损压缩时,以少量数据丢失作为代价的,比如对某8 bit量化缩为6 bit量化,其算法可简单表示为:逐一删除各个字节的后2 bit,将删除后的6 bit数据首尾相连,然后重新按照8 bit一组构建字节,以十六进制显示。
例如,压缩前的原始数据为:
11111100  010111010  10110000可表示为十六进制:FC  5A  B0
删除每字节的后2 bit:
111111  00  010110  10  101100  00
首尾相连构建新的数据:
11  11110101  10101100表示为十六进制:…F5  AC
自此,原数据进行了有损压缩。程序运行界面如下所示,

实现上述算法的VB程序如下,但程序中加框处有误,请改正。
Dim a(1 To 100) As Integer
Const code="0123456789ABCDEF"
Const n=100
Private Sub Form_Load()'以随机数模拟读取原始数据
s=""
Randomize
For i=1 To n

a(i)=Int (Rnd()*16)

Text1.Text=Text1.Text+  '①

Next i
End sub
Private Sub Command1_Click()
For i=1 To n

t=t+HtoB(a(i))

Next i
For j=l To n* 4 Step 8 '每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,1,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*+t3*4+t4*8
BtoH= Mid(code,s+1,1)
End Function
(1)①处加框代码应改为________________________________________。
(2)②处加框代码应改为________________________________________。
上一题 下一题 0.99难度 None 更新时间:2020-03-30 10:09:23

答案(点此获取答案解析)

同类题2

   (加试题)创建VB程序,统计英语短文中字母出现的次数,并输出出现次数最多的字母和未出现的字母。要求字母不区分大小写,均表示为大写字母。程序运程界面如图所示。


算法如下:

(1)获取输入的英语短文,存入变量s

(2)统计字母出现次数

    依次取出s中的每个字符

    如果是大写字母,计算其在字母表中的位置n,并计数

    如果是小写字母,计算其在字母表中的位置n,并计数

(用数组a存放26个字母出现的次数,a(1)存放“A”出现的次数,a(2)存储“B”出现的次数,……,a(26)存储“Z”出现的次数。)

  (3)找出最大出现次数   

  (4)找出出现次数最多和未出现过的字母并输出   

VB程序如下,在其中①②③划线处填定相应代码,完善程序。
Private Sub Command1_Click()
Dim i As Integer, n As Integer, max As Integer
Dim a(1 To 26) As Integer '数组a存放26个字母出现的次数。
Dim s As String, c As String '变量s存放输入的短文
Dim s1 As String, s2 As String   '变量s1、s2分别存放出现次数最高和未出现的字母组成的字符串
s = Text1.Text
'统计字母出现次数
For i = 1 To Len(s)  
c = Mid(s, i, 1)
If c >= "A" And c <= "Z" Then
n = Asc(c) - Asc("A") + 1
a(n) =1____________
ElseIf c >= "a" And c <= "z" Then
n = Asc(c) - 32 - Asc("A") + 1
a(n) = a(n) + 1
End If
Next i
'找出最大出现次数
max = a(1)   
For i = 1 To 26
If2____________ Then
max = a(i)
End If
Next i
'找出出现次数最多和未出现过的字母
For i = 1 To 26
If 3__________ Then
s1 = s1 + " " + Chr(Asc("A") + i - 1)
ElseIf a(i) = 0 Then
s2 = s2 + " " + Chr(Asc("A") + i - 1)
End If
Next i
Label2.Caption = "出现次数最多的字母是:" & s1 & "  出现次数为:" & Str(max)
Label3.Caption = "未出现的字母是:" & s2
End Sub

同类题3

某校学生会选举需要从学校数据库中随机抽取若干名学生作为监票人。该数据库文件名为school.mdb,其中数据表student存储有关学生学号(xuehao)、姓名(xingming)相关信息,括号内的内容为对应字段名。该程序编辑界面如图所示,相关对象名可参考标识图。

当主持人点击按钮“生成抽号”后,下方的标签会显示可抽取的学号姓名,一定时间后显示被抽取作为监票人的学号姓名。
'xxxss:学校学生数,kcq:可抽取
'xhxm:学号姓名,kcq:可抽取
Dim xxxss As Integer
Dim xhxm(3000) As String
Dim kcq(3000) As Boolean
'cq_Click:启用两个定时器
Private Sub cq_Click()
cqxhxm.Enabled = True
xskcqxhxm.Enabled = True
End Sub
Private Sub cz_Click()  '初始化数组kcq,使每个元素数据都处于可显示状态
For i =" 0" To xxxss - 1
kcq(i) = True '①
Next i
End Sub
Private Sub xskcqxhxm_Timer() '若数组kcq第x个元素处于可抽取状态,则显示数组xhxm第x个元素
x =" Int(Rnd" * xxxss)
If kcq(x) Then xhxmbq.text = kcq(x)   '②
End Sub
Private Sub Form_Load() '从数据库中提取需要的学号姓名相关数据并初始化数组kcq
Randomize
xxxss = 0
Dim conn As New ADODB.Connection,rs As New ADODB.Recordset
Dim str_conn as String,str_sql As String
str_conn = "driver="Microsoft" access driver(*.mdb);DBQ="&app.path&"\school.mdb";
conn.open str_conn
str_sql = "select * from students"
rs.open str_sql
Do While Not rs.eof
xxxss =" xxxss" + 1
xhxm(xxxss) = rs.fields("xuehao")&rs.fields("xingming")
rs.movenext
Loop
For i =" 0" To xxxss - 1
kcq(i) = True
Next i
End Sub
Private Sub cqxhxm_Timer()  '决定抽取的学号姓名作为监票人
xskcqxhxm.Enabled = False
For i =" 0" To xxxss - 1
If xhxmbq.Caption =" xhxm(i)" Then kcq(i) = False
Next i
cqxhxm.Enabled = False
End Sub