题解 | #识别有效的IP地址和掩码并进行分类统计#
识别有效的IP地址和掩码并进行分类统计
https://www.nowcoder.com/practice/de538edd6f7e4bc3a5689723a7435682
try
flag = zeros(1, 7);
while 1
line = input('', 's');
lines = strsplit(line, '~');
yms = strsplit(cell2mat(lines(2)), '.');
ipflag = 0;
binyms = [];
for i = 1:length(yms)
bintemp = num2str(dec2bin(str2double(cell2mat(yms(i))), 8));
binyms = strcat(binyms, bintemp);
end
if (~issorted(binyms, 'descend'))||(all(binyms=='1')||all(binyms=='0'))
ipflag = 1;
end
ips = strsplit(cell2mat(lines(1)), '.');
ipsn = zeros(1, 4);
ipsn1 = str2double(cell2mat(ips(1)));
ipsn(1) = ipsn1;
if isempty(ipsn1)
flag(6) = flag(6)+1;
continue;
end
if length(ips)~=4
flag(6) = flag(6)+1;
elseif ipflag == 1&&~(ipsn1==0||ipsn1==127)
flag(6) = flag(6)+1;
elseif ipflag == 0
for i = 2:4
temp = str2double(cell2mat(ips(i)));
if isempty(temp)
flag(6) = flag(6)+1;
continue
end
ipsn(i) = temp;
end
if max(ipsn)>255||min(ipsn)<0
flag(6) = flag(6)+1;
else
if ipsn1>=1&&ipsn1<=126
flag(1) = flag(1)+1;
elseif ipsn1>=128&&ipsn1<=191
flag(2) = flag(2)+1;
elseif ipsn1>=192&&ipsn1<=223
flag(3) = flag(3)+1;
elseif ipsn1>=224&&ipsn1<=239
flag(4) = flag(4)+1;
elseif ipsn1>=240&&ipsn1<=255
flag(5) = flag(5)+1;
end
if ipsn1==10||(ipsn1==172&&ipsn(2)>=16&&ipsn(2)<=31)||(ipsn1==192&&ipsn(2)==168)
flag(7) = flag(7)+1;
end
end
end
end
catch
fprintf('%d %d %d %d %d %d %d', flag(1), flag(2), flag(3), flag(4), flag(5), flag(6), flag(7));
end
小天才公司福利 1220人发布
查看8道真题和解析