1874: 蛤玮学计网
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 1124 Solved: 176
Submit Status Web Board
Description
蛤玮最近学习了关于ip的知识,于是他迫不及待的想把新知识传授给她的妹子.蛤玮的妹子随便写下了一个字符串,蛤玮现在要告诉她这个字符串是不是一个合法的ip地址.
为简单考虑,仅考虑ipv4的情况,即合法ip为形同"a1.a2.a3.a4",且0<=ai<=255。
Input
第一行为一个整数T(1<=T<=20),代表数据组数。接下来T行每行一个字符串,其中不包含空格,Tab以及回车,长度不超过50。
Output
若合法,输出"Yes",否则输出"No"(不包含引号)。
Sample Input
2 10.105.240.51 f.a.t.e
Sample Output
Yes No
HINT
我们认为010.105.240.051是合法的。
Source
虽然题目不难,但很考验细心程度(WA了好几遍),,,,有多种情况要考虑字符串中只能存在两种形式 数字和 " ." 数字要大于等于0,小于等于255,并且数字只能有4个,
" ." 只能有三个。
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int main()
{
int t,i,a,b,j,k;
char str[55];
scanf("%d",&t);
while(t--)
{
scanf("%s",str);
int len=strlen(str);
int count=0;
int ans=0;
int flag=0;
for(i=0;i<len;)
{
if(str[i]=='.')
{
ans++;
i++;
}
if(str[i]<'0'||str[i]>'9')
{
flag=1;
break;
}
else
{
a=0;
k=0;
while(str[i]>='0'&&str[i]<='9')
{
a=a*10+(str[i]-'0');
k++;
i++;
}
count++;
if(k>3||a>255)
{
flag=1;
break;
}
}
}
if(count!=4||flag||ans!=3)
printf("No\n");
else
printf("Yes\n");
}
return 0;
}