题目:
http://ac.jobdu.com/problem.php?pid=1203
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:3052
解决:1504
- 题目描述:
-
输入一个ip地址串,判断是否合法。
- 输入:
-
输入的第一行包括一个整数n(1<=n<=500),代表下面会出现的IP地址的个数。
接下来的n行每行有一个IP地址,IP地址的形式为a.b.c.d,其中a、b、c、d都是整数。
- 输出:
-
可能有多组测试数据,对于每组数据,如果IP地址合法则输出"Yes!”,否则输出"No!”。
- 样例输入:
-
2 255.255.255.255 512.12.2.3
- 样例输出:
-
Yes! No!
- 提示:
-
合法的IP地址为:
a、b、c、d都是0-255的整数。
- 答疑:
- 解题遇到问题?分享解题心得?讨论本题请访问:http://t.jobdu.com/thread-7926-1-1.html
- 代码:
#include <cstdio> #include <cstdlib> using namespace std; bool check_valid(char *str){ int count = 0; char *begin = str; bool end_flag = false; for(char *p = str; !end_flag; ++p){ if('.' == *p || ' ' == *p){ if(*p == ' '){ end_flag = true; } if(p <= begin){ return false; } *p = ' '; long n = strtol(begin, &p, 10); if(n > 255 || n < 0){ return false; } begin = p + 1; ++count; if(count > 4){ return false; } } } return count == 4; } int main() { int n = 0; while(scanf("%d ", &n) != EOF && n > 0){ char str[256] = {0}; for(int i = 0; i < n; ++i){ scanf("%s", str); printf("%s ", check_valid(str) ? "Yes!" : "No!"); } } return 0; }