题解 | #合法IP#
合法IP
https://www.nowcoder.com/practice/995b8a548827494699dc38c3e2a54ee9?tpId=37&tqId=21313&rp=1&ru=/exam/oj/ta&qru=/exam/oj/ta&sourceUrl=%2Fexam%2Foj%2Fta%3Fpage%3D2%26tpId%3D37%26type%3D37&difficulty=undefined&judgeStatus=undefined&tags=&title=
#include <stdio.h>
#include <string.h>
int main() {
char str[18]={0};
int ip[4]={0,-1,-1,-1},sig[4]={0}; // sig表示该ip位是否有输入
int flag,tmp;
while (scanf("%s", str) != EOF) {
flag=0;
int j=0;
for(int i=0;i<strlen(str);i++){
if(str[i]=='.'){
j++;
ip[j]=0;
sig[j]=0;
}
else if(str[i]>='0'&&str[i]<='9'){
if(sig[j]==1 && ip[j]==0){
flag=1;
break;
}
ip[j]=ip[j]*10+str[i]-'0';
sig[j]=1;
}
else{
flag=1;
break;
}
}
if(j>3){
flag=1;
}
for(j=0;j<4;j++){
if(ip[j]<0 || ip[j]>255 || sig[j]==0){
flag=1;
break;
}
}
if(flag){
printf("NO\n");
}
else{
printf("YES\n");
}
}
return 0;
}
用例真是各种稀奇古怪的用例都出来了
查看12道真题和解析