版权声明:本人小白,有错误之处恳请指出,感激不尽;欢迎转载 https://blog.csdn.net/stone_fall/article/details/88638563
时间限制 1000 ms 内存限制 65536 KB
题目描述
我们都学过计算机网络,了解IPV4地址的点分十进制表示法。
你的任务很简单:判断一个字符串是否是一个合法的点分十进制表示的IPV4地址。
最低的IP地址是0.0.0.0,最高的IP地址是255.255.255.255。
PS :方便起见,认为形似00.00.00.00的IP地址也是合法的。
输入格式
第一行是一个整数T,代表输入还剩下T行
以下的T行,每行都是一个字符串(不含空白字符)。字符串的长度保证不超过15,不小于1.
输出格式
对于每个字符串,输出一行。
如果它是一个合法的IPV4地址,输出Yes。
否则,输出No。
输入样例
3
59.64.130.18
f.a.t.e
1.23.45.678
输出样例
Yes
No
No
AC代码来源
https://blog.csdn.net/birdstorm_s/article/details/21036929
确实不知道怎么处理非法输入等问题。这里学到了。
#define MAXN 20
int main()
{
int t, a, b, c, d;
char s[MAXN], k;
scanf("%d",&t);
while(t--){
scanf("%s",s); k=0;
if(sscanf(s,"%d.%d.%d.%d%c",&a,&b,&c,&d,&k)==4){
if (k==0 && 0<=a && a<=255 && 0<=b && b<=255 && 0<=c && c<=255 && 0<=d && d<=255) puts("Yes");
else puts("No");
}
else puts("No");
}
return 0;
}