贺州学院LSY


私信TA

用户名:2371068703

访问量:6169

签 名:

等  级
排  名 441
经  验 4842
参赛次数 1
文章发表 10
年  龄 0
在职情况 学生
学  校 贺州学院
专  业 软件工程

  自我简介:

解题思路:说好的输入"End of file"结束,弄的我交了好几遍都是超出限制。


       其实还是~Z结束。
注意事项:
    学多点函数才是解题的好帮手。

    函数sscanf()和scanf()类似, 只是输入从buffer(缓冲区)中读取。

    例如scanf输入x[100],用sscanf就可以读取x[100]的内容


 #include <stdio.h>

 #include <string.h>

 #define p(n) (n>=0 && n<=255)       //定义带参数的宏

 int main()

 {

      char x[1000];

      int a,b,c,d;

      while(gets(x)!='\0')      //这里面和scanf("%s",x)!=EOF是一个原理。

      {

         if(sscanf(x,"%d.%d.%d.%d",&a,&b,&c,&d)==4)      

                           //判断格式,例如 ?.1.2.3 返回0:  1.?.2.3 返回1;  1.2.3.4 返回4;

          printf("%c\n",(p(a) && p(b) && p(c) && p(d))?'Y':'N');      

                           //条件运算符 ? : 例如 1<2?1:2 条件成立选前面就是1,条件不成立就选后面就是2。  

             

           else 

          printf("%c\n",'N');

      }

 }


 

0.0分

0 人评分

  评论区

我在DVC上测试发现还是有漏洞的,比如:2.2.2.2.
改了下
 #include <stdio.h>
 #include <string.h>
 #define p(n) (n>=0 && n<=255) 
 int fun(char a[])
 {
     char *p=a;
     int i=0;
     while(*p)
     {
     	if(*p=='.')i++;
	    p++;
	 }
	 if(i==3)return 0;
	 return 1;
 }
 int main()
 {
 	    char x[1000];
     	int a,b,c,d;
     	while(scanf("%s",x)!=EOF) 
 	    {   
		    if(fun(x))printf("N\n");
        	else if(sscanf(x,"%d.%d.%d.%d",&a,&b,&c,&d)==4)      
            printf("%c\n",(p(a)&&p(b)&&p(c)&&p(d))?'Y':'N');      
           else printf("N\n");
      }
      return 0; 
 }
2019-02-15 11:38:16
厉害了,学到了
2019-02-08 20:48:35
  • «
  • 1
  • »