帅言


私信TA

用户名:3119333810

访问量:20122

签 名:

等  级
排  名 415
经  验 5010
参赛次数 1
文章发表 65
年  龄 0
在职情况 学生
学  校 河南工业职业技术学院
专  业

  自我简介:

解题思路:

注意事项:不会写的可以复制粘贴

参考代码:

#include<stdio.h>

#include<string.h>


int shuzidepanduan(char a[],int i,int d[])

{

int j,x=0;//j无敌的辅助 ,x为‘.’的下标 

for(j=0;j<i;j++)

{

if(a[j]<'2')//判断字符小于2时候的情况 

{

if(a[j]=='0')

{

    j++;

if((j!=d[x])||(j!=i))

{

if(a[j]>='0'&&a[j]<='9')

return 0;

    else

    {

    if(x<3)

    {

    j=d[x];

    x++;

}

else

    j=i;

}

    }

}

    else if(a[j]>='2')//判断A.B.C.D 这四个整数是否符合[0,255] 

    {

    j++;/*若第一个字符大于等于2,则判断第二个字符*/

    if((j!=d[x]||j!=i)&&(a[j]>='5'))

    {

    j++;//若第二个字符大于等于5,则判断第三个字符 

    if((j!=d[x]||j!=i)&&a[j]>'5')

    return 0;//若第三个字符大于5,说明不符合[0,255],直接结束为 N 

    else if(j==d[x]||j==i)//若第三个字符为‘.’,说明这个整数只有两个字符,必定满足条件,直接跳到下一个整数的开始 

    {

    if(x<3)

    x++;

    continue;

    }

    else//若第三个字符小于等于5,说明这个整数满足条件,判断下一个整数 

    {

    if(x<3)

    {

    j=d[x];

    x++;

    }

    else

    j=i;

}

}

else if(j==d[x]||j==i)//若第二个字符为‘.’,说明这个整数只有两个字符,必定满足条件,直接跳到下一个整数的开始

{

if(x<3)

x++;

continue;

}

else //若第二个字符小于5,永远不会超过255,说明这个整数满足条件,所以不需要判断第三个字符,直接跳到下一个整数 

    {

    if(x<3)

    {

    j=d[x];

    x++;

    }

    else

    j=i;

}

}

else if(j==i)//若把每一个字符都判断过了,没有错误,j==i,直接满足所有条件,完美结束; 

return 1;

}

}


int shuzipanduan(char a[],int i)//因为最大是255(3个字符),所有的超过三个字符的就不符合条件 

{

int d[3],c=0,e[4];//d为每个‘.’所在的位置。 c为每个‘.’的下标,e为A.B.C.D四个整数的字符数量 

for(b=0;b<i;b++)

{

if(a[b]=='.')

{

d[c]=b;

c++;

}

}

e[0]=d[0];

e[1]=d[1]-d[0];

e[2]=d[2]-d[1];

e[3]=(i)-d[2];

if(e[0]>3)

return 0;

else if(e[1]>4)

return 0;

else if(e[2]>4)

return 0;

else if(e[3]>4)

return 0;

else

return shuzidepanduan(a,i,d);//把符合要求的ip进行再一次的筛选 

}


int main()

{

char n[31],Tui[]="End of file";

int i;

congtou:

while(scanf("%s",n)!=EOF)

{

if(strcmp(Tui,n)==0)//输入End of file退出 

goto cuowu;

for(i=0;i<strlen(n);i++)

{

if(n[i]=='.'||(n[i]>='0'&&n[i]<='9')) 

continue;

else//判断是否为其他字符 

{

printf("N\n");

goto congtou;

}

}

shuzipanduan(n,i)?printf("Y\n"):printf("N\n"); 

goto congtou;

}

cuowu:

return 0;

}


 

0.0分

0 人评分

  评论区

  • «
  • »