心累 , 狗日的想了好多数据 , ......啥也不说了 我去哭一会 . ![](https://images2015.cnblogs.com/blog/829161/201604/829161-20160418143634866-1650632766.png)
![](https://images2015.cnblogs.com/blog/829161/201604/829161-20160418143659835-1071412626.png)
1 #include<stdio.h>
2 #include<string.h>
3 #include<math.h>
4 #include<iostream>
5 #include<limits.h>
6 #include<algorithm>
7 #include<queue>
8 #include<vector>
9 #include<set>
10 #include<stack>
11 #include<string>
12 #include<sstream>
13 #include<map>
14 #include<cctype>
15 using namespace std;
16 // 1 , 三个点
17 // 2 , 判断数字是否在范围内
18 // 3 , 字母的话 不合题意
19 // 4 , 最多三个数
20 int main()
21 {
22 int t;
23 char a[55];
24 scanf("%d",&t);
25 while(t--)
26 {
27 scanf("%s",a);
28 int l=strlen(a),flag=1; //默认 可以
29 int sum=0,count1=0,time=0;
30 for(int i=0;i<l;i++)
31 {
32 if(a[i]=='.')
33 {
34 if(sum<0||sum>255)
35 flag=0;
36 if(time==0||time>3) //判断两个点之间 数字的个数 是否符合要求
37 flag=0;
38 time=sum=0;
39 count1++;
40 continue;
41 }
42 if(!(a[i]>='0'&&a[i]<='9')) //如果不是 0 - 9 的话
43 flag=0; // 出现字母啥都别说了 ....
44 sum=sum*10+a[i]-'0';
45 time++;
46 }
47 if(count1!=3)
48 flag=0;
49 if(flag)
50 printf("Yes
");
51 else
52 printf("No
");
53 }
54 return 0;
55 }