题目

IPv6是英文“Internet Protocol Version 6"(互联网协议第6版)的缩写。IPv6的地址长度为128位,采用十六进制表示。为了便于人工阅读和输入,IPv6地址可划分成8个块,每块4位,块与块之间用“:”隔开,如:ABCD:EF01:0000:0000:ABCD:EF01:0000:67890。同时,对于多个地址块为0的情况时,可以使用”::”号,进行化简。化简原则如下: ①全0块“0000”,可以化简为“0” ②连续多个全0块,可以化简为“::” ③一个IPv6地址中只能出现一个“::”,出现多个全0块时,“::”要化简最长的一段,没有最长的就将最左侧的一段化简为“::” ④“::”可以出现在地址开头或结尾 具体示例如下: 程序界面如图所示: 实现上述功能的VB程序如下,请回答下列问题: (1) IPv6地fit::3BCD:0000:0000:ABCD:0000:0000:0000:6789,则化简后为。 (2) 请在划线处填入合适的代码,并且加框处代码有错,请改正。 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       ①      ‘将IPv6分段存储 Next i '对数组进行处理,如果字母或非零数字开头,则不用处理;如果全是数字,则压缩成0, 如果前导为0,则去掉,处理完毕存回数组。///-----处理过程略-----///// '如果只有一串,则将该串"0"用“::”代替,如果不止一串,则将最长的一串"0"简化为“::”,如果有连续0,则将左边的一串零简化,右侧保留。 max_lenth=0 For i=1 To 7    If a(i)<> "0" 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串的位置确定输出简化后的结果 ① ② ③  答案: 【1】3BCD:0:0:ABCD: :6789 【1】a(i) = Mid(ipstr, (i-1)*5+1,4【2】a(i) = "0”And a(i) = a(i+ 1)【3】start>1 and start + max_ lenth = 8
信息技术 试题推荐
最近更新