//描述: 請解析ip位址和對應的掩碼,進行分類識別。要求按照a/b/c/d/e類位址歸類,不合法的位址和掩碼單獨歸類。
//所有的ip位址劃分為 a,b,c,d,e五類
//a類位址1.0.0.0~126.255.255.255;
//b類位址128.0.0.0~191.255.255.255;
//c類位址192.0.0.0~223.255.255.255;
//d類位址224.0.0.0~239.255.255.255;
//e類位址240.0.0.0~255.255.255.255
//私網ip範圍是:
//子網掩碼為前面是連續的1,然後全是0
//輸入:
//19..0.~255.255.255.0
//輸出:
----a類
----c類,私有
----錯誤的掩碼
//19..0.~255.255.255.0-----錯誤的ip
//可以得到統計資料如下:
//1 0 1 0 0 2 1
//樣例輸入:
//19..0.~255.255.255.0
//樣例輸出:
//1 0 1 0 0 2 1
#include #include #include int main(void)
else
}if(flag) continue;
for(k=0; k<4; k++)
}if(flag) continue;
temp = netmask[0]+(netmask[1]<<8)+(netmask[2]<<16)+(netmask[3]<<24);
one = 0; temp1 = temp;
while(temp1)
one1 = 0; temp1 = temp>>(32-one);
while(temp1)
if(one1!=one)
if(ip[3]>=1&&ip[3]<=126) a++;
if(ip[3]>=128&&ip[3]<=191) b++;
if(ip[3]>=192&&ip[3]<=223) c++;
if(ip[3]>=224&&ip[3]<=239) d++;
if(ip[3]>=240) e++;
if(ip[3]==10) private_ip++;
if(ip[3]==172&&ip[2]>=16&&ip[2]<=31) private_ip++;
if(ip[3]==192&&ip[2]==168) private_ip++;
} }printf("%d %d %d %d %d %d %d", a,b,c,d,e,err_ip_mask,private_ip);
system("pause");
return 0;
}
IP包頭格式與IP位址分類
version 版本,ihl ip頭資料長度,type ofservice 服務的形式,total length 資料總長度 identification 身份,flag 標籤,fragment offaet 偏移量,time of live 存活時間,protocol 協議形式,header ch...
IP位址分類
ip位址型別 最初設計網際網路絡時,為了便於定址以及層次化構造網路,每個ip位址包括兩個標識碼 id 即網路id和主機id。同乙個物理網路上的所有主機都使用同乙個網路id,網路上的乙個主機 包括網路上工作站,伺服器和路由器等 有乙個主機id與其對應。ip位址根據網路id的不同分為5種型別,a類位址 ...
IP位址分類
ip位址分類 a 首位為0 1.0.0.0 126.0.0.0 主機號24位 b 前兩位為10 128.1.0.0 191.255.0.0 主機號16位 c 前三位為110 192.0.1.0 223.255.255.0 主機號8位 d 前四位為1110 224.0.0.0 239.255.255....