题型:综合题 题类:常考题 难易度:普通
浙江省浙南名校联盟2020届高三上学期信息技术第一次(10月)联考试卷
同时,对于多个地址块为 0 的情况时,可以使用“::”号,进行化简。化简原则:
①全 0 块“0000”,可以化简为“0”
②连续多个全0块,可以化简为“::”
③一个IPv6地址中只能出现一个“::”,出现多个全 0块时,“::”要化简最长的一段,没有最长的就将最左侧的一段化简为“::”
④“::”可以出现在地址开头或结尾具体示例如下:
化简前 |
化简后 |
ABCD:0000:2345:0000:ABCD:0000:2345:0000 |
ABCD:0:2345:0:ABCD:0:2345:0 |
FBCD:EF01:0000:0000:0000:0000:0000:6789 |
FBCD:EF01::6789 |
BBCD:0000:0000:0000:ABCD:0000:0000:6789 |
BBCD::ABCD:0:0:6789 |
0000:0000:0000:0000:0000:0000:0000:0001 |
::1 |
2001:0000:0000:0000:0000:0000:0000:0000 |
2001:: |
程序界面如图所示:
实现上述功能的VB程序如下,请回答下列问题:
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,则将左边的一串零简化,右侧保留。
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
① ② ③
①将该字符的ASCII码值转化为8位二进制数;
②将后4位二进制数进行按位取反(1变0,0变1);
③将操作②生成的4位二进制数均左移1位(原第1位变为新的第4位);
④原高4位二进制数连接到新的后4位二进制数成为最终加密后字符的内码。
例如:字符“a”经过上述加密运算,可得到字符“m”。
ASCII码值 |
转二进制 |
后四位取反 |
后四位左移 |
拼合 |
转十进制 |
转字符 |
97D |
01100001B |
1110 |
1101 |
01101101B |
109D |
“m” |
程序运行界面如图所示,请改正加框处有误的代码:
Private Sub Command1_Click()
Dim s As String:Dim sl As String:Dim jg As String
Dim n As Integer:Dim x As Integer:Dim i As Integer:Dim j As Integer
Dim a(15)As String
a(0)=“0000”:a(1)=“0001”:a(2)=“0010”:a(3)=“0011”
a(4)=“0100”:a(5)=“0101”:a(6)=“0110”:a(7)=“0111¨
a(8)=“1000”:a(9)=“1001”:a(10)=“1010”:a(11)=“1011¨
a(12)=“1100”:a(13)=“1101”:a(14)“1110”:a(15)=“1111”
jg=“ ”
s=Text1.Text
For i=1 To Len(s)
n=Asc(Mid(s,i,1))
low=n Mod 16
low=15-low ‘执行步骤②
s1=Mid(a(low),2,3)&Mid(a(low),1,1) ‘执行步骤③
For i=l To 4
x=x+Val(Mid(s1,j,1))* ‘⑴{#blank#}1{#/blank#}
Next j
x= *16+x ‘⑵{#blank#}2{#/blank#}
jg=jg&Chr(x)
Next i
Text2.Text=jg
End Sub
试题篮