zzulioj 1874: 蛤玮学计网 (模拟)

1874: 蛤玮学计网

Time Limit: 1 Sec   Memory Limit: 128 MB
Submit: 849   Solved: 117

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是合法的。

//此题就是看看自己的细心程度了,得考虑好多组情况

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<algorithm>
#include<iostream>
using namespace std;
char s[110];
int main()
{
	int t,i,k,l;
	scanf("%d",&t);
	while(t--)
	{
		scanf("%s",s);
		l=strlen(s);
		int flag=0,cnt=0,d=0,n;//cnt表示数的个数,d表示点的个数 
		for(i=0;i<l;)
		{
			if(s[i]=='.')
			{
				d++;i++;
				continue;
			}
			if(s[i]<'0'||s[i]>'9')
			{
				flag=1;
				break;
			}
			else
			{
				n=0;k=0;
				while(isdigit(s[i]))
					n=n*10+(s[i++]-'0'),k++;
				cnt++;
				if(k>3||n>255)//如果某个数的位数大于3或者数的值大于255,则不符合题意 
				{
					flag=1;
					break;
				}
			}
		}
		if(cnt!=4||flag||d>3)//如果数的个数不为4,出现字母,或者点的个数大于3,则不符合要求 
			printf("No\n");
		else
			printf("Yes\n");
	}
	return 0;
}


 

你可能感兴趣的:(zzulioj 1874: 蛤玮学计网 (模拟))