C语言大作业网络子网的划分,华为面试题:识别有效的ip地址和子网掩码并分类 C语言源码...

识别有效的ip地址和子网掩码并分类:

按行输入多组数据

10.8.9.2~255.0.0.0

180.8.9.2~255.254.0.0

打印:A B C D E 错误的ip或掩码 私有ip 的个数

#include "stdio.h"

#include "stdlib.h"

#include "string.h"

#define MAX_PATH 256

int maze[10][10] = {0};

int route[100][2] = {0};

int impl(char *ip,char *mask,int *privateIp)

{

char *a = strtok(ip,".");

char *b = strtok(NULL,".");

char *c = strtok(NULL,".");

char *d = strtok(NULL,".");

if (!(a && b && c && d))

{

return 5;

}

int ai = atoi(a);

int bi = atoi(b);

int ci = atoi(c);

int di = atoi(d);

// char *a1 = strtok(mask,".");

// char *b1 = strtok(NULL,".");

// char *c1 = strtok(NULL,".");

// char *d1 = strtok(NULL,".");

if(ai>0 && ai<=126 && strcmp(mask,"255.0.0.0")==0)

{

if (ai==10 && bi>=0 && bi<=255)

{

*privateIp = 1;

}

return 0;

}

else if(ai>=128 && ai<=191 && strcmp(mask,"255.255.0.0")==0)

{

if (ai==172 && bi>=16 && bi<=31)

{

*privateIp = 1;

}

return 1;

}

else if(ai>=192 && ai<=223 && strcmp(mask,"255.255.255.0")==0)

{

if (ai==192 && bi==168)

{

*privateIp = 1;

}

return 2;

}

else if(ai>=224 && ai<=239)

{

return 3;

}

else if(ai>=240 && ai<=255)

{

return 4;

}

else

{

return 5;

}

}

int main()

{

// char test[4][100]={"10.70.44.68~255.254.255.0",

// "1.0.0.1~255.0.0.0",

// "192.168.0.2~255.255.255.0",

// "19..0.~255.255.255.0"};

int result[7] = {0};

char test[100] = {0};

while(scanf("%s",test)!=EOF)

{

char *ip = strtok(test,"~");

char *mask = strtok(NULL,"~");

int n = impl(ip,mask,&result[6]);

result[n]++;

}

// for (int i=0;i<4;i++)

// {

// char *ip = strtok(test[i],"~");

// char *mask = strtok(NULL,"~");

// int n = impl(ip,mask,&result[6]);

// result[n]++;

// }

for (int i=0;i<7;i++)

{

printf("%d ",result[i]);

}

return 0;

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值