识别有效的IP地址和掩码并进行分类统
#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地址和掩码并进行分类统的更多相关文章
- 26:IPMaskCheck识别有效的ip地址和掩码并分类统计
题目描述 请解析IP地址和对应的掩码,进行分类识别.要求按照A/B/C/D/E类地址归类,不合法的地址和掩码单独归类. 所有的IP地址划分为 A,B,C,D,E五类 A类地址1.0.0.0~126.2 ...
- 识别有效的IP地址和掩码并进行分类统计
该题我的想法是把每一个ip看出一个整数,将读取得到的数据一一与给定的ip范围比较即可.另外本题应该注意的地方是scanf读取俩字符串的方法. 代码如下: #include<stdio.h> ...
- 算法 识别有效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位地址,是连接地址,定义了每一个连接到因特网上的设备(可以认为是主机的别名),而不是 ...
随机推荐
- Diablo2 1.13版&PlugY10.00 男巫存档
下载地址: http://files.cnblogs.com/files/xiandedanteng/20160805D2113NanwuL83Backup.rar 解压后文件放到Diablo2游戏的 ...
- NSMutableAttributedString 富文本的使用
//富文本的使用 UILabel *testLabel = [[UILabel alloc]initWithFrame:CGRectMake(, , , )]; testLabel.backgroun ...
- discuz 二次开发
discuz 框架也算是比较流行的社区论坛框架,discuz 的基础架构采用世界上最流行的 web 编程组合 PHP + MySQL 实现,是一个经过完善设计,适用于各种服务器环境的高效论坛系统解决方 ...
- 树的Prufer 编码和最小生成树计数
Prufer数列 Prufer数列是无根树的一种数列.在组合数学中,Prufer数列由有一个对于顶点标过号的树转化来的数列,点数为n的树转化来的Prufer数列长度为n-2.它可以通过简单的迭代方 ...
- ZoomBar 设计
package com.example.canvasdemo; import android.content.Context; import android.graphics.Canvas; impo ...
- Bootstrap 响应式设计
本教程讲解如何在网页布局中应用响应式设计.在课程中,您将学到响应式 Web 设计.随着移动设备的普及,如何让用户通过移动设备浏览您的网站获得良好的视觉效果,已经是一个不可避免的问题了.响应式 Web ...
- FIFO深度
async fifo的full和empty的判断: 1)binary进制,MSB相同时,LSB也相同,empty: MSB不同时,LSB相同,full 2)gray code,MSB相同时,LSB也相 ...
- Main.C时钟设定
void Main(void) 时钟设定:400M 100M 50M 得到 1:4:8 进而需要得到 hdivn=2 : pdivn=1: i = 2 ; //用于选择CUP核的频率 ...
- win8win10以管理员身份运行cmd方法
win8win10以管理员身份运行cmd方法 Win7/8下提示OpenSCManager failed 拒绝访问Maven nexus 安装nexus : wrapper | OpenSCManag ...
- mysql查询优化器的提示(hit)
如果对优化器选择的执行计划不满意,可以使用优化器提供的几个提示来控制最终的执行计划,关于每个提示的具体用法,建议直接阅读官方手册,一些提示和版本有直接关系,可以使用的一些提示如下: high_prio ...