#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;
int main()
{
char c[110],m[5];
int sum;
int i,j,n,z,k;
while(gets(c))
{
k=1;
z=0;
n=strlen(c);
if(c[0]=='.'||c[n-1]=='.')//首尾不为'.'
k=0;
for(i=0;i<n-1;i++)
{
if(k==0)
break;
if(c[i]=='.'&&c[i+1]=='.')//相邻两个不为'.'
k=0;
}
for(i=0;i<n;i++)
{
if(k==0)
break;
if(c[i]!='.'&&!(c[i]>='0'&&c[i]<='9'))//判断是否为合法字符
k=0;
if(c[i]!='.')
z++;
else
{
if(z==0||z>3)//每小节范围0-4
k=0;
z=0;
}
}
z=0;
for(i=0;i<n;i++)
{
if(k==0)
break;
if(c[i]=='.')//判断有几个'.'
{
z++;
continue;
}
}
if(z!=3)
k=0;
sum=0;
for(i=0;i<n;i++)
{
if(k==0)
break;
if(c[i]!='.')
{
sum=sum*10+c[i]-'0';//这个感觉很好用,sum是整型,c[i]是字符型,减去'0'就是减去它的ASCII码就变成了整型相应的数字
//例:sum=0,c[i]='1',sum=c[i]-'0'=49-48=1;
}
if(c[i]=='.'||i==n-1)
{
if(sum>255)//判断是否超过255(ip范围0-255含边界)
k=0;
sum=0;
}
}
if(k==0)
cout<<"NO"<<endl;
else
cout<<"YES"<<endl;
}
return 0;
}
hdu 2206 ip的计算
最新推荐文章于 2021-07-25 00:37:32 发布