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

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

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

#include <stdio.h>

int main() {
    int ip[4]={0};
    int mk[4]={0};
    char str[50];
    int mask;
    int sum[7]={0};
    int i,len;
    int tail_ip[]={126,191,223,239,255};
    while(scanf("%s",str)!=EOF)
    {
       len=sscanf(str,"%d.%d.%d.%d~%d.%d.%d.%d",ip,ip+1,ip+2,ip+3,mk,mk+1,mk+2,mk+3);
       if(ip[0]==0||ip[0]==127)//0或者127忽略不计
       {
           continue;
       }
       if(len!=8)//有空数字为错误ip
       {
           sum[5]++;
           continue;
       }
       if((mk[0]==0)||(mk[0]==255&&mk[1]==255&&mk[2]==255&&mk[3]==255))//全是0或者全是1为错误掩码
       {
           sum[5]++;
           continue;
       }
       mask=(mk[0]<<24)+(mk[1]<<16)+(mk[2]<<8)+mk[3];//掩码合并
       if((~mask+1)& ~mask)
       {
           sum[5]++;
           continue;
       }
       for(i=0;ip[0]>tail_ip[i];i++);//ip类型判断
       sum[i]++;
       if(ip[0]==10||(ip[0]==172&&ip[1]>=16&&ip[1]<=31)||(ip[0]==192&&ip[1]==168))//私网ip
       {
           sum[6]++;
       }
    }
    for(i=0;i<7;i++)
    {
        printf("%d ",sum[i]);
    }
    return 0;
}

全部评论
为什么我本地的clion运行报错,这里却成功了,是我的版本太低了吗
点赞 回复 分享
发布于 2023-11-16 21:08 广东

相关推荐

龙珠传说:nb,公务员解约不需要支付违约金吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务