注意:
1.非法字符(包括空格)
如下都是错的 A.145.124.4 192.168.18 123(用scanf输入的话,则接收的是:192.168.18) 2.'.'有且仅有3个,且不能连续出现,也不能首位,末位出现,如下都是错的 123..123.45 .124.45.6 45.134.4. 3.不能连续出现4个非 '.'的字符 如下都是错的 192.168.0123.41 4.分成四段数字,各数字<255。
#include<stdio.h> #include<string.h> char s[110]; int main() { int sl; while(gets(s)) { sl=strlen(s); //printf("%d ",sl); int i,sum=0,sum1=0,sum2=0; for(i=0;i<sl;i++) { if(s[sl-1]=='.'||s[0]=='.')break; if(s[i]>='0'&&s[i]<='9') { sum2=sum2*10+s[i]-'0'; sum1++; } else if(s[i]=='.') { if(s[i+1]=='.')break; sum++; sum1=0; if(sum2>255)break; sum2=0; } else break; if(sum>3||sum1>3||sum2>255)break; } if(i==sl&&sum==3) printf("YES "); else printf("NO "); } return 0; }