#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.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论