C语言 问题 C: IP地址的合法性检查?

题目描述
一个合法的IP地址是由三个点分隔开的4个整数,每个整数的取值范围为:0~255之间。输入IP地址判断IP地址是否合法。
输入
第一行的整数表示有多少组数据。接下来是输入的IP地址。
输出
如果IP地址合法则输出YES,否则输出NO.
样例输入 Copy
3
122.204.218.1
122.257.33.1
25.0.3.12a
样例输出 Copy
YES
NO
NO

第1个回答  2020-05-23
#include <stdio.h>
int isVaildIp(char *ip) {
int dots = 0; /*字符.的个数*/
int setions = 0; /*ip每一部分总和(0-255)*/
if (NULL == ip || *ip == '.') { /*排除输入参数为NULL, 或者一个字符为'.'的字符串*/
return 0;
}
char *p = ip;
while (*p) {
if (*p == '.') {
dots ++;
if (setions >= 0 && setions <= 255) { /*检查ip是否合法*/
setions = 0;
p++;
continue;
}
return 0;
}
else if (*p >= '0' && *p <= '9') {
if (p != ip && *(p - 1) == '0' && *(p - 2) == '.')
return 0;/*判断是不是数字*/
setions = setions * 10 + (*p - '0'); /*求每一段总和*/
}
else
return 0;
p++;
}
if (setions >= 0 && setions <= 255) {
if (dots == 3) {
return 1;
}
}
return 0;
}
int main(void) {
int n;
scanf("%d", &n);
getchar();
while (n--) {
char s[100];
scanf("%s", s);
if (isVaildIp(s))
puts("YES");
else
puts("NO");
}
return 0;
}本回答被提问者采纳
第2个回答  2020-05-23
这个程序只要,这个程序只要使用标准的读入语句,读入四个整数,然后判断每个整数的范围大于等于零,并且小于256就可以了
相似回答