#include<stdio.h>
#include<string.h>
int main()
{ char str[31];
int s,i,j=0;
int st[3];
while(scanf("%s",&str)!=EOF)
{ s=strlen(str);
if(str[0]!='1'&&str[0]!='2')//开头第一个不是1或2,结束
{ printf("N\n");
goto loop;
}
for(i=0;i<s;i++)
{ if((str[i]<48||str[i]>57)&&str[i]!='.')//输入中有任意一个不是点的字符,结束
{
printf("N\n");
goto loop;
}
if(str[i]=='.')
{ st[j]=i;//记下三个点在数组的位置
if(str[st[j]+1]=='0')每个点的下一位以零开头结束
{
printf("N\n");
goto loop;
}
j++;
}
}
if(st[0]>3)第一个点前的部分判断是不是在255间
{
printf("N\n");
goto loop;
}
else if(st[0]==3)
{ if((str[0]*100+str[1]*10+str[2])>255)
{
printf("N\n");
goto loop;
}
}
if(str[st[1]+1]==0||str[st[2]+1]==0)
{
printf("N\n");
goto loop;
}
if((st[1]-st[0]-1)>3)//间距大于三,说明是4位数,同上
{
printf("N\n");
goto loop;
}
else if((st[1]-st[0]-1)==3)
{if((str[st[0]+1]*100+str[st[0]+2]*10+str[st[0]+3])>255)
{
printf("N\n");
goto loop;
}
}
if((st[2]-st[1]-1)>3)同上
{
printf("N\n");
goto loop;
}
else if((st[2]-st[1]-1)==3)
{if((str[st[1]+1]*100+str[st[1]+2]*10+str[st[1]+3])>255)
{
printf("N\n");
goto loop;
}
}
printf("Y\n");
loop: i=0;//做跳转的语句
}
}
0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复