IPV4点分十进制:IP地址可转换为十进制数字形式。编写“模拟IP过滤器”程序,程序功能如下:程序运行时,在列表框List1中显示能通过过滤的IP区间(IP区间按起始端点升序排序),在文本框Text1中输入需要判断的IP地址,单击“验证”按钮Cmd1,若IP区间有重叠区间则作合并处理,并显示在列表框List2中,然后对输入的IP地址进行判断,判断结果显示在标签Labe14中。程序运行界面如图所示:
(1)
Cmd1对象属于类(单选,填字母:A . Form/B . Label/C . TextBox/D . CommandButton)。
(2)
实现上述功能的VB程序如下,请在划线处填入合适的代码。
Dim a(1 To 100) As Integer
Dim n As integer
Private Sub Form_Load()
‘本过程从数据库中读取n个IP地址区间数据,并依次存入数组a(1)、…、a(2*n)中对能通过过滤的IP区间按区间起始端点升序排序
代码略
End Sub
Private Sub Cmd1_Click()
Dim ip As Integer,L As Integer, R As Integer
Dim i As Integer,pos As Integer, f As Boolean
ip=Val (Text1. Text)
L=a(1):R=a(2):i=3:pos=1 ‘合并重叠区间
Do While i<=2*n-1
If Then
If a(i+1)>R Then R=a(i+1)
Else
a(2*pos-1)=L
a(2*pos)=R
pos=pos+1
L = a(i)
R=a(i+1)
End If
Loop
a(2*pos-1)=L:a(2*pos)=R ‘依次输出排序合并后的区间数据,代码略
If Then ‘判断请求的IP地址
Labe14. Caption= “IP需过滤”
Else
i=1:f=False
Do While i<=pos And Not f
If Then
i =i+1
else
Labe14. Caption=“IP不需过滤”
f=True
End If
Loop
If f=False Then Labe14. Caption=“IP需过滤"
End if
End sub
(3)
程序中加框处代码有错,请改正。
答案: 【1】D
【1】a(i)<=R【2】i=i+2【3】Not(ip>=a(2*i-1) And ip<=a(2*i))或a(2*i-1)>ipOra(2*i)<ip
ip<a(1) Or ip>a(2*pos)