Problem J: IP地址
作者:互联网
错误:字符串减去48
用完初始化
这个题好麻烦啊,纯纯凑出来的
1 IP地址由四个整数跟三个'.'组成,就是“a.b.c.d”的形式。
2 a,b,c,d四个部分的数字位数都可以是1~3位,其整数值都在0~255之间。
3 不能有除了数字和'.'之外的字符出现。
就是找这三个条件的充要条件
#include<stdio.h>
#include<string.h>
#include<ctype.h>
int toomax(char *x){
if(x[1]*100+x[2]*10+x[3]>255)
return 1;
else return 0;
}
int main(){
int j,i;
int n=0;
char x[5];
char a[101];
int flag=1;
while(gets(a)!=NULL){
flag=1;
int dian=0;
//统计.
for(int z=0;z<=strlen(a);z++){
if(a[z]=='.') dian++;
}
if(strlen(a)>15 || dian!=3){
flag=0;
goto END;
}
for(i=0;i<strlen(a);i++){
if(a[i]!='.' && isdigit(a[i])==0){
flag=0;
goto END;
}
}//排除非法字符,long
n=0;//条件一
for(j=0;j<strlen(a);j++){
if(isdigit(a[j])!=0){
n++;
if(n==4){
flag=0;
goto END;
}
if(n==1)
strcpy(x,"'\0'");
x[n]=a[j]-48;
if(n==3)
if(toomax(x)){
flag=0;
goto END;
}
}//四个数字结束
else if(n!=0 && a[j]=='.'){
n=0;
}//前面不是数字的.不合法
else {
flag=0;
goto END;
}
}
END:
if(flag==1) printf("YES\n");
else printf("NO\n");
}
}
标签:dian,int,char,flag,IP地址,Problem,include,255 来源: https://blog.csdn.net/FYBGC/article/details/121440638