【HDOJ】2206 IP的计算

题目很简单,情况有很多种。

 1 #include <stdio.h>
 2 #include <string.h>
 3 
 4 char buf[105];
 5 
 6 int isIPaddr(char buf[]) {
 7     int i, j, k, tmp, len;
 8 
 9     len = strlen(buf);
10     if (len > 15)
11         return 0;
12 
13     j = -1;
14     k = 0;
15     for (i=0; i<len; ++i) {
16         if (buf[i] == '.') {
17             ++k;
18             tmp = i-j;
19             if ( !(tmp==2||tmp==3||tmp==4) )
20                 return 0;
21             j = i;
22         } else if (buf[i]>='0' && buf[i]<='9')
23             /*nop*/;
24         else
25             return 0;
26     }
27     if (k != 3)
28         return 0;
29     tmp = 0;
30     for (i=0; i<len; ++i) {
31         if (buf[i] == '.') {
32             if (tmp<0 || tmp>255)
33                 return 0;
34             tmp = 0;
35         } else {
36             tmp = 10*tmp + buf[i]-'0';
37         }
38     }
39     if (tmp>=0 && tmp<256)
40         return 1;
41     else
42         return 0;
43 }
44 
45 int main() {
46     while (gets(buf) != NULL) {
47         if (isIPaddr(buf))
48             printf("YES\n");
49         else
50             printf("NO\n");
51     }
52 
53     return 0;
54 }

 

posted on 2014-04-22 11:25  Bombe  阅读(146)  评论(0编辑  收藏  举报

导航