题目描述
IP地址就是给每个连接在互联网上的每一台主机(或路由器)的每一个接口分配一个在全世界范围是唯一的32位的标识符。
“分类的IP地址”就是将IP地址划分为若干个固定类,每一类地址都由两个固定长度的字段组成,其中第一个字段是网络号net-id,它标志主机(或路由器)所连接到的网络,第二个字段是主机号host-id,它标志该主机(或路由器)。
一个网络号在整个互联网范围内必须是唯一的,一台主机号在它前面的网络号所指明的网络范围内必须是唯一的,因此,一个IP地址在整个互联网范围内是唯一的。
现在给你若干个IP地址,编写程序判定这些IP地址的合法性,如果是合法的还需判断它的网络类别。
“分类的IP地址”就是将IP地址划分为若干个固定类,每一类地址都由两个固定长度的字段组成,其中第一个字段是网络号net-id,它标志主机(或路由器)所连接到的网络,第二个字段是主机号host-id,它标志该主机(或路由器)。
一个网络号在整个互联网范围内必须是唯一的,一台主机号在它前面的网络号所指明的网络范围内必须是唯一的,因此,一个IP地址在整个互联网范围内是唯一的。
IP地址分为五类,即A、B、C、D、E。其中A类、B类和C类地址为基本地址。规定如下表所示:
现在给你若干个IP地址,编写程序判定这些IP地址的合法性,如果是合法的还需判断它的网络类别。
输入描述
输入数据有多组,每组一行,为一个点分十进制表示的IP地址。
输出描述
对每组输入数据,如果不是合法的IP地址,输出"NO";是合法的IP地址,输出所属的网络类别。每组输入数据输出一行。
输入样例
127.0.0.1
192.168.0.1
200.256.6.2
输出样例
A
C
NO
AC代码如下:
#include <iostream>
#include <cstdio>
using namespace std;
bool check(int num)
{
if(num<0 || num>255) return false;
return true;
}
int main()
{
int n1,n2,n3,n4;
while(scanf("%d.%d.%d.%d",&n1,&n2,&n3,&n4)!=EOF)
{
if(!(check(n1) && check(n2) && check(n3) && check(n4))) cout<<"NO"<<endl;
else
{
if(n1<128) cout<<"A"<<endl;
else if(n1<192) cout<<"B"<<endl;
else if(n1<224) cout<<"C"<<endl;
else if(n1<240) cout<<"D"<<endl;
else cout<<"E"<<endl;
}
}
return 0;
}