题目:
现在IPV4下用一个32位无符号整数来表示,一般用点分方式来显示,点将IP地址分成4个部分,每个部分为8位,表示成一个无符号整数(因此不需要用正号出现),如10.137.17.1,是我们非常熟悉的IP地址,一个IP地址串中没有空格出现(因为要表示成一个32数字)。
现在需要你用程序来判断IP是否合法。
解题思路:
这道题很简单,只用将输入的字符串中的四个部分的数字提取出来,判断是否在0~255,范围之内就可以了。
#include <iostream>
#include <stdio.h>
#include<string>
using namespace std;
int main()
{
string str;
cin>>str;
string str0,str1,str2,str3;
int i=0;
int index=0;
int num[3]={0};
while(str[i])
{
if(str[i]=='.')
num[index++]=i;
i++;
}
str0=str.substr(0,num[0]);
str1=str.substr(num[0]+1,num[1]-num[0]-1);
str2=str.substr(num[1]+1,num[2]-num[1]-1);
str3=str.substr(num[2]+1,num[3]-num[2]-1);
int k0=0,k1=0,k2=0,k3=0;
for(i=0;i<str0.length();i++)
{
k0=k0*10+str0[i]-'0';
}
for(i=0;i<str1.length();i++)
{
k1=k1*10+str1[i]-'0';
}
for(i=0;i<str2.length();i++)
{
k2=k2*10+str2[i]-'0';
}
for(i=0;i<str3.length();i++)
{
k3=k3*10+str3[i]-'0';
}
if((k0>255||k0<0)||(k1>255||k1<0)||(k2>255||k2<0)||(k3>255||k3<0))
cout<<"NO";
else
cout<<"YES";
return 0;
}