题目

推断输入的字符串是不是一个有效的IP地址

具体描写叙述:

请实现例如以下接口

boolisIPAddressValid(constchar* pszIPAddr)

输入:pszIPAddr 字符串

输出:true 有效的IP地址,false,无效的IP地址

约束

输入IP为XXX.XXX.XXX.XXX格式

字符串两端含有空格觉得是合法IP

字符串中间含有空格觉得是不合法IP

相似于 01.1.1.1, 1.02.3.4 IP子段以0开头为不合法IP

子段为单个0 觉得是合法IP,0.0.0.0也算合法IP

知识点: 字符串

题目来源: 111

练习阶段: 中级

代码

/*---------------------------------------
* 日期:2015-06-25
* 作者:SJF0115
* 题目:IP地址推断有效性
* 来源:华为上机
-----------------------------------------*/
#include <iostream>
#include <cstring>
using namespace std; bool isIPAddressValid(const char* pszIPAddr)
{
if(pszIPAddr == NULL)
{
return false;
}//if
int size = strlen(pszIPAddr);
// 去除前导0
int start = 0;
while(pszIPAddr[start] == ' ')
{
++start;
}//while
// 去除后导0
int end = size - 1;
while(pszIPAddr[end] == ' ')
{
--end;
}//while
int num = 0;
int pointCount = 0;
int first = start;
for(int i = start;i <= end+1;++i)
{
if(pszIPAddr[i] >= '0' && pszIPAddr[i] <= '9')
{
num = num * 10 + pszIPAddr[i] - '0';
}//if
else if(pszIPAddr[i] == '.' || i == end + 1)
{
if(i == start || (pszIPAddr[i-1] < '0' || pszIPAddr[i-1] > '9'))
{
return false;
}
// 验证.个数
if(pszIPAddr[i] == '.')
{
++pointCount;
if(pointCount > 3)
{
return false;
}//if
}//if
// 验证数据
if(num > 255 || num < 0)
{
return false;
}//if
// 以0开头且不为0 比如:023
if(num != 0 && pszIPAddr[first] == '0')
{
return false;
}//if
first = i+1;
num = 0;
}//else
else
{
return false;
}//else
}//for
if(pointCount != 3)
{
return false;
}
return true;
}

[华为机试练习题]5.IP地址推断有效性的更多相关文章

  1. [华为机试练习题]55.最大公约数 &amp; 多个数的最大公约数

    题目 描写叙述: 输入2个数字,最后输出2个数字的最大公约数 题目类别: 位运算 难度: 0基础 执行时间限制: 无限制 内存限制: 无限制 阶段: 入职前练习 输入: 2个整数 输出: 输出数字1和 ...

  2. [华为机试练习题]50.求M的N次方的最后三位

    题目 描写叙述: 正整数M 的N次方有可能是一个很大的数字,我们仅仅求该数字的最后三位 例1: 比方输入5和3 ,5的3次方为125.则输出为125 例2: 比方输入2和10 2的10次方为1024 ...

  3. C++获取本机用于连接的IP地址

    最近写个程序需要获取本机用于连接的IP地址,经过很多的尝试后,最终使用的方法如下: 使用cmd命令    netstat  | findstr “192.168.6.66:3333” > D:\ ...

  4. 如何设置本机电脑的固定IP地址?

    最近使用Loadrunner需要用到IP欺骗,但是我打开设置IP欺骗却提示我:IP向导不支持启用DHCP的网卡.您的卡启用了DHCP或者配置了无效设置.请与系统管理员联系. 我就方了,于是百度了一下, ...

  5. kali机获取不到ip地址解决

    一.方法一 重启网卡:/etc/init.d/networking restart 重启kali:reboot 二.方法二 更改网络适配器:虚拟机-可移动设备-网络适配器设置-选择“桥接模式:直接连接 ...

  6. 验证IP地址的有效性

    实力说明 IP地址是网络上每台计算机的标识,在浏览器中输入的网址也是要经过DNS服务器转换为IP地址才能找到服务器. 关键技术 正则表达式

  7. Jmeter多机并发压测IP地址问题

    meter.engine.RemoteJMeterEngineImpl: Local IP address=192.168.56.1 不能成功链家到相应的压力机 解决步骤: 1.找到jmeter.ba ...

  8. 返回本机的外网ip地址

     ;             );             string ip = tempip.Replace("]", "").Replace(" ...

  9. VMware虚拟机的CentOS7安装Nginx后本机用CentOS的IP地址无法访问

    因为CentOS7的默认防火墙改成了Firewall,不再使用iptables为默认防火墙了 所以需要使用以下命令添加80端口 firewall-cmd --zone=public --add-por ...

随机推荐

  1. Android编程实用代码合集

    1.android dp和px之间转换public class DensityUtil { /** * 根据手机的分辨率从 dip 的单位 转成为 px(像素) */ public static in ...

  2. 【mybatis】mybatis多表联查,存在一对多关系的,实体中使用List作为字段接收查询结果的写法

    实体如下: IntegralGoods  积分商品 IntegralGoodsImg 积分商品图片 ShelfLog 积分商品自动上架记录 IntegralGoods :IntegralGoodsIm ...

  3. python接口自动化21-规范的API接口文档示例

    前言 接口文档到底长啥样?做接口测试最大的障碍在于没有接口文档,很多公司不注重接口文档的编写,导致测试小伙伴没见过接口文档. 运气好一点的测试小伙伴可能厚着脸皮找开发要过接口文档,然而拿过来的接口文档 ...

  4. [转]sqlserver2008锁表语句详解

    本文转自:http://xue.uplook.cn/database/sqlserver/801760.html 锁定数据库的一个表 代码如下: SELECT * FROM table WITH (H ...

  5. SQL Server 获取某时间点后修改的函数Function 并以文本格式显示

    修改查询分析器如下选项 右键=>查询选项 =>结果=>文本=> 取消 在结果集中包括列标题 的勾选 右键=>将结果保存到=> 选择 以文本格式显示结果 执行如下SQ ...

  6. [转载]抓包工具Charles乱码解决办法

    FROM: http://blog.csdn.net/huanghanqian/article/details/52973651 安装 SSL 证书 Mac 端 首先去 http://www.char ...

  7. Android-标题状态栏的隐藏

    以下有两种方法,建议使用第一种方法:使用第一种方法,仅仅只需要在Manifest.xml文件中进行一行的配置就行了而且Activity在启动的时候也不会看到那个Title栏第一种方法:在配置文件中进行 ...

  8. 工程web-inf 下文件,路径访问

    直接用相对路径../即可 效果:

  9. java web 拦截器、过滤器理解

    1.首先要明确什么是拦截器.什么是过滤器 1.1 什么是拦截器: 拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加 ...

  10. [Functional Programming ADT] Adapt Redux Actions/Reducers for Use with the State ADT

    By using the State ADT to define how our application state transitions over time, we clear up the ne ...