识别有效的IP地址和掩码并进行分类统计
该题我的想法是把每一个ip看出一个整数,将读取得到的数据一一与给定的ip范围比较即可。另外本题应该注意的地方是scanf读取俩字符串的方法。
代码如下:
#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std; unsigned long long range[][] = {
{,},
{,},
{,}, {,},
{,},
{,},
{,},
{,},
}; int explain(char* ip){
int expect = ;
int cnt = ;
for(int i = ; i < strlen(ip) ; i ++){ if(ip[i] >= '' && ip[i] <= ''){
expect = ;
}
else{
if(expect == ) return -;
expect = ;//下一个字符必须是数字
cnt ++;
}
}
if(cnt != ) return -;// 必须有三个.符号
return ;
} int main(){
char ip[] , code[];
int a = , b = , c = , d = , e = ,eip = , sip = ;
int cnt = ;
while(scanf("%[^~]~%s",ip,code) != EOF){
int cds = explain(code);
int flag = ;
if(cds > ){
int aa[];
sscanf(code , "%d.%d.%d.%d" , &aa[],&aa[],&aa[],&aa[]);
if(aa[] > || aa[] > || aa[] > || aa[] > || (aa[] == && aa[] == && aa[] == &&aa[]== )){
//qudiao 255.255.255.255 以及在某个位上大于255的不合法的mask
eip ++;
flag = ;
}
int exp = ;
for(int i = ; !flag && i < ; i ++){
if(exp == && aa[i] || aa[i] > ){
eip ++;
flag = ;
break;
}
int a1 = aa[i];
if(a1 < ){
if(a1 == || a1 == || a1 == || a1 == || a1 == || a1 == || a1 == ){
exp = ;
}else if(a1 == && i > ){
exp = ;//去除0.0.0.0
}
else{
eip ++;
flag = ;
break;
}
}
}
}else{
flag = ;
eip ++;
}//end
if(flag == ){
int ips = explain(ip);
if(ips > ){ int a1 , b1 ,c1 ,d1;
sscanf(ip , "%d.%d.%d.%d" , &a1,&b1,&c1,&d1);
if(a1> || b1 > || c1 > || d1 > ){
eip++;
flag = ;
}
if(flag == ){
long long ans = a1*1e9 + b1*1e6 + c1*1e3 + d1;
//cout<<ans<<endl;
int i = ;
for( ; i < ; i ++){
if(ans <= range[i][] && ans >= range[i][]){
// cout<<i<<endl;
if(i == ) a ++;
if(i == ) b ++;
if(i == ) c ++;
if(i == ) d ++;
if(i == ) e ++;
if(i == || i == || i == ) sip ++;
//break;
}
}
}
}else{
eip ++;
}
}
memset(ip,'\0',sizeof ip);
memset(code,'\0',sizeof(code));
getchar();
}
printf("%d %d %d %d %d %d %d\n",a,b,c,d,e,eip,sip);
return ;
}
识别有效的IP地址和掩码并进行分类统计的更多相关文章
- 26:IPMaskCheck识别有效的ip地址和掩码并分类统计
题目描述 请解析IP地址和对应的掩码,进行分类识别.要求按照A/B/C/D/E类地址归类,不合法的地址和掩码单独归类. 所有的IP地址划分为 A,B,C,D,E五类 A类地址1.0.0.0~126.2 ...
- 识别有效的IP地址和掩码并进行分类统
#include<iostream> #include<stdio.h> #include<string.h> using namespace std; int c ...
- 算法 识别有效ip地址和掩码并做统计
题目描述 请解析IP地址和对应的掩码,进行分类识别.要求按照A/B/C/D/E类地址归类,不合法的地址和掩码单独归类. 所有的IP地址划分为 A,B,C,D,E五类 A类地址1.0.0.0~126.2 ...
- Python 输入IP地址及掩码告诉你该网段包含的全部地址(IPy模块练习)
IPy模块原本使用时需要输入正确的网络位和掩码,我利用处理报错的机制实现了输入任意IP地址和掩码均可正确输出结果的小程序. #!/usr/bin/env python # -*- coding: ut ...
- 设置ip地址、掩码、网关、DNS
@echo offcolor f8mode con cols=40 lines=8echo.echo.echo 设置IP为:echo.set /p ip= 192. ...
- 根据Ip地址与掩码 得出 子网地址与广播地址
由于给予条件优先,没有直接给出子网地址与广播地址.但是又需要这两个参数,需要我们使用ip 地址与 子网掩码得出子网地址与广播地址.思路如下: 1. 子网地址, ip地址与 子网掩码分别换算 ...
- IP地址分类与识别错误
//描述: 请解析IP地址和对应的掩码,进行分类识别.要求按照A/B/C/D/E类地址归类,不合法的地址和掩码单独归类. //所有的IP地址划分为 A,B,C,D,E五类 //A类地址1.0.0.0 ...
- MAC地址与IP地址的区别
介绍一下MAC地址的知识,MAC地址和IP地址的区别以及MAC地址在实际应用中所涉及到的安全问题. 一.基础知识 如今的网络是分层来实现的,就像是搭积木一样,先设计某个特定功能的模块,然后把模块拼起来 ...
- IP地址的分类与寻址
IP地址:有一种标识符,被TCP/IP协议簇的IP层用来标识 连接到因特网的设备.IP协议的第4版IPv4地址是32位地址,是连接地址,定义了每一个连接到因特网上的设备(可以认为是主机的别名),而不是 ...
随机推荐
- 【多线程 5】线程池的类型以及submit()和execute()的区别
就跟题目说的一样,本篇博客,本宝宝主要介绍两个方面的内容,其一:线程池的类型及其应用场景:其二:submit和execute的区别.那么需要再次重申的是,对于概念性的东西,我一般都是从网上挑选截取,再 ...
- Drools规则
1.实现业务逻辑和业务规则的分离,实现业务规则的集中管理 2.可以动态的改变业务规则,从而快速响应需求变更 3.业务分析人员也可以参与编辑.维护系统的业务规则 fact:一个普通的JavaBean插入 ...
- Tesla P4 在深度学习上的性价比辗压目前所有量产的FPGA
7000的价格, 5.5T FP, 75W不到的功耗,性能接近M40,敢问目前有哪个量产的FPGA能做到?还不算开发和维护的难度...KU115光PCIE+DMA+DDR4 controller+AX ...
- rabbitMQ学习(二)
一端发送,多端消费 发送端: import java.io.IOException; import com.rabbitmq.client.ConnectionFactory; import com. ...
- js关于页面坐标api
网页可见区域宽: document.body.clientWidth;网页可见区域高: document.body.clientHeight;网页可见区域宽: document.body.offset ...
- 旋转机械中Pitch Change的经验
针对CFX (Compound File EXplorer)中rotor-stator interface 网格的处理,Pitch Change方法提供了四种交接算法(intersection alg ...
- win10无法使用内置管理员账户打开应用怎么办
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System \UIPI 右边有个默认的项.将它的值改成1
- linux 学习5 文本编辑器 vim
vim 没有菜单,只有命令 //root用户既可以用vi,也可以用vim, 无实质性区别,vim是vi的升级版//粘贴用shift+insert , 要在insert模式下粘贴,否则粘贴不全// ^ ...
- MdZ计算重调和特征值
>> [eigvH,eigv] = MdZ2grid3d(/,) eigvH = 6.8775e+003 eigv = 5.0224e+003 >> [eigvH,eigv] ...
- 微软要支持Objective-C了
今天的新闻,见http://www.solidot.org/story?sid=43899 更详细的见,http://arstechnica.com/information-technology/20 ...