Description
在网络课程上,我学到了很多有关IP的知识。IP全称叫网际协议,有时我们又用IP来指代我们的IP网络地址,现在IPV4下用一个32位无符号整数来表示,一般用点分方式来显示,点将IP地址分成4个部分,每个部分为8位,表示成一个无符号整数(因此不需要用正号出现),如172.16.163.66(每个部分的范围是0-255)是我们非常熟悉的IP地址,一个IP地址串中没有空格出现(因为要表示成一个32位数字)。,
但是粗心的我,常常将IP地址写错,现在需要你用程序来判断。
Input
输入数据第一行是一个正整数N(1 <= N <= 20),表示有N组数据需要判断。
接下来的N行表示N组数据。
Output
对于每组输入数据,判断输入的IP是否正确,如果正确输入YES,否则NO。
Sample Input
3
172.16.290.3
192.168.100.16
223.16.34.2.3
Sample Output
NO
YES
NO
Source
#include<stdio.h>
int main()
{
int N,i,m=0,j;
char a[50];
scanf("%d",&N);
getchar();
for(i=0;i<N;i++)
{
j=0;
m=0;
gets(a);
for(;a[j]!='\0';)
{
if (a[j]=='.')
{
m++;
if(m==4)
{
printf("NO\n");
break;
}
j++;
continue;
}
else if(a[j]>='0'&&a[j]<='9')
{
j++;
if(a[j]>='0'&&a[j]<='9')
{
j++;
if(a[j]>='0'&&a[j]<='9')
{
j++;
if(a[j]!='.')
{
printf("NO\n");
break;
}
else if((a[j-3]-'0')*100+(a[j-2]-'0')*10+(a[j-1]-'0')>255)
{
printf("NO\n");
break;
}
else
{
continue;
}
}
}
}
if(a[j]=='\0')
{
printf("YES\n");
}
}
}
return 0;
}