#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std; int countA=0;
int countB=0;
int countC=0;
int countD=0;
int countE=0;
int countError=0;
int countPrivate=0; void get(char *str)
{
int num = strlen(str); int i=0; unsigned int arr[8] = {0};
int counter = 0; int val = 0;
for(i=0; i<=num; i++)
{
if(str[i]>='0' && str[i]<='9')
{
val = val*10 + str[i] - '0';
}
else if(str[i]=='.' || str[i]=='~' || str[i]=='\0')
{
if(str[i-1]<'0' || str[i-1]>'9')
{
countError++;
return;
}
if(val>255)
{
countError++;
return;
}
if(counter>=8)
{
countError++;
return;
}
arr[counter++] = val;
val = 0;
}
else
{
return;
}
} unsigned int mask = (arr[4]<<24)+(arr[5]<<16)+(arr[6]<<8)+arr[7]; int tmpi;
for(tmpi=31; tmpi>=0 && (mask>>tmpi)%2==1; tmpi--);
if(mask>>(tmpi+1)<<(tmpi+1) != mask)
{
countError++;
return;
} if(arr[0]>=1 && arr[0]<=126)
{
countA++;
} if(arr[0]>=128 && arr[0]<=191)
{
countB++;
} if(arr[0]>=192 && arr[0]<=223)
{
countC++;
} if(arr[0]>=224 && arr[0]<=239)
{
countD++;
}
if(arr[0]>=240 && arr[0]<=255)
{
countE++;
} if(arr[0]==10)
{
countPrivate++;
} if(arr[0]==172 && (arr[1]>=16 && arr[1]<=31))
{
countPrivate++;
}
if(arr[0]==192 && arr[1]==168)
{
countPrivate++;
}
} int main()
{ char str[100]; while(cin>>str)
{
get(str);
} cout<<countA<<' '<<countB<<' '<<countC<<' '<<countD<<' '<<countE<<' '<<countError<<' '<<countPrivate; return 0;
}

  

识别有效的IP地址和掩码并进行分类统的更多相关文章

  1. 26:IPMaskCheck识别有效的ip地址和掩码并分类统计

    题目描述 请解析IP地址和对应的掩码,进行分类识别.要求按照A/B/C/D/E类地址归类,不合法的地址和掩码单独归类. 所有的IP地址划分为 A,B,C,D,E五类 A类地址1.0.0.0~126.2 ...

  2. 识别有效的IP地址和掩码并进行分类统计

    该题我的想法是把每一个ip看出一个整数,将读取得到的数据一一与给定的ip范围比较即可.另外本题应该注意的地方是scanf读取俩字符串的方法. 代码如下: #include<stdio.h> ...

  3. 算法 识别有效ip地址和掩码并做统计

    题目描述 请解析IP地址和对应的掩码,进行分类识别.要求按照A/B/C/D/E类地址归类,不合法的地址和掩码单独归类. 所有的IP地址划分为 A,B,C,D,E五类 A类地址1.0.0.0~126.2 ...

  4. Python 输入IP地址及掩码告诉你该网段包含的全部地址(IPy模块练习)

    IPy模块原本使用时需要输入正确的网络位和掩码,我利用处理报错的机制实现了输入任意IP地址和掩码均可正确输出结果的小程序. #!/usr/bin/env python # -*- coding: ut ...

  5. 设置ip地址、掩码、网关、DNS

    @echo offcolor f8mode con cols=40 lines=8echo.echo.echo      设置IP为:echo.set /p ip=              192. ...

  6. 根据Ip地址与掩码 得出 子网地址与广播地址

    由于给予条件优先,没有直接给出子网地址与广播地址.但是又需要这两个参数,需要我们使用ip 地址与 子网掩码得出子网地址与广播地址.思路如下:       1. 子网地址, ip地址与 子网掩码分别换算 ...

  7. IP地址分类与识别错误

    //描述:  请解析IP地址和对应的掩码,进行分类识别.要求按照A/B/C/D/E类地址归类,不合法的地址和掩码单独归类. //所有的IP地址划分为 A,B,C,D,E五类 //A类地址1.0.0.0 ...

  8. MAC地址与IP地址的区别

    介绍一下MAC地址的知识,MAC地址和IP地址的区别以及MAC地址在实际应用中所涉及到的安全问题. 一.基础知识 如今的网络是分层来实现的,就像是搭积木一样,先设计某个特定功能的模块,然后把模块拼起来 ...

  9. IP地址的分类与寻址

    IP地址:有一种标识符,被TCP/IP协议簇的IP层用来标识 连接到因特网的设备.IP协议的第4版IPv4地址是32位地址,是连接地址,定义了每一个连接到因特网上的设备(可以认为是主机的别名),而不是 ...

随机推荐

  1. Diablo2 1.13版&PlugY10.00 男巫存档

    下载地址: http://files.cnblogs.com/files/xiandedanteng/20160805D2113NanwuL83Backup.rar 解压后文件放到Diablo2游戏的 ...

  2. NSMutableAttributedString 富文本的使用

    //富文本的使用 UILabel *testLabel = [[UILabel alloc]initWithFrame:CGRectMake(, , , )]; testLabel.backgroun ...

  3. discuz 二次开发

    discuz 框架也算是比较流行的社区论坛框架,discuz 的基础架构采用世界上最流行的 web 编程组合 PHP + MySQL 实现,是一个经过完善设计,适用于各种服务器环境的高效论坛系统解决方 ...

  4. 树的Prufer 编码和最小生成树计数

      Prufer数列 Prufer数列是无根树的一种数列.在组合数学中,Prufer数列由有一个对于顶点标过号的树转化来的数列,点数为n的树转化来的Prufer数列长度为n-2.它可以通过简单的迭代方 ...

  5. ZoomBar 设计

    package com.example.canvasdemo; import android.content.Context; import android.graphics.Canvas; impo ...

  6. Bootstrap 响应式设计

    本教程讲解如何在网页布局中应用响应式设计.在课程中,您将学到响应式 Web 设计.随着移动设备的普及,如何让用户通过移动设备浏览您的网站获得良好的视觉效果,已经是一个不可避免的问题了.响应式 Web ...

  7. FIFO深度

    async fifo的full和empty的判断: 1)binary进制,MSB相同时,LSB也相同,empty: MSB不同时,LSB相同,full 2)gray code,MSB相同时,LSB也相 ...

  8. Main.C时钟设定

    void Main(void) 时钟设定:400M 100M  50M    得到  1:4:8  进而需要得到 hdivn=2 : pdivn=1: i = 2 ;    //用于选择CUP核的频率 ...

  9. win8win10以管理员身份运行cmd方法

    win8win10以管理员身份运行cmd方法 Win7/8下提示OpenSCManager failed 拒绝访问Maven nexus 安装nexus : wrapper | OpenSCManag ...

  10. mysql查询优化器的提示(hit)

    如果对优化器选择的执行计划不满意,可以使用优化器提供的几个提示来控制最终的执行计划,关于每个提示的具体用法,建议直接阅读官方手册,一些提示和版本有直接关系,可以使用的一些提示如下: high_prio ...