【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 }