IP地址合法性和网络类别检查

该博客主要讨论了IP地址的五种类别——A、B、C、D、E类,并详细介绍了A、B、C三类基本地址的规则。内容包括对IP地址的输入描述、输出描述的说明,以及输入样例和输出样例的展示,帮助理解如何进行IP地址的合法性及网络类别的判断。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述

IP地址就是给每个连接在互联网上的每一台主机(或路由器)的每一个接口分配一个在全世界范围是唯一的32位的标识符。
“分类的IP地址”就是将IP地址划分为若干个固定类,每一类地址都由两个固定长度的字段组成,其中第一个字段是网络号net-id,它标志主机(或路由器)所连接到的网络,第二个字段是主机号host-id,它标志该主机(或路由器)。
一个网络号在整个互联网范围内必须是唯一的,一台主机号在它前面的网络号所指明的网络范围内必须是唯一的,因此,一个IP地址在整个互联网范围内是唯一的。

IP地址分为五类,即A、B、C、D、E。其中A类、B类和C类地址为基本地址。规定如下表所示:

对主机或路由器来说,IP地址都是32位的二进制。为了提高IP地址的可读性,把32位的IP地址分成4个字节,每个字节用一个十进制数(0-255)来表示,而且在这些十进制数之间加一个点。叫做点分十进制记法。
现在给你若干个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;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值