這個我做的C語言自然分類IP地址判斷,代碼如下,abcd分別用來表示每一段IP地址,設定e是為了判斷是否多輸入了段使用的。
b,c,d其中有一個為-1就是說明沒有成功賦予值,所以判斷輸入錯誤例如輸入了1.a.1.1 1.2,2.3之類的。e!=-6123說明e的值發生了變化,但不應該第五段被賦值,所以說明多輸入了,其他的就是輸入數字超出限制。
#include <stdio.h>
main()
{
int a=-1,b=-1,c=-1,d=-1,e=-6123;
//設定初始值是為了好判斷IP地址輸入的時候輸入格式時候正確,如果不帶點說明輸入錯誤
//其實說白了就是我技術不夠,只能這樣來盡量避免bug。
printf("\n ");
printf("請輸入IP地址:");
scanf("%d.%d.%d.%d.%d",&a,&b,&c,&d,&e);
printf("\n ");
if(((a<0||a>255)||(b<0||b>255)||(c<0||c>255)||(d<0||d>255)||e!=-6123))
{
if(b==-1||c==-1||d==-1)
{
printf("IP地址輸入錯誤,請輸入阿拉伯數字或未輸入點分十進制!");
}
else if(e!=-6123)
{
printf("輸入了過多的地址段!");
}
else
{
printf("IP地址不合法!請輸入0-255之間的數字");
}
}
else
{
if(a>0&&a<127)
{
if(b==0&&c==0&&d==0)
{
printf("%d.%d.%d.%d是A類地址,且是此地址中的網路地址",a,b,c,d);
}
else if(b==255&&c==255&&d==255)
{
printf("%d.%d.%d.%d是A類地址,且是此地址中的廣播地址",a,b,c,d);
}
else
{
printf("%d.%d.%d.%d是A類地址",a,b,c,d);
}
}
else if(a>127&&a<192)
{
if(c==0&&d==0)
{
printf("%d.%d.%d.%d是B類地址,且是此地址中的網路地址",a,b,c,d);
}
else if(c==255&&d==255)
{
printf("%d.%d.%d.%d是B類地址,且是此地址中的廣播地址",a,b,c,d);
}
else
{
printf("%d.%d.%d.%d是B類地址",a,b,c,d);
}
}
else if(a>191&&a<224)
{
if(d==0)
{
printf("%d.%d.%d.%d是C類地址,且是此地址中的網路地址",a,b,c,d);
}
else if(d==255)
{
printf("%d.%d.%d.%d是C類地址,且是此地址中的廣播地址",a,b,c,d);
}
else
{
printf("%d.%d.%d.%d是C類地址",a,b,c,d);
}
}
else if(a>223&&a<240)
{
printf("%d.%d.%d.%d是D類地址(組播地址)",a,b,c,d);
}
else if(a>239&&a<255)
{
printf("%d.%d.%d.%d是E類地址(保留地址)",a,b,c,d);
}
else if(a==0)
{
if(b==0&&c==0&&d==0)
{
printf("%d.%d.%d.%d代表默認路由",a,b,c,d);
}
else
{
printf("%d.%d.%d.%d不合法!IP地址開頭不能為0除非所有位都是0",a,b,c,d);
}
}
else if(a==255)
{
if(b==255&&c==255&&d==255)
{
printf("%d.%d.%d.%d是全網廣播地址(基本不可用)",a,b,c,d);
}
else
{
printf("%d.%d.%d.%d無法使用!IP地址開頭不能為255除非所有位都是255",a,b,c,d);
}
}
else
{
printf("%d.%d.%d.%d是回環地址",a,b,c,d);
}
}
}
uj5u.com熱心網友回復:
本人第一次發帖而且本人技術不強,只是來分享一下而已
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/11106.html
標籤:C語言
