华为在线测试题[基础篇]--判断IP是否合法

现在IPV4下用一个32位无符号整数来表示,一般用点分方式来显示,点将IP地址分成4个部分,每个部分为8位,表示成一个无符号整数(因此不需要用正号出现),如10.137.17.1,是我们非常熟悉的IP地址,一个IP地址串中没有空格出现(因为要表示成一个32数字)。

现在需要你用程序来判断IP是否合法。

//判断是否为合法IP
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main()
{
	string str;
	getline(cin,str);
	char ch;
	unsigned flag=0,k=0,value=0;
	vector<int> ivec(3,0);
	for (int i=0;i!=str.size();++i)
	{
		ch=str[i];
		if (ch!='.')
		{
			ivec[k]=ch-48;
			k=k+1;
			if (i+1!=str.size() && str[i+1]=='.' )
			{
				if (k==1)
				{
					value=ivec[0];
					i=i+1;
				}
				if (k==2)
				{
					value=ivec[0]*10+ivec[1];
					i=i+1;
				}
				if (k==3)
				{
					value=ivec[0]*100+ivec[1]*10+ivec[2];
					i=i+1;
				}
				if (value<256)
				{
					flag++;
					k=0;
				}
				if (value>255)
				{
					break;
				}
				vector<int> ivec(3,0);
			}
			if (i+1==str.size())
			{
				if (k==1)
				{
					value=ivec[0];

				}
				if (k==2)
				{
					value=ivec[0]*10+ivec[1];

				}
				if (k==3)
				{
					value=ivec[0]*100+ivec[1]*10+ivec[2];

				}
				if (value<256)
				{
					flag++;
					k=0;
					break;
				}
			}
		}
	}

	if (flag==4)
	{
		cout<<"YES"<<endl;
	}
	else
		cout<<"NO"<<endl;
	system("PAUSE");
	return 0;
}
时间: 2024-08-11 08:27:33

华为在线测试题[基础篇]--判断IP是否合法的相关文章

linux网络编程之TCP/IP基础篇(一)

从今天起,将会接触到网络编程,平台是linux,实现语言C语言,最后将会实现一个简易的miniftp服务器. 主要的内容安排为:linux网络编程之TCP/IP基础篇,SOCKET编程篇,进程间通信篇,线程篇,实战ftp篇. 1.ISO/OSI参考模型:open system interconnection开放系统互联模型是由OSI(international organization for standardization )国际标准化组织定义的网络分层模型,共七层. 各层的具体含义: 物理层

shell脚本编程之基础篇(二)

shell脚本编程之基础篇(二) ============================================================================== 概述: ============================================================================== 退出状态 ★进程使用退出状态来报告成功或失败 ◆0 代表成功,1-255代表失败 ◆$? 变量保存最近的命令退出状态 (查看:echo $?)

Linux网络配置基础篇

Linux网络配置基础篇 一.如何实现linux网络通信? 1)指定IP/NETMASK可实现本地通信: 2)指定路由(网关)可实现跨网络通信: 3)指定DNS服务器地址可实现基于主机名的通信, 主DNS服务器地址(当前服务器不在线时,启用备用DNS服务器地址) 备用DNS服务器地址 第三备份DNS服务器地址 二.配置网络方式及网络接口命名 linux 网络属于内核的功能, 配置方式: 静态指定:使用命令直接指定或修改配置文件 动态分配:依赖于本地网络中有DHCP服务 网络接口命名方式: 传统命

mysql学习笔记之基础篇

数据库学习之基础篇 ① 开放数据库互连(Open Database Connectivity,ODBC ② 结构化查询语言(Structured Query Language) ③ 进入mysql:Mysql -u cz -p cz; ④ 显示系统的database: show databases; ⑤ 创建database:create database 名字; ⑥ 选择database:use 名字; ⑦ 删除数据库:drop database name;或者表 ⑧ 查看表:show tab

Kubernetes基础篇:主要特性、基本概念与总体架构

Kubernetes基础篇:主要特性.基本概念与总体架构 本文试图将Kubernetes的基础相关知识描述清楚,让一个从来没有Kubernetes实践的开发人员,能够非常容易地理解Kubernetes是什么,能够做哪些事情,以及使用它能带来的好处是什么. Kubernetes是什么 Kubernetes是一个开源的容器编排引擎,它支持自动化部署.大规模可伸缩.应用容器化管理.我们在完成一个应用程序的开发时,需要冗余部署该应用的多个实例,同时需要支持对应用的请求进行负载均衡,在Kubernetes

Linux基础篇--linux基础和帮助用法

Linux基础篇--linux基础和帮助用法 本章概要 用户登录 终端 Shell介绍 执行命令 简单命令 Tab键补全 命令行历史 bash快捷键 使用gnome-terminal whatis command--help manandinfo 本地帮助文档/usr/share/doc/ 官网在线文档 其它网站和搜索 用户登录 root用户   一个特殊的管理帐户   也被称为超级用户   root已接近完整的系统控制   对系统损害几乎有无限的能力   除非必要,不要登录为root 普通用户

热烈庆祝《Vue.js 实战教程 V2.x(一)基础篇》上线了!

课程简介 课程地址:https://ke.qq.com/course/432961 机构名称:大华软件学院 授课讲师:大强老师 课程名称:Vue.js 实战教程 V2.x(一)基础篇 课程简介:包括前端发展史.Vue.js简介.第一个Vue.js程序.安装环境和Vue.Vue实例.模板语法.计算属性和侦听器.Class与Style绑定.条件渲染.列表渲染.事件处理.表单输入绑定.组件基础等等. 适合人群: 1.初出茅庐,想学习前端开发的同学: 2.没用过Vue.js,想学习更多框架的同学: 3.

【Linux网络基础】网络子网划分基础知识(IP地址,子网)

一. IP地址分类与子网划分基础 1. 什么是IP地址? 常见的ip地址版本为ipv4, ipv6 32位 4 * 8=32位. 32位二进制数字序列组成的数字序列 点分十进制 采用点将32位数字进行分割为4端,每段8位的二进制数,但二进制数不便于记忆,此转换为10进制数显示,即点分十进制 2. 十进制与二进制的转换 十进制是作为人类方便识别的一种地址表现形式,而二进制是作为计算机方便识别的表现形式. 列出1-20 的十进制对照表 根据对照表进行一定的规律总结 根据第二章表的信息进行数据的逻辑总

oracle(sql)基础篇系列(五)&mdash;&mdash;PLSQL、游标、存储过程、触发器

  PL/SQL PL/SQL 简介 每一种数据库都有这样的一种语言,PL/SQL 是在Oracle里面的一种编程语言,在Oracle内部使用的编程语言.我们知道SQL语言是没有分支和循环的,而PL语言是为了补充SQL语言的,是带有了分支和循环的语言. PL/SQL 语法 基本数据类型声明 declare v_name varchar2(20); v_temp number(1); v_count binary_integer := 0; v_sal number(7,2) := 4000.00