IP判断
IP判断
题目描述
在基于Internet的程序中,我们常常需要判断一个IP字符串的合法性。
合法的IP是这样的形式:
A.B.C.D
其中A、B、C、D均为位于[0, 255]中的整数。为了简单起见,我们规定这四个整数中不允许有前导零存在,如001这种情况。
现在,请你来完成这个判断程序吧^_^
合法的IP是这样的形式:
A.B.C.D
其中A、B、C、D均为位于[0, 255]中的整数。为了简单起见,我们规定这四个整数中不允许有前导零存在,如001这种情况。
现在,请你来完成这个判断程序吧^_^
输入
输入由多行组成,每行是一个字符串,输入由“End of file”结束。
字符串长度最大为30,且不含空格和不可见字符
字符串长度最大为30,且不含空格和不可见字符
输出
对于每一个输入,单独输出一行
如果该字符串是合法的IP,输出Y,否则,输出N
如果该字符串是合法的IP,输出Y,否则,输出N
样例输入
1.2.3.4
a.b.c.d
267.43.64.12
12.34.56.bb
210.43.64.129
-123.4.5.6
样例输出
Y
N
N
N
Y
N
AC代码:
1 #include <string> 2 #include <cstdio> 3 #include <cstring> 4 #include <iostream> 5 #include <algorithm> 6 using namespace std; 7 8 int main() 9 { 10 string ip; 11 while (cin>>ip) 12 { 13 if (ip=="End") 14 break; 15 int sum=0;bool flag=1; 16 int len=ip.size(); 17 for (int i=0;i<len;i++) 18 { 19 if (ip[0]=='-') 20 { 21 flag=false; 22 break; 23 } 24 else 25 { 26 if (ip[i]=='.') 27 { 28 if (sum<0 || sum>255) 29 { 30 flag=false; 31 break; 32 } 33 sum=0; 34 } 35 else if (ip[i]-'0'<0 || ip[i]-'0'>9) 36 { 37 flag=false; 38 break; 39 } 40 else 41 sum+=sum*10+(ip[i]-'0'); 42 } 43 if (!flag) 44 break; 45 } 46 if (flag) 47 printf("Y\n"); 48 else 49 printf("N\n"); 50 } 51 return 0; 52 }