识别有效的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位地址,是连接地址,定义了每一个连接到因特网上的设备(可以认为是主机的别名),而不是 ...
随机推荐
- rsync 通过 ssh 上传文件
rsync -avzP /www/ -e ssh root@192.168.1.200:/www/ 批处理上传: #!/bin/bash for (( ; ; )) do rsync -avzP /w ...
- 通过java反射,封装bean
上周有一个封装javabean的流程,成员变量有好多,一路写if(!=null){setXXX} 真的好麻烦,有时候一不小心还会漏掉,很是麻烦,就想到用反射的方法自动进行拼装bean. bean pa ...
- css内容样式属性
设置元素的最大高度.最小高度.最大宽度.最小宽度,用max-height.min-height.max-width.min-width. visibility:设置元素是否可见.visible和hid ...
- javascript运行模式:并发模型 与Event Loop
看了阮一峰老师的JavaScript 运行机制详解:再谈Event Loop和[朴灵评注]的文章,查阅网上相关资料,把自己对javascript运行模式和EVENT loop的理解整理下,不一定对,日 ...
- Linux内核分析——汇编代码执行及堆栈变化
张潇月<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.实验步骤 首先借助实验楼这个平台进入Linux ...
- 初识Promise
Promise对象 曾经用seajs开发后台管理的时候,矫情的PHPER非要JS内联到HTML文件中,方便他调用内容,还指定了jQueryFileUpload作为上传插件. 当时看到jQueryFil ...
- GridView 使用方法总结
http://www.cnblogs.com/sufei/archive/2010/03/27/1698590.html 地址
- 【java基础学习二】 数组相互转换,转成用逗号隔开的字符串等
/** * int[],Integer[],List,List<Integer>,HashSet<Integer>相互转换,转成用逗号隔开的字符串 */ public stat ...
- C# 异常处理 <-> 连接远程数据库遇到的问题
PS : 移植类库需要重新生成解决方案:(要不然不能将类库添加进项目)
- python3.5-day5_迭代器_生成器_装饰器_模块
笔者QQ 360212316 迭代器&生成器 生成器: 一个函数调用返回一个迭代器,那这个函数叫做生成器,如果函数中包含yield语法,那么这个函数就会变成生成器 生成器的特点: 1.生成器必 ...