题库 高中信息

题干

小王设计了一个Visual Basic小程序,该程序的功能是将一个二进制数转化为十六进制数。程序运行时,在文本框Text1输入二进制数(由0、1构成的数串),单击“转换”按钮Command1后,在文本框Text2中显示转换结果。程序运行界面如下图所示。

实现上述功能的程序代码如下所示,请在划线处填上合适的代码:
Private Sub Command1_Click()
Dim x As String, y As String,
Dim i As Integer, s As Integer, n As Integer, c As String
Dim q As String, h As String, ans As String
n = Len(Text1.Text)
y = Text1.Text
If n Mod 4 <> 0 Then ________________
For i = 1 To s
y = "0" + y
Next i
For i = 1 To n Step 4
________________________
If h = "0000" Then q = "0"
If h = "0001" Then q = "1"
If h = "0010" Then q = "2"
If h = "0011" Then q = "3"
If h = "0100" Then q = "4"
If h = "0101" Then q = "5"
If h = "0110" Then q = "6"
If h = "0111" Then q = "7"
If h = "1000" Then q = "8"
If h = "1001" Then q = "9"
If h = "1010" Then q = "A"
If h = "1011" Then q = "B"
If h = "1100" Then q = "C"
If h = "1101" Then q = "D"
If h = "1110" Then q = "E"
If h = "1111" Then ___________________ 
ans =_____________________  
Next i
Text2.Text =ans
End Sub
上一题 下一题 0.99难度 填空题 更新时间:2019-11-20 12:46:38

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

同类题3

IPv6 是英文“Internet Protocol Version 6”(互联网协议第 6 版)的缩写。IPv6 地址总共有 128 位,为了便于人工阅读和输入,IPv6 地址使用 16 进制数表示,划分成 8 个块,每块 4 位,块与块之间用“:”隔开,如:ABCD:EF01:0000:0000:ABCD:EF01:0000:6789
同时,对于多个地址块为 0 的情况时,可以使用”::”号,进行化简。
化简原则:
①全 0 块“0000”,可以化简为“0”
②连续多个全 0 块,可以化简为“::”
③一个 IPv6 地址中只能出现一个“::”,出现多个全 0 块时,“::”要化简最长的一段,没有最长的就将最左侧的一段化简为“::”
④“::”可以出现在地址开头或结尾具体示例如下:
程序界面如图所示:

实现上述功能的 VB 程序如下,请回答下列问题:
(1)请在划线处填入合适的代码。
Private Sub Text1_Change()
Dim a(1 To 8) As String, ipstr As String, ips As String
Dim lenth As Integer, max_lenth As Integer, start As Integer ipstr = Text1.Text
For i = 1 To 8
a(i) =_________'将 IPv6 分段存入数组 a Next i
'对数组进行处理,如果字母或非零数字开头,则不用处理;如果全是数字0,则压缩成    0,如果前导为 0,则去掉,处理完毕存回数组。
'///------ 处理过程略----- /////
'如果只有一串0,则将该串“0”用“::”代替,如果不止一串0,则将最长的一串“0”简化为“::”,如果有连续  0,则将左边的一串零简化,右侧保留。
max_lenth = 0
For i = 1 To 7
If_________Then lenth = lenth + 1
Else
If   lenth > max_lenth    Then
max_lenth = lenth: start = i - lenth: lenth = 0 End If
End If Next i
If lenth > max_lenth Then   max_lenth = lenth: start = i - lenth  '根据连续 0 串的位置确定输出简化后的结果
ips = ""
If    start = 1 And max_lenth    =   7 Then '开头是 0 且全 0 ips = "::"
ElseIf   start = 1 Then    '开头是 0 但不全为 0 ips = "::"
For   i = start + max_lenth + 1   To   7 ips = ips + a(i) + ":"
Next i
ips = ips + a(i)
ElseIf   start > 1 And    start + max_lenth = 8   Then   '开头不是 0 但 0 到最后 For i = 1 To start - 1
ips = ips + a(i) + ":"
Next i
ips = ips + ":"
ElseIf start > 1 Then '开头不是 0 且 0 不到最后 For i = 1 To start - 1
ips = ips + a(i) + ":"
Next i
ips = ips + ":"
For i =_________To 7  ips = ips + a(i) + ":"
Next i
ips = ips + a(i)
Else '无连续 0 出现
For i = 1 To 7
ips = ips + a(i) + ":"
Next i
ips = ips + a(i) End If
Text2.Text = ips End Sub
(2)IPv6  地址:3BCD:0000:0000:ABCD:0000:0000:0000:6789,则化简后为_______。