这道题需要知道如何判断:IP地址和子网掩码是否合格。
判断子网掩码合格:掩码四段八位,前段大于等于后段。
判断IP地址合格:四段八位,每段中的取值在0~255。
#include <iostream>
using namespace std;
int main()
{
int a, b, c, d;
char ch1, ch2, ch3;
//掩码四段八位,前段大于等于后段。用这个用来判断子网掩码的合格性。
while (cin >> a >> ch1 >> b >> ch2 >> c >> ch3 >> d)
{
int a1, b1, c1, d1;
char ch11, ch21, ch31;
cin >> a1 >> ch11 >> b1 >> ch21 >> c1 >> ch31 >> d1;
int a2, b2, c2, d2;
char ch12, ch22, ch32;
cin >> a2 >> ch12 >> b2 >> ch22 >> c2 >> ch32 >> d2;
if (((a>=0 && a<=255 && a>=b && a>=c && a>=d) && (b>=0 && b<=255 && b>=c && b>=d) && (c>=0 && c<=255 && c>=d) && (d>=0 && d<=255))
&& (a1 >= 0 && a1 <= 255 && b1 >= 0 && b1 <= 255 && c1 >= 0 && c1 <= 255 && d1 >= 0 && d1 <= 255)
&& (a2 >= 0 && a2 <= 255 && b2 >= 0 && b2 <= 255 && c2 >= 0 && c2 <= 255 && d2 >= 0 && d2 <= 255))
{
if ((a & a1) == (a & a2) && (b & b1) == (b & b2)
&& (c & c1) == (c & c2) && (d & d1) == (d & d2))
cout << '0' << endl;
else
cout << '2' << endl;
}
else
cout << '1' << endl;
}
return 0;
}