这个题比较坑。。。。但是主要是一下三点:
1:IP由四个整数跟3个‘.’组成。
2:整数必须的0-255的范围内,并且整数的位数是1-3。
3:不能有除了数字和‘.'之外的字符出现。
#include<cstdio>
#include<cstring>
#include<cctype>
using namespace std;
int main()
{
//freopen("in.txt","r",stdin);
char str[110];
int p[6],point,num,i,j;
while(fgets(str,110,stdin)!=NULL)
{
memset(p,0,sizeof(p));
p[0]=-1;
point=0;
int flag=0;
for( i=0; str[i]!='\n'; i++)
{
if(str[i]!='.'&&!isdigit(str[i]))
{
flag=1;
printf("NO\n");
break;
}
}
if(flag) continue;
for(i=0; str[i]!='\n'; i++)
{
if(str[i]=='.')
p[++point]=i;
}
if(point!=3)
{
flag=1;
printf("NO\n");
continue;
}
p[4]=i;
for( i=1; i<=4; i++)
{
if(!(p[i]-p[i-1]>1&&p[i]-p[i-1]<=4))
{
flag=1;
printf("NO\n");
break;
}
}
if(flag) continue;
for( i=0; i<4; i++)
{
num=0;
for( j=p[i]+1; j<p[i+1]; j++)
num=num*10+str[j]-'0';
if(num>255)
{
flag=1;
printf("NO\n");
break;
}
}
if(!flag) printf("YES\n");
}
return 0;
}