题解 | #识别有效的IP地址和掩码并进行分类统计#

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

https://www.nowcoder.com/practice/de538edd6f7e4bc3a5689723a7435682

#include <stdio.h>
//判断掩码是否合法的函数
int zm(int b1,int b2,int b3,int b4){
    if(b1!=255){
        if((b1==128||b1==192||b1==224||b1==240||b1==248||b1==252||b1==254)&&b2==0&&b3==0&&b4==0)
        return 1;
        else return 0;
    }
    else{
        if(b2!=255){
        if((b2==0||b2==128||b2==192||b2==224||b2==240||b2==248||b2==252||b2==254)&&b3==0&&b4==0)
        return 1;
        else return 0;
    }
        else{
            if(b3!=255){
            if((b3==0||b3==128||b3==192||b3==224||b3==240||b3==248||b3==252||b3==254)&&b4==0)
            return 1;
            else return 0;
    }
            else{
                if(b4==0||b4==128||b4==192||b4==224||b4==240||b4==248||b4==252||b4==254)
                return 1;
                else return 0;
            }
        }
    }
}
//判断ip是否合法的函数
int ifok(int a1,int a2,int a3,int a4,int b1,int b2,int b3,int b4){
    if(a1<0||a1>255||a2<0||a3<0||a4<0||a2>255||a3>255||a4>255)
    return 0;
    else if(a1==0||a1==127) return 2;
    else{
        if(zm(b1,b2,b3,b4)) return 1;
        else return 0;
    }
}
int main() {
    int Anum=0,Bnum=0,Cnum=0,Dnum=0,Enum=0,Fnum=0,Snum=0;
    int a1,a2,a3,a4,b1,b2,b3,b4;
    int t;
    while (scanf("%d.%d.%d.%d~%d.%d.%d.%d",&a1,&a2,&a3,&a4,&b1,&b2,&b3,&b4) != EOF) { 
        t=ifok(a1, a2, a3, a4, b1, b2, b3, b4);
        if(t==0) Fnum++;
        else if(t==1){
            if(a1>0&&a1<127) Anum++;
            if(a1>127&&a1<192) Bnum++;
            if(a1>191&&a1<224) Cnum++;
            if(a1>223&&a1<240) Dnum++;
            if(a1>239&&a1<256) Enum++;
            if(a1==10||(a1==172&&a2>15&&a2<32)||(a1==192&&a2==168)) Snum++;
        }

    }
    printf("%d %d %d %d %d %d %d",Anum,Bnum,Cnum,Dnum,Enum,Fnum,Snum);
    return 0;
}

全部评论

相关推荐

10-04 17:25
门头沟学院 Java
snqing:Java已经饱和了,根本不缺人。随便一个2000工资的都200人起投递
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务