识别有效的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位地址,是连接地址,定义了每一个连接到因特网上的设备(可以认为是主机的别名),而不是 ...
随机推荐
- Thinkphp源码分析系列(七)–控制器基类
在mvc模式中,c代表的就是控制器,是是应用程序中处理用户交互的部分.通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据.控制器是沟通视图和模型的桥梁,他接受用户请求,并调用模型层去处理用户 ...
- TCP、UDP、IP 协议分析
http://rabbit.xttc.edu.cn/rabbit/htm/artical/201091145609.shtml http://bhsc881114.github.io/2015/06 ...
- java下的字符流
输入流和输出流相对于内存设备而言.将外设中的数据读取到内存中:输入将内存的数写入到外设中:输出.字符流的由来:其实就是:字节流读取文字字节数据后,不直接操作而是先查指定的编码表.获取对应的文字.比如, ...
- Shaders(读书笔记4 --- Real-Time rendering)
1. vertex,pixel以及geometry shaders共享一个programming model,即common-shader core,在GPU架构中的unified shader可以和 ...
- rt—移植笔记1
将rtt源码往stm32f407移植的时候,源码串口打印引脚设置有误,以下是源码引脚配置. 以下是原理图 可见配置有误.
- 珍惜每一滴水(kbmmw 中的内存调试)
作为一个服务器端的应用,最基本的要求就是稳定,当然要做一个稳定的服务器端,需要涉及到很多方面, 内存泄露就是稳定的一个致命杀手,因为服务器的物理内存是有限的,即使一个功能有很小的内存泄露,经过 长时间 ...
- 自动化测试第一季-selenium + python(环境搭建与基础代码解释)
# coding = utf-8 %%%%%%%%%%%%%%%%防止乱码(可加可不加) from selenium import webdriver ...
- 打造一个有感觉的vim(四)
今天要介绍的VIM插件的名字叫做surround,这个插件的主要作用是将一个VIM的tex-objects(文本对象)添加或者取消包裹(单引号,双引号,XML标签等等)下载地址如下:https://g ...
- Sublime Text 3 汉化小技巧
Sublime Text 3 简体中文汉化包使用方法 1.将下载的sublime_text3汉化包文件解压,得到的Default.sublime-package 文件.打开sublime text 3 ...
- UVa 1354 天平难题 Mobile Computing
整个题考虑起来 最主要要计算的状态 是树的状态 于是要计算出所有可能挂坠可能组成的树的所有形态 tree 用于保存这些状态 考虑不要重复计算,有一个vis 数组 预处理可以先计算出一棵树的重量,简化计 ...