識別有效的IP位址和掩碼並進行分類統計

2021-07-05 05:50:59 字數 2344 閱讀 4663

描述

請解析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範圍是:

10.0.0.0~10.255.255.255

172.16.0.0~172.31.255.255

192.168.0.0~192.168.255.255

子網掩碼為前面是連續的1,然後全是0

知識點字串,迴圈,查詢,搜尋,排序,函式,指標,列舉,位運算,結構體,聯合體,檔案操作,遞迴

執行時間限制

0m記憶體限制0輸入

多行字串。每行乙個ip位址和掩碼,已~隔開。如:

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

輸出統計a、b、c、d、e、錯誤ip位址或錯誤掩碼、私有ip的個數,之間以空格隔開,根據上面的ip,可以得到:

1.0.0.1~255.0.0.0 ----a類

192.168.0.2~255.255.255.0  ----c類,私有

10.70.44.68~255.254.255.0----錯誤的掩碼

19..0.~255.255.255.0-----錯誤的ip

可以得到統計資料如下:

1 0 1 0 0 2 1

樣例輸入

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

樣例輸出

1 0 1 0 0 2 1

思路:按行讀取ip位址及掩碼,然後逐行按『.』(點)把字串變成數字放進陣列,通過判斷ip位址及掩碼的數值個數及範圍判斷其有效性;(笨方法,僅是一種思路,用正規表示式會簡單很多)

**如下:

#include #include #include using namespace std;

bool isip(vector&a,vector&b)

while(now >= pre)

b.push_back(temp);

temp = 0;

pre = i+1;

i++;

}else

i++;

} int now = i-1,ol = 1;

while(now >= pre)

b.push_back(temp);

int len = b.size();

//cout << len;

if(len == 4)

return true;

}else

return false;

}bool ismesk(vector&a)

b.push_back(temp);

temp = 0;

pre = i+1;

i++;

}else

i++;

} int now = i-1,ol = 1;

temp = 0;

while(now >= pre)

b.push_back(temp);

int len = b.size();

if(len == 4)

for(int j = 0;j < 4;j++)

return true;

}else

return false;

} bool isnumber(char c)

int main()

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

v.push_back('\0');

bool isip = isip(v,b),ismask = ismesk(v);

if(isip && ismask)

else

err_back++;

} cout << a_back << " " << b_back << " " << c_back << " "

<< d_back << " " << e_back << " " << err_back << " "

<< si_back <

識別有效的IP位址和掩碼並進行分類

請解析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 2...

識別有效的IP位址和掩碼並進行分類統計

include include include include using namespace std static int result 7 儲存最後結果的陣列 string chang string str 轉換為二進位制 itoa num,tmp1,2 把num轉換為二進位制,並以字串形式儲存...

識別有效的IP位址和掩碼並進行分類統計

標籤 空格分隔 oj 演算法 請解析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 ...