`

hdu 2206 IP的计算

阅读更多
IP的计算
Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2686    Accepted Submission(s): 488


Problem Description
在网络课程上,我学到了很多有关IP的知识。IP全称叫网际协议,有时我们又用IP来指代我们的IP网络地址,现在IPV4下用一个32位无符号整数来表示,一般用点分方式来显示,点将IP地址分成4个部分,每个部分为8位,表示成一个无符号整数(因此不需要用正号出现),如192.168.100.16,是我们非常熟悉的IP地址,一个IP地址串中没有空格出现(因为要表示成一个32数字)。
但是粗心的我,常常将IP地址写错,现在需要你用程序来判断。



Input
输入有多个case,每个case有一行,不超过100个字符。


Output
对于每个case,判断输入的IP是否正确,如果正确输入YES,否则NO。


Sample Input
192.168.100.16


Sample Output
YES


Author
wangye


Recommend
wangye


看似简单的东西是有陷阱的,主要注意以下四点:
<1> 检验时滤掉前导和后缀空格
<2> 4个段的数字位数不能超过3位,例如 000.000.000.000是正确的,但
     0000.000.000.000就是错误的
<3> 分隔符点的个数是3,多了少了都不行
<4> 每个段值不能超过255



我的代码,很长,很浪费内存,但还能过,记录一下吧。
#include <stdio.h>
#include <string.h>

int check_num(char s[], int st, int end)
{
    int i, k = 0, tag = 0;
    if(end - st > 3)
        return 0;
    for( i = st; i < end; i++)
    {
        if(s[i] >= '0' && s[i] <= '9')
        {
            k = k * 10 + s[i] - '0';
            tag = 1;    
        }    
        else
            return 0;
    }
    if(k > 255 || tag == 0)
        return 0;
    //printf("k = %d\n", k);
    return 1;
}
int check_ip(char s[])
{
    int len = strlen(s);
    int st, end;
    int dotp[4], ip[4];
    int dn = 0;
    int i, j, k, res;
    for(i = 0; s[i] == ' '; i++) 
        ;  // process the backspace before number
    st = i;
    
    for(i = len - 1; s[i] == ' '; i--)
        ; //process the backspace after number
    end = i + 1;
    
    k = 0;
    for(i = st; i < end; i++)
    {
        if(s[i] == '.')
        {
            dn++;
            if(dn > 3) // more than 3, break
                break;
            dotp[k++] = i;
        }
    }
    if(dn != 3)  // dot number is not 3
    {
            return 0;
    }
    for(i = 0; i < 4; i++)
    {
        switch(i)
        {
            case 0: 
                    res = check_num(s, st, dotp[0]);
                    break;
            case 1: 
            case 2: 
                    res = check_num(s, dotp[i - 1] + 1, dotp[i]);
                    break;
            case 3:
                    res = check_num(s, dotp[i - 1] + 1, end);
                    break;
        }
        if(res == 0)
        {
                return 0;
        }
    }    
    return 1;
}

int main()
{
    char s[101];
    int res;
    while(gets(s) != NULL)
    {
        res = check_ip(s);
        if(!res)
            printf("NO\n");
        else
            printf("YES\n");
    }
    
    return 0;    
}

分享到:
评论

相关推荐

    HDU杭电 计算机网络实验报告

    这份"HDU杭电 计算机网络实验报告"压缩包提供了丰富的实验材料,涵盖了多个关键的网络技术,包括交换机配置、路由协议、地址转换(NAT)、访问控制列表(ACL)以及动态主机配置协议(DHCP)等。以下是这些实验报告所...

    杭州电子科技大学《计算机网络》应用层.ppt

    DNS的主要功能是将人类可读的域名(如www.hdu.edu.cn)转换为IP地址(如218.75.123.182),使网络能够识别和定位主机。DNS采用层次性命名方法,构建了一个分布式、分层的树状域名空间,从根节点开始,依次包含顶级域...

    基于UDP和TCP协议的Socket(网络编程/套接字)案例

    1. 客户端:创建DatagramSocket,准备DatagramPacket,`DatagramPacket packet = new DatagramPacket(data, data.length, InetAddress.getByName("服务器IP"), 端口号);`,然后`datagramSocket.send(packet);` 2. ...

    重点(考试课)电子商务

    - **域名层次结构**:如**www.hdu.edu.cn**中的**hdu**是三级域名。 **7. 域名的特点** - **不区分大小写**。 - **唯一性**:一台机器可以拥有多个域名。 - **与IP地址的关系**:不是完全等同的。 **8. Extranet...

    YOLOv12:以注意力为中心的实时目标检测器.pdf

    YOLOv12:以注意力为中心的实时目标检测器

    GO语言基础语法指令教程

    GO语言基础语法指令教程

    MATLAB代码实现:分布式电源接入对配电网运行影响深度分析与评估,MATLAB代码分析:分布式电源接入对配电网运行影响评估,MATLAB代码:分布式电源接入对配电网影响分析 关键词:分布式电源 配电

    MATLAB代码实现:分布式电源接入对配电网运行影响深度分析与评估,MATLAB代码分析:分布式电源接入对配电网运行影响评估,MATLAB代码:分布式电源接入对配电网影响分析 关键词:分布式电源 配电网 评估 参考文档:《自写文档,联系我看》参考选址定容模型部分; 仿真平台:MATLAB 主要内容:代码主要做的是分布式电源接入场景下对配电网运行影响的分析,其中,可以自己设置分布式电源接入配电网的位置,接入配电网的有功功率以及无功功率的大小,通过牛顿拉夫逊法求解分布式电源接入后的电网潮流,从而评价分布式电源接入前后的电压、线路潮流等参数是否发生变化,评估配电网的运行方式。 代码非常精品,是研究含分布式电源接入的电网潮流计算的必备程序 ,分布式电源; 配电网; 接入影响分析; 潮流计算; 牛顿拉夫逊法; 电压评估; 必备程序。,基于MATLAB的分布式电源对配电网影响评估系统

    三相光伏并网逆变器:Mppt最大功率跟踪与800V中间母线电压的电力转换技术,三相光伏并网逆变器:实现最大功率跟踪与800V中间母线电压的优化处理,三相光伏并网逆变器 输入光伏Mppt 最大功率跟踪

    三相光伏并网逆变器:Mppt最大功率跟踪与800V中间母线电压的电力转换技术,三相光伏并网逆变器:实现最大功率跟踪与800V中间母线电压的优化处理,三相光伏并网逆变器 输入光伏Mppt 最大功率跟踪中间母线电压800V 后级三相光伏并网逆变器 ,三相光伏并网逆变器; 输入光伏Mppt; 最大功率跟踪; 中间母线电压800V; 后级逆变器,三相光伏并网逆变器:MPPT最大功率跟踪800V母线电压

    基于SSM的车位销售平台设计与实现.zip(毕设&课设&实训&大作业&竞赛&项目)

    项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用

    西门子博途三部十层电梯程序案例解析:基于Wincc RT Professional V14及更高版本的应用探索,西门子博途三部十层电梯程序案例解析:基于Wincc RT Professional画面与

    西门子博途三部十层电梯程序案例解析:基于Wincc RT Professional V14及更高版本的应用探索,西门子博途三部十层电梯程序案例解析:基于Wincc RT Professional画面与V14及以上版本技术参考,西门子1200博途三部十层电梯程序案例,加Wincc RT Professional画面三部十层电梯程序,版本V14及以上。 程序仅限于参考资料使用。 ,西门子;1200博途;三部十层电梯程序案例;Wincc RT Professional;V14以上程序版本。,西门子V14+博途三部十层电梯程序案例:Wincc RT Pro专业画面技术解析

    基于舆情数据的知识图谱推荐可视化系统论文,全原创,免费分享

    基于舆情数据的知识图谱推荐可视化系统论文,全原创,免费分享

    基于Vivado源码的AM包络检调制解调与FIR滤波器设计在FPGA上的实现,基于Zynq-7000和Artix-7系列的AM包络检调制解调源码及Vivado环境下的实现,AM包络检调制解调,Viva

    基于Vivado源码的AM包络检调制解调与FIR滤波器设计在FPGA上的实现,基于Zynq-7000和Artix-7系列的AM包络检调制解调源码及Vivado环境下的实现,AM包络检调制解调,Vivado源码 FPGA的AM调制解调源码,其中FIR滤波器根据MATLAB设计。 【AM_jietiao】文件是基于zynq-7000系列,但没有涉及AD与DA,只是单纯的仿真。 【AM包络检调制解调_Vivado源码】文件基于Artix-7系列,从AD读入信号后,进行AM调制,并解调DA输出。 ,AM包络检调制解调;Vivado源码;FPGA;AM调制解调源码;FIR滤波器;MATLAB设计;Zynq-7000系列;Artix-7系列;AD读入信号;DA输出,AM包络调制解调源码:Zynq-7000与Artix-7 FPGA的不同实现

    rdtyfv、ijij

    yugy

    2025山东大学:DeepSeek应用与部署(部署方案大全+API调用+业务应用)-80页.pptx

    2025山东大学:DeepSeek应用与部署(部署方案大全+API调用+业务应用)-80页.pptx

    chromedriver-mac-x64-135.0.7023.0(Dev).zip

    chromedriver-mac-x64-135.0.7023.0(Dev).zip

    基于单片机protues仿真的433MHz无线模块编解码收发通信测试(仿真图、源代码)

    基于单片机protues仿真的433MHz无线模块编解码收发通信测试(仿真图、源代码) 该设计为单片机protues仿真的433MHz无线模块收发通信测试; 1、433M超再生收发模块; 2、在仿真图中是把发射MCU的P2_7腿直接输入到接收MCU的INT0实现编码解码的; 3、通过433MHz无线模块实现无线通信的编解码功能; 4、按键控制指令; 5、液晶屏显示收发状态和信息;

    车机安卓版好用的应用管理app

    资源说说明; 自带文件管理 adb操作以及应用管理等等的功能。 操作性对比其他应用较好。 参阅博文: https://blog.csdn.net/mg668/article/details/145689511?spm=1001.2014.3001.5352

    软件工程课程设计前端.zip

    项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用

    智慧图书管理系统(源码+数据库+论文)java开发springboot框架javaweb,可做计算机毕业设计或课程设计

    智慧图书管理系统(源码+数据库+论文)java开发springboot框架javaweb,可做计算机毕业设计或课程设计 【功能需求】 本系统分为读者、管理员2个角色 读者可以进行注册登录、浏览图书以及留言、图书借阅、图书归还、图书续借、个人中心、论坛交流、等功能 管理员可以进行读者管理、图书管理、论坛论坛回复管理、图书借阅管理(下架、库存管理、修改、删除)、轮播图管理 【环境需要】 1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.数据库:MySql 5.7/8.0等版本均可; 【购买须知】 本源码项目经过严格的调试,项目已确保无误,可直接用于课程实训或毕业设计提交。里面都有配套的运行环境软件,讲解视频,部署视频教程,一应俱全,可以自己按照教程导入运行。附有论文参考,使学习者能够快速掌握系统设计和实现的核心技术。

    三相APFC电路与单相Boost PFC电路仿真模型:电压外环电流内环双闭环控制研究,三相电路仿真模型:探索APFC电路、单相PFC电路及BoostPFC电路的动态特性与双闭环控制策略,APFC电路

    三相APFC电路与单相Boost PFC电路仿真模型:电压外环电流内环双闭环控制研究,三相电路仿真模型:探索APFC电路、单相PFC电路及BoostPFC电路的动态特性与双闭环控制策略,APFC电路,单相PFC电路,单相BoostPFC电路仿真模型。 网侧220V 50Hz,输出电压设置为50Hz。 电压外环电流内环双闭环控制仿真模型 ,APFC电路; 单相PFC电路; 单相BoostPFC电路仿真模型; 网侧电压; 220V 50Hz; 输出电压50Hz; 电压外环电流内环双闭环控制仿真模型。,基于APFC电路的单相Boost PFC仿真模型:网侧电压220V/50Hz下电压电流双闭环控制的研究与应用

Global site tag (gtag.js) - Google Analytics