题目:
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的整数。
#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 || ‘\0‘ == *p){
if(*p == ‘\0‘){
end_flag = true;
}
if(p <= begin){
return false;
}
*p = ‘\0‘;
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", &n) != EOF && n > 0){
char str[256] = {0};
for(int i = 0; i < n; ++i){
scanf("%s", str);
printf("%s\n", check_valid(str) ? "Yes!" : "No!");
}
}
return 0;
}
原文:http://www.cnblogs.com/moxiaopeng/p/5079099.html