码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-04-22 09:45:53      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:

现在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;
}

		


 

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

标签:

原文地址:http://blog.csdn.net/xpyimapingchuan/article/details/45176231

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!